Skip to main content
Glama

🛠️ MCP Linux Tools – Complete Tool Reference for LLMs

📖 Description

MCP Linux Tools is an MCP (Model Context Protocol) server that exposes a secure, whitelisted set of operations on a Linux server. It allows AI assistants (such as VS Code, Claude or Cursor) to perform controlled system administration tasks like reading logs, checking service status, managing cron jobs, running WP-CLI commands, and executing sandboxed Python code—all through a uniform API with strict security constraints.

The server runs as a systemd service and communicates over HTTP. All operations are restricted by configurable whitelists (directories, services, WordPress sites). Tools return a uniform response contract {success, data, error, meta}.

Related MCP server: ssh-mcp-server

✨ Features

  • 🔍 Metadata & Discovery – Server info, service whitelist, WordPress allowed sites

  • 📂 File Operations – Read files, list directories, head/tail logs (whitelisted paths only)

  • ⚙️ System Services – Check status, reload or restart whitelisted services

  • 🐍 Python Sandbox – Execute Python code (no network, 8s timeout)

  • ⏰ Cron Management – List, add, remove, enable/disable cron jobs

  • 🌐 WordPress – WP-CLI runner, cache flush, plugin/user listing, log tailing

  • 🗄️ Database – Read-only MySQL queries (dangerous queries blocked)

  • 📡 Network – Ping for connectivity testing

  • 📌 Git – Safe Git commands (no push/force)

📦 Installation

Requirements

  • Python 3.13 or higher

  • Root access (for systemctl and crontab)

  • Linux system with systemd

Step 1: Clone Repository

# Clone the MCP server repository to /opt/mcp
sudo mkdir -p /opt
cd /opt
sudo git clone https://github.com/gerard-kanters/mcp-linux-tools.git mcp
cd /opt/mcp

Step 2: Create Python Virtual Environment

# Create virtual environment
sudo python3.13 -m venv /opt/mcp/venv

# Install dependencies
sudo /opt/mcp/venv/bin/pip install --upgrade pip
sudo /opt/mcp/venv/bin/pip install -r requirements.txt --break-system-packages

Step 3: Configure

Edit config.json and adjust the settings for your server:

  • Set server_type (development or production)

  • Set server_ip to your server's IP address

  • Set server_name to identify this server

  • Configure directory whitelists, service whitelist, and other settings as needed

See the Configuration section below for detailed information about all configuration options.

Step 4: Create Sandbox Directory

sudo mkdir -p /opt/mcp/sandbox
sudo chown root:root /opt/mcp/sandbox
sudo chmod 755 /opt/mcp/sandbox

Step 5: Install Systemd Service

Create a service file: /etc/systemd/system/mcp-linux-tools.service

[Unit]
Description=MCP Linux Tools Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/mcp
ExecStart=/opt/mcp/venv/bin/python /opt/mcp/server.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

# Security settings
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/log /opt/mcp/sandbox

[Install]
WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable mcp-linux-tools.service
sudo systemctl start mcp-linux-tools.service
sudo systemctl status mcp-linux-tools.service

Step 6: Cursor MCP Configuration

Add to your Cursor MCP configuration (usually ~/.cursor/mcp.json or in Cursor settings):

{
  "mcpServers": {
    "linux-tools": {
      "command": "curl",
      "args": [
        "-X", "POST",
        "http://192.168.1.22:8765/mcp",
        "-H", "Content-Type: application/json",
        "-d", "@-"
      ]
    }
  }
}

Or use direct HTTP transport in Cursor MCP settings with:

  • URL: http://192.168.1.22:8765/mcp

  • Transport: HTTP

Verification

Check if the server is running:

# Check service status
sudo systemctl status mcp-linux-tools.service

# Check logs
sudo journalctl -u mcp-linux-tools.service -f

# Test HTTP endpoint
curl -X POST http://localhost:8765/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Installing Updates

To update the MCP server:

cd /opt/mcp
sudo git pull origin main  # or master, depending on your branch
sudo /opt/mcp/venv/bin/pip install -r requirements.txt --break-system-packages
sudo systemctl restart mcp-linux-tools.service

Important: After an update, check if config.json is still correct. New configuration options may have been added.


🏗️ Architecture

The server follows a modular MCP architecture:

  • server.py – Entrypoint: config loading, MCP setup, tool registration, run/retry/signal handling

  • config.py – Config loading and validation (fail-fast on missing fields)

  • register_tools.py – Central tool registration

  • core/ – Core modules:

    • errors.py – Error codes (DENIED_PATH, INVALID_INPUT, COMMAND_BLOCKED, etc.)

    • models.py – Pydantic models for uniform response contract

    • response.py – ok(), err(), err_denied_* helpers

    • security.py – Allowlist and path validation

    • process.py – Subprocess runner

  • tools/ – Tool modules per domain:

    • discovery.py, filesystem.py, logs.py, systemd.py

    • python_exec.py, wordpress.py, cron_tools.py, ops.py

All tools return a uniform response contract: {success, data, error, meta}.


⚙️ Configuration

All configuration is done via config.json in the root of the MCP server directory (/opt/mcp/config.json).

Configuration Sections

Server Identification

  • server_type: "development" or "production"

  • server_ip: IP address of the server

  • server_name: Name for the MCP server

Server Listen (optional)

  • server.host: Bind address (default: "0.0.0.0")

  • server.port: HTTP port (default: 8765)

Logging

  • logging.log_file: Path to log file

Limits

  • limits.max_bytes: Maximum file size for reading (default: 524288 = 512KB)

  • limits.max_items: Maximum items in directory listings (default: 500)

Python Sandbox

  • python.bin: Path to Python interpreter (must be in venv)

  • directories.sandbox_cwd: Working directory for Python sandbox

Directory Whitelists

  • directories.allowed_read: Directories from which files can be read

  • directories.allowed_log: Directories where log files can be read

  • directories.allowed_write: Directories where write operations are allowed

Services

  • services.whitelist: List of service names that can be managed

WordPress

  • wordpress.allowed_sites: Absolute paths to WordPress roots

  • wordpress.bin_candidates: Possible locations for WP-CLI binary

  • wordpress.log_candidates: Possible locations for WordPress debug logs

Important: After changes to config.json, the service must be restarted:

sudo systemctl restart mcp-linux-tools.service

🔒 SECURITY OVERVIEW

LINUX SERVER Tools with limited write operations:

✅ WHAT IS ALLOWED:

  • READ Files (in allowed directories)

  • VIEW Logs (system logs)

  • CHECK Service STATUS and RESTART (only whitelisted services)

  • EXECUTE Python CODE (sandboxed, no network, 8s timeout)

  • MANAGE Cron JOBS (only within MCP-managed section)

❌ WHAT IS NOT ALLOWED:

  • Access to arbitrary directories (strict whitelisting)

  • Services STOP/START/ENABLE (only restart allowed)

  • Sudo/root operations

  • Python with network access

  • Modifying system crontab outside MCP section


📂 ALLOWED DIRECTORIES

Directory whitelists are configured in config.json under directories.

Read Access (allowed_read):

Default: /var/log, /etc, /tmp, /opt/, /root/scripts, /var/www

Log Access (allowed_log):

Default: /var/log, /tmp, /var/www

Write Access (allowed_write):

Default: /var/www, /opt/

Note: All directory paths are configurable via config.json. Changes require a service restart.


🛠️ ALLOWED SERVICES (SERVICE_WHITELIST)

The service whitelist is configured in config.json under services.whitelist. Only services in this list can be checked or restarted.

Default whitelist (as configured in config.json):

  • apache2 - Apache webserver

  • php8.4-fpm - PHP FastCGI Process Manager

  • postfix - Mail server

  • opendkim - DomainKeys email authentication

  • sshd - SSH daemon

  • docker - Container runtime

  • memcached - Memory cache daemon

  • postgresql - PostgreSQL database server

  • odoo - Odoo ERP system

Note: Service names may vary by distribution. Use get_service_whitelist() to query the active whitelist.


📚 TOOL CATEGORIES

1️⃣ METADATA & DISCOVERY (Read-Only)

  • get_server_info() - Server identification (type, IP, name)

  • get_service_whitelist() - List of manageable services

  • get_wp_allowed_sites() - List of allowed WordPress sites

2️⃣ FILE OPERATIONS

  • list_dir(path, pattern, include_files, include_dirs, max_items) - Directory listing (Read-Only)

  • read_file(path, max_bytes) - Read file (max 512KB, Read-Only)

  • head(path, n) - First N lines (Read-Only)

  • tail(path, n) - Last N lines (for logs, Read-Only)

  • log_search(keywords, path, n) - Search literal keywords in recent log lines (Read-Only)

  • create_directory(path, owner, group, mode, parents) - Create directory ⚠️ (only /var/www and /opt/)

  • chmod_file(path, mode) - Change file permissions ⚠️ (only /var/www and /opt/)

  • chown_path(path, owner, group) - Change owner ⚠️ (only /var/www and /opt/)

3️⃣ SYSTEM SERVICES

  • service_status(name) - Check status (Read-Only)

  • reload_service(name) - Reload service via systemctl reload (preferred action, low impact)

  • restart_service(name, force_restart) - Service modification: default is reload, use force_restart=True for full restart ⚠️ (Live impact!)

4️⃣ PYTHON EXECUTION

  • python_run(code) - Sandboxed Python (no network, 8s timeout)

5️⃣ CRON MANAGEMENT

  • cron_list() - View crontab (Read-Only)

  • cron_add(job_id, schedule, command) - Add job ⚠️ (Live impact!)

  • cron_remove(job_id) - Remove job ⚠️ (Live impact!)

  • cron_enable(job_id, enabled) - Enable/disable job ⚠️ (Live impact!)

  • cron_next_runs(schedule, n) - Validate schedule (Read-Only)

6️⃣ WORDPRESS OPERATIONS

  • wp_cli(site_path, args, as_www_data) - WP-CLI runner for allowed sites

  • wp_cache_flush(site_path, as_www_data) - WordPress cache flush

  • wp_plugin_list(site_path, as_www_data) - List all plugins (JSON)

  • wp_user_list(site_path, as_www_data) - List all users (JSON)

  • log_pick_path() - Find WordPress debug log path

7️⃣ DATABASE OPERATIONS

  • mysql_query(query, database) - Execute MySQL query (Read-Only, dangerous queries blocked)

8️⃣ NETWORK OPERATIONS

  • ping_host(host, count) - Test network connectivity (Read-Only)

9️⃣ GIT OPERATIONS

  • git_command(path, command) - Execute Git commands (only safe commands, no push/force)

🔟 SYSTEM COMMANDS

  • execute_shell_command(command, user) - Execute shell command ⚠️ (Live impact!)


💡 USAGE EXAMPLES

Server Info:

{"tool": "get_server_info", "args": {}}

Service Whitelist:

{"tool": "get_service_whitelist", "args": {}}

Service Status:

{"tool": "service_status", "args": {
  "name": "nginx"
}}

Restart Service:

{"tool": "restart_service", "args": {
  "name": "mysql"
}}

View Log File:

{"tool": "tail", "args": {
  "path": "/var/log/nginx/error.log",
  "n": 100
}}

Execute Python:

{"tool": "python_run", "args": {
  "code": "import sys; print(sys.version)"
}}

WordPress Cache Flush:

{"tool": "wp_cache_flush", "args": {
  "site_path": "/var/www/netcare.nl"
}}

WordPress Plugin List:

{"tool": "wp_plugin_list", "args": {
  "site_path": "/var/www/netcare.nl"
}}

MySQL Query:

{"tool": "mysql_query", "args": {
  "query": "SHOW DATABASES;",
  "database": ""
}}

Network Ping:

{"tool": "ping_host", "args": {
  "host": "8.8.8.8",
  "count": 4
}}

Git Status:

{"tool": "git_command", "args": {
  "path": "/var/www/example",
  "command": "status"
}}

Add Cron Job:

{"tool": "cron_add", "args": {
  "job_id": "backup_daily",
  "schedule": "0 3 * * *",
  "command": "/usr/bin/backup.sh"
}}

⚠️ IMPORTANT NOTES FOR LLMs

  1. Read-Only Default: Most tools are read-only. Write operations are limited to:

    • reload_service() / restart_service() - Service reload/restart

    • cron_add/remove/enable() - Cron modifications

    • create_directory() - Create directory (only /var/www and /opt/)

    • chmod_file() - Change file permissions (only /var/www and /opt/)

    • chown_path() - Change owner (only /var/www and /opt/)

    • execute_shell_command() - Shell commands (use with caution!)

  2. Whitelisting: Everything is whitelisted. Tools return "Denied" if you work outside the whitelist.

  3. Service Names: Different distributions use different service names. For example:

    • DNS: systemd-resolved, bind9, or named

    • DHCP: isc-dhcp-server or dhcpd

    • MySQL: mysql, mariadb, or mysqld

    • SMB: smbd or samba

  4. Security First:

    • No blind rm -rf possible

    • No arbitrary file writes

    • Python is sandboxed

    • Cron commands must use absolute paths

  5. Error Handling – Uniform response contract {success, data, error, meta}:

    • success=true: data contains result, error is null

    • success=false: error contains {code, message, hint}, data is null

    • Error codes: DENIED_PATH, DENIED_SERVICE, DENIED_SITE, INVALID_INPUT, COMMAND_BLOCKED, NOT_FOUND, TIMEOUT, etc.

    • meta: server_type, server_ip, server_name

  6. Return Types:

    • Strings for simple output

    • Dicts for structured data (Python, MySQL, etc.)

    • Lists for directories and cron schedules


🎯 BEST PRACTICES

  1. Server identification: Use get_server_info() to verify which server you're working on

  2. Check whitelists first: Call get_service_whitelist() before managing services

  3. Read-only first: Check status/logs before restarting services

  4. Validate cron schedules: Use cron_next_runs() to validate schedules

  5. Service names: Check which service name is used on the system

  6. Error handling: Always check for "Denied" or {"error": ...} in responses

  7. Log locations: Use list_dir() to explore log directories before reading logs

  8. Config changes: Always restart the service after changes to config.json


📊 TESTED & VERIFIED

All tools have been tested and work correctly: ✅ Service status and restart functionality ✅ Log file reading ✅ Python 3.13 execution (sandboxed) ✅ Cron schedule validation ✅ File operations (read-only) ✅ Directory listing

Last Updated: 2026-03-03 Server: Linux (generic) Environment: Production/Development Configuration: Via config.json (no hardcoded values) Architecture: Modular (server.py entrypoint, core/, tools/)

Available Tools

29 tools
chmod_fileA

Wijzig de Unix-permissiemodus van een bestaand toegestaan pad.

path moet bestaan en onder allowed_write_dirs vallen. mode moet een octale tekenreeks van drie of vier cijfers zijn, bijvoorbeeld 755 of 0755. Deze tool muteert bestandssysteemmetadata via chmod, maar wijzigt de bestandsinhoud niet.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
pathYes

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 are provided, so the description carries the full burden. It explicitly states that the tool mutates filesystem metadata via chmod but does not change file content. This is helpful, but it does not disclose required permissions or potential side effects like loss of access.

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 with no wasted words. The first sentence gives the primary purpose, and the second provides usage constraints. Information is front-loaded and easily digestible.

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, the description covers all necessary aspects: input requirements (path, mode format, constraints), and behavioral impact (metadata change, no content change). An output schema exists but is not described, which is acceptable for a mutation tool.

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 0%, meaning parameters have no description. The description compensates excellently by explaining that path must exist and be under allowed directories, and that mode must be a three or four digit octal string with examples. This adds essential meaning beyond the bare 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 changes Unix permission mode of an existing allowed path. It uses a specific verb (wijzig/modify) and resource (permissiemodus/file permissions), distinguishing it from sibling tools like chown_path which change owner.

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 constraints: path must exist and be under allowed_write_dirs, mode must be octal string (e.g., 755). It does not, however, explicitly mention when not to use this tool or direct to alternatives like chown_path for ownership changes.

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

chown_pathA

Wijzig eigenaar en groep van een bestaand toegestaan pad.

path moet bestaan en onder allowed_write_dirs vallen. owner en group moeten bestaande lokale namen zijn. Deze tool muteert bestandssysteemmetadata via chown; onbekende gebruikers of groepen en ontbrekende permissies leveren een fout op.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
groupYes
ownerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 discloses that the tool mutates filesystem metadata via chown and reports error conditions. It could be more detailed about side effects (e.g., symlink behavior) but overall it provides adequate transparency for a mutation 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?

Description is concise: two sentences plus a bullet-like note. Front-loaded with the main action. No redundant 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?

Tool has low complexity (3 params), and output schema exists (not shown). Description covers prerequisites and error conditions. It is complete enough for a simple mutation tool.

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 no descriptions for parameters (0% coverage). The description adds meaning by specifying that path must exist and be under allowed_write_dirs, and owner and group must be existing local names, 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?

Description clearly states the tool changes owner and group of a path, using specific verb 'wijzig' and resource 'eigenaar en groep van een bestaand toegestaan pad'. It distinguishes from sibling tools like chmod_file which deals with permissions, not ownership.

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?

Description specifies prerequisites: path must exist and be under allowed_write_dirs, owner and group must be existing local names. It also mentions error conditions for unknown users or missing permissions. However, it does not explicitly state when to avoid using this tool or mention alternatives.

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

create_directoryA

Maak een nieuwe directory en stel eigenaar, groep en Unix-modus in.

Deze tool wijzigt het bestandssysteem. path mag nog niet bestaan en de bovenliggende directory moet onder allowed_write_dirs vallen. owner en group zijn bestaande lokale namen (standaard root); mode is een octale tekenreeks zoals 755 of 0755. Met parents=True worden ontbrekende bovenliggende directories aangemaakt; eigenaar, groep en de opgegeven modus worden alleen expliciet op de doel-directory toegepast. De uitvoerende service moet daarvoor voldoende permissies hebben. Succes retourneert "ok" via {success, data, error, meta}; bestaande paden, onbekende accounts, ongeldige modi, geweigerde paden en ontbrekende permissies leveren een foutresponse op. Gebruik deze tool niet om een bestaande directory of bestandsinhoud te wijzigen.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo755
pathYes
groupNoroot
ownerNoroot
parentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Fully discloses filesystem modification, parameter constraints (valid local names for owner/group, octal mode), permission requirements, and both success and error response formats. With no annotations, the description carries the full burden and meets it excellently.

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 a clear one-liner followed by explanatory paragraphs. Some redundancy around permission mention, but overall efficient and 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?

Covers all aspects: purpose, parameter details, prerequisites, restrictions, error cases, and return format. The output schema exists, so return value explanation is adequate.

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?

All five parameters are explained in context beyond the schema, which has 0% coverage. The description clarifies defaults, allowed values, constraints (e.g., path must not exist), and behavior of parents. Adds significant value.

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 a new directory with owner, group, and mode settings. It explicitly contrasts with modifying existing directories, distinguishing it from sibling tools like chmod_file or chown_path.

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 clear conditions for use (path must not exist, parent under allowed_write_dirs) and warns against using it for modifications. However, it does not explicitly point to alternative tools for other tasks, though the context is sufficient.

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

cron_addA

Voeg een root-cronjob toe of vervang die binnen de MCP-beheerde sectie.

job_id identificeert de job en accepteert alleen letters, cijfers, punt, underscore en koppelteken. schedule moet exact vijf cronvelden bevatten. Het eerste woord van command moet een absoluut pad zijn. Deze tool herschrijft de root-crontab, maar behoudt regels buiten # --- BEGIN/END MCP MANAGED ---; een bestaand job_id wordt vervangen.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
commandYes
scheduleYes

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 carries the full burden. It discloses that the tool rewrites the root crontab, preserves lines outside the MCP-managed section, and replaces an existing job_id. This is good but could mention if there are side effects like overwriting other managed jobs.

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 clear and front-loaded with the purpose. It is concise but covers necessary constraints. Slightly verbose but 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 presence of an output schema, the description adequately covers input constraints and behavioral traits. It is fairly complete for a tool that adds cron jobs, though it could mention the response or error conditions.

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 0%, so the description must compensate. It explains that job_id accepts only letters, digits, dots, underscores, and hyphens; schedule must have exactly five cron fields; and command's first word must be an absolute path. This adds significant meaning beyond the schema's type '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 it adds or replaces a root cronjob within the MCP-managed section, using a specific verb ('add or replace') and resource ('root cronjob'). It distinguishes from siblings like cron_remove (removes) and cron_list (lists).

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 provides constraints on job_id format, schedule format, and command path, which imply proper usage. However, it does not explicitly state when to use this tool versus alternatives (e.g., cron_remove) or when not to use it.

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

cron_enableA

Schakel een MCP-beheerde root-cronjob in of uit.

job_id selecteert een bestaande job in de MCP-sectie. Met enabled=True wordt een uitgeschakelde cronregel actief; met False wordt de regel met # gecommentarieerd. De tool herschrijft de root-crontab, behoudt regels buiten de MCP-sectie en doet inhoudelijk niets wanneer het opgegeven ID niet bestaat.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
enabledYes

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 carries full burden. It discloses that the tool rewrites the root crontab, preserves lines outside the MCP section, comments out the line when disabled, and does nothing for nonexistent IDs. This provides good behavioral context beyond the basic mutation.

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, covering purpose, parameters, side effects, and edge case in a single paragraph. It could be slightly more front-loaded, but every sentence adds value.

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 no annotations and 2 required parameters, the description is thorough. It explains the tool's impact (rewriting crontab), safety (does nothing for missing ID), and behavior (preserving non-MCP lines). An output schema is present but not needed for completeness.

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 0%, so description must compensate. It fully explains job_id selects an existing job and enabled toggles activation, including the mechanism (commenting with '# '). This adds substantial meaning beyond the schema's type-only definitions.

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 enables or disables an MCP-managed root cronjob. It specifies the verb and resource, but does not explicitly differentiate from siblings like cron_add or cron_remove, though the purpose is distinguishable.

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 explains how to use the parameters (job_id selects existing job, enabled=True/False). It notes that the tool does nothing if the ID doesn't exist, providing some guidance. However, it does not explicitly state when to use this tool over alternatives or provide when-not scenarios.

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

cron_listA

Lees de volledige crontab van de lokale rootgebruiker.

De tool heeft geen parameters en wijzigt de crontab niet. Zowel handmatig beheerde regels als de sectie tussen de MCP-markeringen worden als onbewerkte tekst teruggegeven; een ontbrekende crontab resulteert in een lege tekenreeks.

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?

Without annotations, the description fully discloses behavior: it does not modify, returns both manual and MCP sections as raw text, and handles missing crontab by returning empty string. This is transparent for a read-only tool, though permission requirements are not mentioned.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action, and every sentence adds critical detail (no parameters, no modification, output format). No unnecessary 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 has no parameters and an output schema (as indicated by context), the description provides complete context: it explains the full output (both sections, empty for missing crontab) and confirms read-only nature. No gaps for effective usage.

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, and the description explicitly states this. Since schema coverage is 100% (trivially), the description adds value by confirming absence of parameters and explaining the tool's input independence.

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 the full crontab' (verb 'Lees' is read), specifying the resource (crontab of local root user). It distinguishes from sibling modification tools like cron_add and cron_remove by implying read-only action.

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 no parameters and no modification, which guides when to use (reading crontab). However, it does not explicitly mention alternatives for specific tasks like checking next runs (cron_next_runs) or enabling cron (cron_enable), so the guidance could be more explicit.

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

cron_next_runsA

Bereken toekomstige lokale uitvoertijden voor een cronschema.

schedule moet exact vijf geldige cronvelden bevatten. n bepaalt het aantal resultaten en wordt begrensd tot 1–20. De berekening start op het huidige servertijdstip, gebruikt de lokale tijdzone en wijzigt geen crontab. De tool vereist dat de dependency croniter beschikbaar is.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
scheduleYes

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 the full burden. It discloses important behaviors: uses server time, local timezone, does not modify crontab, requires dependency 'croniter', and bounds parameter `n` to 1-20. It does not cover error handling for invalid schedules, but the key behavioral traits are well covered.

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

Conciseness5/5

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

The description is a short, focused paragraph with each sentence adding value. It front-loads the purpose, then concisely explains constraints and behaviors. 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 presence of an output schema (context signal), the description does not need to explain return values. It adequately covers input semantics, behavioral constraints, and dependencies. The tool's purpose is fully captured for correct invocation.

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 0%, so the description must compensate. It explains that `schedule` must contain exactly five valid cron fields and `n` determines the number of results (bounded 1-20). This adds significant meaning beyond the schema's type and default, though the exact cron format is not fully detailed.

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 ('Bereken' = calculate) and identifies the resource (future execution times for a cron schedule). It clearly distinguishes this tool from siblings like 'cron_list' (which lists existing cron jobs) and 'cron_add' (which adds jobs) by emphasizing that it does not modify anything.

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 states the tool calculates future execution times and explicitly notes it does not modify the crontab, implying it is a read-only analysis tool. While it does not directly say when not to use it or explicitly name alternatives, the context of sibling tools and the nature of the computation provide sufficient guidance.

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

cron_removeA

Verwijder één job uit de MCP-beheerde sectie van de root-crontab.

job_id is de identifier die eerder door cron_add is opgeslagen. De tool herschrijft de root-crontab en verwijdert de bijbehorende MCP-marker en cronregel; regels buiten de MCP-sectie blijven behouden. Een onbekend job_id veroorzaakt geen verwijdering.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

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, so description carries full burden. It discloses that the tool rewrites root-crontab, removes MCP marker and cron rule, leaves other rules intact, and does nothing for unknown job_id. This covers key behaviors.

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 short, sentences each carrying essential information. Front-loaded with main purpose. No redundant or unnecessary text.

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 and presence of an output schema, the description covers all needed aspects: purpose, usage, parameter explanation, and behavioral details. No 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 coverage is 0%, but description adds crucial meaning: job_id is the identifier saved by cron_add. This goes beyond the schema's bare type definition. Provides origin and safety note.

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

Purpose5/5

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

Description clearly states the action (verwijder/remove), resource (één job uit MCP-beheerde sectie), and distinguishes from sibling tools like cron_add and cron_list. The verb and resource are specific.

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?

Description mentions that job_id comes from cron_add, and that unknown ID causes no removal. This provides context for proper use, though no explicit when-not or alternative tools are given. 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.

execute_shell_commandA

Voer een lokaal programma uit als root of als de opgegeven gebruiker.

command wordt in argumenten opgesplitst en direct gestart, dus pipes, redirects en andere shellsyntaxis worden niet geïnterpreteerd. Met user wordt het programma via sudo -u uitgevoerd; zonder waarde is de uitvoerende gebruiker root. Het commando kan het systeem wijzigen. Voor curl/wget is de werkdirectory /tmp; de timeout is 300 seconden. Stdout, stderr, exitcode en de effectieve gebruiker worden geretourneerd.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNo
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description covers key behaviors: command splitting (no pipes/redirects), sudo -u execution, system modification capability, timeout of 300 seconds, and return values (stdout, stderr, exitcode, user). However, it lacks details on security restrictions or behavior on command failure.

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 highly concise, using a few short sentences and bullet-like dashes. Every sentence adds value: purpose, execution details, user handling, safety warning, and return values. No unnecessary 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?

The description covers inputs, execution behavior, and return values (especially since an output schema exists). It alludes to safety and timeout. However, it does not mention prerequisites, failure modes, or interaction with sibling tools, leaving some 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 coverage is 0%, so the description must compensate. It explains that 'command' is a program string split into arguments (no shell syntax), and 'user' defaults to null (root) and runs via sudo -u. This adds significant meaning beyond the schema 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?

The description clearly states the tool executes a local program as root or a specified user. It uses a specific verb ('uitvoeren') and resource ('lokaal programma'), and distinguishes from sibling tools like python_run, wp_cli, and git_command which target specific runtimes.

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 appropriate use (simple commands without shell syntax) but does not explicitly state when to use this tool versus alternatives like python_run or git_command. No direct comparison or conditions for non-use are provided.

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

get_server_infoA

Geef informatie over deze MCP server instance.

Geeft server type, IP adres en naam terug om duidelijk te identificeren welke server dit is.

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, so description carries full burden. It discloses the returned data (server type, IP, name) and implies a read operation. Does not mention side effects or failure modes, but for a simple info tool this is sufficient.

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

Conciseness5/5

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

Two concise sentences in Dutch, front-loaded with the action. Every sentence provides value with no fluff. Highly efficient.

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?

The description covers the essential information about what the tool returns. An output schema exists (though not provided), so return values are documented structurally. The tool is simple and the description is complete for its purpose.

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. The description adds no parameter info, but none is needed as the input schema is empty.

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 returns server type, IP address, and name to identify the MCP server instance, with a specific verb 'Geef informatie' and resource 'deze MCP server instance'. It uniquely distinguishes from siblings which handle other tasks.

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 usage is implied: use to identify the server. No explicit when-not or alternatives are needed given the tool's uniqueness among siblings. The description is clear enough for an agent to infer usage context.

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

get_service_whitelistA

Lijst van services die deze server mag beheren (status/restart).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

With no annotations provided, the description carries full burden. It only states 'list of services that this server may manage (status/restart)', but does not disclose if the operation is read-only, what the return format is, or any potential side effects.

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

Conciseness5/5

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

A single sentence, front-loaded with the key action, no unnecessary words. Highly concise.

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

Completeness3/5

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

Given no output schema shown and no annotations, the description is minimally adequate. It covers the basic purpose but lacks details on return values or usage 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?

There are no parameters (schema coverage 100% with empty object). The description adds no parameter info, but baseline for 0 parameters 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 that this tool lists services the server can manage (status/restart). It uses a specific verb 'list' and resource 'services', distinguishing it from sibling tools like restart_service or service_status.

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

Usage Guidelines3/5

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

While the description implies usage for viewing manageable services, it lacks explicit guidance on when to use this tool versus alternatives (e.g., service_status for individual service status) and no when-not-to-use conditions.

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

get_wp_allowed_sitesA

Lijst van WordPress roots waarvoor WP-CLI is toegestaan.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 are provided, so the description carries the full burden. It discloses that the tool lists allowed sites (read-only), but does not elaborate on behavior such as whether the list is cached, dynamic, or requires specific permissions. The description is acceptable but minimal.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary information. It is well-structured 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?

Given the tool has no parameters, an output schema is provided, and the description is simple, the description is adequately complete. It conveys the core purpose without missing critical details.

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

Parameters4/5

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

The tool has zero parameters and 100% schema coverage, so the baseline is 4. The description does not need to add parameter information.

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 'List' and identifies the resource 'WordPress roots' with a clear scope 'for which WP-CLI is allowed.' It clearly distinguishes from sibling tools like wp_plugin_list or wp_user_list.

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

Usage Guidelines3/5

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

The description states what the tool does but provides no explicit guidance on when to use it versus alternatives, such as wp_cli or wp_plugin_list. Usage is implied by the tool's purpose.

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

git_commandA

Voer één Git-subcommando uit in een toegestane lokale repository.

path moet onder allowed_write_dirs vallen en een .git-directory bevatten. command bevat alles na git -C <path> en wordt met shell-achtige argumentquoting opgesplitst, zonder shelluitbreiding. Push, force, delete, branch -d en reset --hard worden geblokkeerd; andere muterende Git-commando's kunnen de repository wel wijzigen. De timeout is 30 seconden en stdout, stderr en exitcode worden geretourneerd.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
commandYes

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?

Despite no annotations, the description discloses blocked commands, mutation potential, timeout, and return values. It lacks detail on whether the tool changes working directory or has side effects beyond the repo, but overall provides strong 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?

The description is concise (5 sentences) and front-loaded with purpose. Every sentence adds value (path constraint, command parsing, blocked commands, timeout, return). No unnecessary 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 2 params, no annotations, and the presence of an output schema, the description sufficiently covers constraints, blocked operations, and return values. It is complete for the tool's complexity.

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

Parameters4/5

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

With 0% schema coverage, the description compensates by explaining path constraints (allowed_write_dirs, .git) and command structure (after git -C <path>, shell-like quoting, no expansion). It adds meaning beyond the schema, though an example would improve clarity.

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 executes a Git subcommand in an allowed local repository, distinguishing it from siblings like execute_shell_command. The verb 'uitvoeren' (execute) and resource 'Git-subcommando' are specific and unambiguous.

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

Usage Guidelines4/5

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

The description specifies when to use (Git operations in allowed repos) and provides explicit constraints: path must be under allowed_write_dirs and contain .git, blocked commands are listed, and quoting behavior is described. It could be improved by explicitly contrasting with execute_shell_command for non-Git tasks.

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

list_dirA

Bekijk gefilterde directory-inhoud zonder het bestandssysteem te wijzigen.

path moet een bestaande directory onder allowed_read_dirs zijn. pattern gebruikt pathlib-globsyntaxis (* standaard; gebruik bijvoorbeeld **/* voor recursieve resultaten). Standaard worden alleen bestanden opgenomen; zet include_dirs=True voor directories en include_files=False om bestanden uit te sluiten. max_items gebruikt standaard de geconfigureerde limiet en wordt begrensd tot 1–max_items uit de serverconfiguratie. De tool retourneert per item naam, absoluut pad, type, wijzigingstijd en voor bestanden de grootte; ontoegankelijke items bevatten een eigen foutmelding. Resultaten gebruiken de standaard {success, data, error, meta}-response. Gebruik read_file, head of tail om vervolgens bestandsinhoud te lezen.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
patternNo*
max_itemsNo
include_dirsNo
include_filesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations present, so description fully covers safety (no modifications), behavior (error handling for inaccessible items), return data per item (name, path, type, modification time, size), and response format. This is thorough.

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 clear sections, but slightly verbose (e.g., 'Resultaten gebruiken de standaard...'). Still, every sentence 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 the output schema exists and description explains return fields and response structure, the tool is fully documented. All key behaviors and constraints are covered for an agent to correctly select and invoke it.

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 description coverage is 0%, but description adds meaning for all 5 parameters: path constraints, pattern glob syntax, include_dirs/include_files toggles, max_items bounds. This fully compensates for the schema's lack of 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?

States explicitly 'Bekijk gefilterde directory-inhoud zonder het bestandssysteem te wijzigen' (view filtered directory contents without modifying filesystem). Differentiates from siblings like read_file, head, tail which read file contents.

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?

Specifies prerequisites: path must be an existing directory under allowed_read_dirs. Provides pattern syntax guidance. Implicitly suggests use of read_file, head, tail for subsequent content reading, but lacks explicit when-not-to-use statements for other siblings.

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

log_pick_pathA

Kies het eerste bestaande WordPress-debuglog uit de configuratie.

De kandidaten worden in de volgorde van wp_log_candidates getest. De tool wijzigt niets en retourneert alleen het gevonden pad. Als geen kandidaat een bestaand bestand is, volgt een NOT_FOUND-fout.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It explicitly states the tool is non-destructive and only returns a path, plus describes error handling. This adds behavioral context beyond basic functionality.

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 succinct at two sentences, with the main action upfront. It could be slightly tighter, but the structure is effective.

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 output schema (not provided), the description explains the core behavior, selection order, and error condition. It is complete enough for an agent to use correctly.

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 schema coverage is 100%. The description does not need to add parameter details, and it correctly omits them.

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: selecting the first existing WordPress debug log path from a configuration list. It differentiates from sibling tools like log_tail by focusing on path discovery rather than reading the log.

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 explains the testing order from `wp_log_candidates` and return behavior, but does not explicitly contrast with alternatives. The implied usage is to obtain a path before using other log tools.

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

mysql_queryA

Voer SQL uit met de lokale MySQL-client als databasegebruiker root.

query is de volledige SQL-tekst en mag niet leeg zijn. database kiest optioneel een database; een lege waarde gebruikt de standaard MySQL-context. Queries met de tekst DROP, TRUNCATE, DELETE of ALTER worden geblokkeerd. Andere SQL, inclusief mogelijk muterende statements, wordt niet door deze tool geblokkeerd. De timeout is 30 seconden en stdout van de client wordt teruggegeven.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
databaseNo

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, the description carries full burden. It discloses running as root, blocking destructive keywords, allowing other mutating statements, a 30-second timeout, and returning stdout. It could mention error handling or output format, but overall it is 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 concise (5 sentences), well-structured, and front-loaded with the main purpose. Every sentence adds value without redundancy.

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 output schema exists, the description adequately covers return (stdout). It also addresses security, timeout, and parameter constraints. It could mention multi-statement support or error messages, but it is sufficiently complete for a straightforward tool.

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 0%, so the description fully compensates. It explains that 'query' is the full SQL text and must not be empty, and 'database' optionally selects a database with a default context. This adds meaning beyond the schema 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?

The description clearly states the tool executes SQL using the local MySQL client as root. It specifies the verb 'execute' and resource 'SQL', and provides details about the query and database parameters, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description explains when to use (for running SQL) and lists blocked keywords (DROP, TRUNCATE, DELETE, ALTER), giving clear constraints. No alternative tools are explicitly mentioned, but sibling tools are not similar, so no direct comparison is needed.

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

ping_hostA

Test netwerkbereikbaarheid van een host met ICMP-ping.

host accepteert alleen letters, cijfers, punten en koppeltekens; shell-expressies zijn daardoor niet toegestaan. count wordt begrensd tot 1–10 pakketten. De tool wijzigt het systeem niet, heeft een totale timeout van 60 seconden en retourneert uitvoer, exitcode en successtatus.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavioral traits: non-modifying, 60s timeout, and return of output/exitcode/success. This adds significant transparency beyond the schema.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, no unnecessary words. Efficient and clear.

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 ping tool with an output schema (indicated), the description covers key aspects: purpose, input constraints, safety, timeout, and return values. Minor omission: does not specify whether host is IP or hostname, but overall 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?

Schema has 0% parameter descriptions, so the description compensates by specifying host format restrictions (letters, digits, dots, hyphens) and count limit (1-10). This adds meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the tool tests network reachability via ICMP-ping, which is a specific verb+resource. No sibling tool has similar purpose, so it is well-distinguished.

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 provides constraints on input (host format, count range) but does not explicitly state when to use this tool vs. alternatives or when not to use it. Usage context is implied but not defined.

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

python_runA

Voer een kort Python-fragment uit in de geconfigureerde sandboxdirectory.

code is verplichte Python-broncode en wordt met de geconfigureerde interpreter als python -S -c uitgevoerd. De subprocess krijgt alleen een minimale PATH en PYTHONUNBUFFERED, gebruikt sandbox_cwd als werkdirectory en wordt na 8 seconden beëindigd. De code kan binnen de rechten en isolatie van het MCP-serviceproces side effects veroorzaken. Stdout, stderr, exitcode en successtatus worden geretourneerd.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

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?

Without annotations, the description carries full weight. It details execution environment (minimal PATH, PYTHONUNBUFFERED, sandbox_cwd), timeout (8 seconds), side-effect potential within MCP service process rights, and explicit return fields (stdout, stderr, exitcode, success). This exceeds typical transparency.

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

Conciseness5/5

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

The description is compact, front-loaded with purpose, and each sentence adds essential information (command, environment, timeout, side effects, output). No redundant or missing details.

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 a single required parameter and an assumed output schema, the description provides complete context: input specification, execution behavior, environment constraints, timeout, and output summary. It is self-contained and actionable.

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?

With 0% schema description coverage, the description compensates by stating that `code` is mandatory Python source code executed via `-c`, adding meaning beyond the schema's plain string type. It could further clarify that the code must be a valid Python expression or statement, but the current explanation is sufficient.

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 executes a short Python fragment in a configured sandbox directory using a specific interpreter invocation (`python -S -c`). This verb+resource combination distinguishes it from siblings like `execute_shell_command`, which runs arbitrary shell 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?

The description implies usage for Python code execution but does not explicitly state when to use this tool versus alternatives (e.g., `execute_shell_command`). No exclusion criteria or contextual hints are provided beyond the fact that it runs Python.

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

read_fileA

Lees een tekstbestand onder allowed_read_dirs zonder het te wijzigen.

path moet een bestaand regulier bestand zijn. max_bytes bepaalt hoeveel bytes maximaal worden gelezen; zonder waarde geldt de geconfigureerde max_bytes, en iedere opgegeven waarde wordt begrensd tot 1–die configuratielimiet. Bytes worden als UTF-8 gedecodeerd waarbij ongeldige tekens worden vervangen. Als meer gegevens beschikbaar zijn, eindigt de tekst met [...truncated...]. De {success, data, error, meta}-response bevat de tekst of een fout voor een geweigerd pad, ontbrekend bestand of ontbrekende leespermissie. Gebruik head of tail wanneer alleen regels aan het begin of einde nodig zijn.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
max_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Despite no annotations, the description thoroughly discloses behavior: no modification, file must exist and be regular, max_bytes clamping, UTF-8 decoding with replacement, truncation indicator, and error responses.

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

Conciseness5/5

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

The description is a single paragraph but is well-structured: opening purpose, then constraints, behavior, response format, and finally alternative tools. It is concise yet comprehensive.

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 no annotations and the presence of an output schema, the description covers all necessary context: purpose, file requirements, parameter details, truncation behavior, error handling, and sibling tool distinctions.

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?

Although schema coverage is 0%, the description explains both parameters: path must be an existing regular file, max_bytes has a default and is clamped between 1 and a configured limit. This adds meaningful context 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 reads a text file under allowed directories without modifying it. It distinguishes itself from siblings by indicating when to use head or tail instead.

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?

Explicit guidance is given: 'Use `head` or `tail` when only lines at the beginning or end are needed.' This tells the agent when not to use this tool.

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

reload_serviceA

Herlaad een service via systemctl reload (voorkeursactie).

Gebruik bij voorkeur reload in plaats van restart om impact te beperken. Alleen als reload niet wordt ondersteund of expliciet nodig is, gebruik restart_service.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full burden. It mentions using systemctl reload, implying it is safe and non-destructive, but does not elaborate on other behavioral aspects such as connection handling or logs.

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 that front-load the primary action and usage guidance. No extraneous 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 an output schema exists, return values need not be described. The tool is simple with one parameter; the description covers purpose and usage well. However, a bit more detail on what the reload does (e.g., reloads configuration) 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?

The single parameter 'name' is a string for the service name. The description does not add any additional meaning beyond the schema, but the schema is minimal and obvious. Schema description coverage is 0%, but the parameter is straightforward.

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 'Herlaad een service via systemctl reload' which is a specific verb and resource. It also distinguishes from the sibling 'restart_service' by noting it is the preferred action.

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?

Explicitly states to prefer reload over restart to minimize impact, and specifies the condition for using restart_service when reload is not supported or explicitly needed.

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

restart_serviceA

Herlaad standaard een toegestane systemd-service of herstart die expliciet.

name moet exact in service_whitelist staan; raadpleeg get_service_whitelist voor geldige namen. De MCP-service zelf is geblokkeerd om te voorkomen dat de verbinding wordt verbroken. Met force_restart=False (standaard) voert de tool systemctl reload uit; alleen force_restart=True voert systemctl restart uit, wat de service tijdelijk kan onderbreken en actieve processen kan beëindigen. De uitvoerende service heeft systemd-permissies nodig en de actie heeft een timeout van 30 seconden. De {success, data, error, meta}-response bevat na succes de actie en actuele status, of een fout bij een geweigerde service, systemd-fout of timeout. Gebruik reload_service wanneer uitsluitend een reload gewenst is en service_status wanneer geen wijziging nodig is.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
force_restartNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Describes default reload behavior, implications of force_restart (service interruption, process termination), permissions, timeout, blocked MCP service, and error conditions. No annotations provided, so description fully covers behavioral traits.

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

Conciseness4/5

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

Single paragraph covering all aspects, but slightly dense. Could benefit from slight structuring, but every sentence adds value.

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?

Covers purpose, parameters, behavior, prerequisites, alternatives, response format, and error conditions. No missing elements given the tool's complexity and absence of output schema.

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 has 0% description coverage; description explains name must be in whitelist and force_restart controls reload vs restart, adding critical 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 the tool reloads or restarts a systemd service, with specific verbs and resource. It distinguishes from sibling tools reload_service and service_status.

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

Usage Guidelines5/5

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

Explicitly states when to use (reload vs restart via force_restart), when not to use (prefer reload_service or service_status), and prerequisite (name must be in whitelist, consult get_service_whitelist).

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

service_statusA

Lees de actieve systemd-status van één toegestane service.

name moet exact in service_whitelist staan. De tool voert alleen systemctl is-active uit, wijzigt de service niet en heeft een timeout van 10 seconden. Zowel een actieve status als een niet-actieve systemd-melding wordt als tekst in de standaardresponse teruggegeven.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses that the tool only runs 'systemctl is-active', does not modify the service, has a 10-second timeout, and returns both active and inactive messages as text.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and every sentence adds necessary information without verbosity.

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?

For a simple read-only status check tool with an output schema implied, the description covers purpose, precondition, behavior, timeout, and return format. It is fully complete.

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?

The schema has one parameter ('name') with 0% coverage. The description adds crucial context: the name must exactly be in 'service_whitelist', which is not present 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 it reads the active systemd status of an allowed service using 'systemctl is-active', distinguishing it from sibling tools like 'reload_service' or 'restart_service' which modify services.

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 specifies that 'name' must exactly be in 'service_whitelist', giving clear context for when to use. It does not explicitly list when not to use or alternatives, but the purpose is clear enough.

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

tailA

Lees de laatste n regels van één specifiek logbestand.

path moet een bestaand bestand onder een geconfigureerde allowed_log_dirs-directory zijn. n bepaalt hoeveel regels aan tail -n worden doorgegeven. De tool is alleen-lezen, heeft een timeout van 10 seconden en retourneert de tekst via de standaard {success, data, error, meta}-response.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
pathYes

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?

No annotations provided, so description carries the burden. It declares read-only, 10s timeout, and standard response format. However, it omits details like error handling for non-existent files or behavior with large files.

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?

Three sentences, front-loaded with purpose, no fluff. Every sentence adds value: purpose, constraints, and behavioral notes.

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 an output schema present, the description need not detail return values. It covers purpose, constraints, read-only nature, and timeout. Missing mention of what happens if file doesn't exist or n is invalid, but these are minor for a simple tool.

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 0%, so description compensates well: explains that 'path' must be an existing file under allowed_dirs, and 'n' is the number of lines passed to 'tail -n'. This adds meaningful context beyond the schema's type and default.

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 reads the last n lines of a specific log file. While it distinguishes from siblings like 'head' and 'read_file' by specifying 'logbestand', it does not explicitly differentiate from similar 'log_tail' siblings.

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 like 'log_tail' or 'head'. Only constraints on path and n are given, but no selection criteria.

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

wp_cache_flushA

Wis de WordPress-objectcache van één toegestane site via WP-CLI.

site_path moet in wp_allowed_sites staan en een wp-config.php bevatten. Deze muterende tool voert wp cache flush uit, standaard als www-data; met as_www_data=False als root met --allow-root. De timeout is 60 seconden en stdout, stderr en exitcode worden geretourneerd.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_pathYes
as_www_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses mutating behavior, execution as www-data or root, timeout, and return values.

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?

Concise single paragraph, front-loaded with main action, logically ordered.

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?

Covers purpose, prerequisites, parameters, execution details, and return values; output schema exists for return format.

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 has no parameter descriptions (0% coverage); description adds meaning for site_path (prerequisite) and as_www_data (role switching).

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 'Wis' (clears) and resource 'WordPress-objectcache van één toegestane site', specific and distinct from siblings like wp_cli.

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?

Prerequisites are given (site_path in allowed_sites and contains wp-config.php), but no explicit guidance on when to use this vs alternatives like wp_cli.

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

wp_cliA

Voer opgegeven WP-CLI-argumenten uit voor een toegestane WordPress-site.

site_path moet in wp_allowed_sites staan en wp-config.php bevatten. args wordt met shell-achtige argumentquoting opgesplitst, zonder shelluitbreiding, en kan afhankelijk van het WP-CLI-commando de site wijzigen. Standaard draait het commando als www-data; met as_www_data=False draait het als root met --allow-root. De timeout is 60 seconden; commando, stdout, stderr en exitcode worden geretourneerd.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYes
site_pathYes
as_www_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, description fully discloses constraints (allowed sites, wp-config.php), shell quoting (no expansion), potential site modification, user context (www-data vs root with --allow-root), timeout (60s), and return values (command, stdout, stderr, exit code). No contradictions.

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

Conciseness5/5

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

Description is concise and front-loaded with the main action. Each sentence adds value, covering parameters, behavior, and constraints without unnecessary verbosity.

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?

With an output schema present, description covers all necessary context: prerequisites (site_path constraints), execution behavior (shell quoting, user context, timeout), and result contents. Adequate for the tool complexity.

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 0%, but description adds meaning for all three parameters: site_path (required allowed site), args (shell-like quoting without expansion), as_www_data (default true, if false runs as root with --allow-root).

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

Purpose5/5

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

Description clearly states the tool executes WP-CLI arguments on allowed WordPress sites. It differentiates from sibling tools like wp_cache_flush, wp_plugin_list, and wp_user_list by specifying general WP-CLI command execution.

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 clear prerequisites: site_path must be in wp_allowed_sites and contain wp-config.php. Explains argument quoting behavior and user context options, but does not explicitly state when to use this tool over siblings.

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

wp_plugin_listA

Lees de geïnstalleerde WordPress-plugins van een toegestane site.

site_path moet in wp_allowed_sites staan en wp-config.php bevatten. De tool voert wp plugin list --format=json uit, standaard als www-data; met as_www_data=False als root met --allow-root. De bedoelde operatie is alleen-lezen en heeft een timeout van 60 seconden.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_pathYes
as_www_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description reveals key behaviors: the command executed, default user (www-data) and root option, read-only nature, and 60-second timeout. This covers safety and execution context well, though error handling is not mentioned.

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 efficient: four sentences in Dutch (similar length in English) that front-load the purpose and then detail prerequisites, execution, and behavior. No unnecessary 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?

The tool has an output schema, so return values are not needed. The description covers prerequisites, parameter behavior, and execution context (timeout, user). It is adequately complete for a read-only list tool.

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 0%, so the description compensates by explaining site_path must be in allowed sites and contain wp-config.php, and as_www_data controls user context (www-data vs root). This adds meaning beyond type/optionality.

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 reads installed WordPress plugins of an allowed site (verb 'Lees' + resource 'WordPress-plugins'). It is specific but does not explicitly differentiate from sibling tools like wp_cli which can also run 'wp plugin list'.

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 provides prerequisites (site_path must be in wp_allowed_sites and contain wp-config.php) and states the operation is read-only. However, it lacks explicit guidance on when to use this tool vs. alternatives (e.g., wp_cli for custom plugin commands).

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

wp_user_listA

Lees de WordPress-gebruikers van een toegestane site als JSON.

site_path moet in wp_allowed_sites staan en wp-config.php bevatten. De tool voert wp user list --format=json uit, standaard als www-data; met as_www_data=False als root met --allow-root. De bedoelde operatie is alleen-lezen en heeft een timeout van 60 seconden.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_pathYes
as_www_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description explicitly states the intended operation is read-only and provides a 60-second timeout. It details the underlying command and user execution context (`www-data` vs. root). This fully covers behavioral traits beyond what annotations (none were provided) would disclose.

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 (4 sentences) and front-loaded with the primary purpose. Every sentence provides essential information: output format, prerequisites, execution details, and behavioral notes. No redundant or filler content.

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 (2 parameters, no annotations, output schema exists but not described), the description is complete: it covers purpose, prerequisites, behavior, parameters, and constraints. The presence of an output schema in context reduces the need to detail return values here.

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?

With 0% schema description coverage, the description fully compensates by explaining both parameters: `site_path` must be a valid WordPress site path, and `as_www_data` controls execution as `www-data` (default) or root. This adds meaningful guidance beyond the bare schema type/required flags.

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: reading WordPress users from a specified site and outputting JSON. It specifies the exact command (`wp user list --format=json`) and conditions (`site_path` must be in `wp_allowed_sites` and contain `wp-config.php`). The resource (WordPress users) is distinct from sibling tools like `wp_plugin_list` or `cron_list`, providing implicit differentiation.

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

Usage Guidelines4/5

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

The description explicitly states prerequisites: `site_path` must be in `wp_allowed_sites` and contain `wp-config.php`. It also mentions the default user context (`www-data`) and the option to run as root with `--allow-root`. While it doesn't compare to alternatives, the context is clear and actionable for deciding when to use this tool.

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

Tool Schema Changelog

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

  1. 5 tool updatesv1.0.3
    • Addedlog_search
    • Removedlog_tail
    • Removedlog_tail_ai
    • Removedlog_tail_flow
    • Removedlog_tail_keywords
  2. 32 tool updatesv1.0.0
    • First observedchmod_file
    • First observedchown_path
    • First observedcreate_directory
    • First observedcron_add
    • First observedcron_enable
    • First observedcron_list
    • First observedcron_next_runs
    • First observedcron_remove
    • First observedexecute_shell_command
    • First observedget_server_info
    • First observedget_service_whitelist
    • First observedget_wp_allowed_sites
    • First observedgit_command
    • First observedhead
    • First observedlist_dir
    • First observedlog_pick_path
    • First observedlog_tail
    • First observedlog_tail_ai
    • First observedlog_tail_flow
    • First observedlog_tail_keywords
    • First observedmysql_query
    • First observedping_host
    • First observedpython_run
    • First observedread_file
    • First observedreload_service
    • First observedrestart_service
    • First observedservice_status
    • First observedtail
    • First observedwp_cache_flush
    • First observedwp_cli
    • First observedwp_plugin_list
    • First observedwp_user_list

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have distinct purposes (cron, service, file, WordPress, etc.), but there is some overlap: tail and log_tail are effectively aliases, and the multiple log filter tools (log_tail_ai, log_tail_flow, log_tail_keywords) could confuse an agent due to similar names and functionality.

Naming Consistency5/5

Tool names follow a consistent snake_case pattern with a verb_noun structure (e.g., list_dir, create_directory, restart_service). A few names like head and tail are shorter but still fit a predictable style. No mixing of conventions.

Tool Count3/5

32 tools is on the high side for a single server, covering many subdomains (cron, file, service, WordPress, logs, git, shell, python, database, network). While each tool has its place, the set feels a bit bloated, especially with 5 log-specific tools and 5 cron tools.

Completeness3/5

The server covers a curated set of Linux administration tasks but has notable gaps for a 'linux tools' server: no package management, user/group management, process monitoring, or disk/filesystem utilities. The domain is limited by the allowed directories and service whitelist, so completeness is moderate for its intended scope.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI models to securely control remote Linux servers via SSH for command execution, file operations, and system monitoring, plus browser automation capabilities for web navigation, form interaction, and screenshot capture.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to securely execute remote SSH commands, perform file transfers, and monitor system status through a standardized interface. It features robust security controls including command whitelisting, blacklisting, and credential isolation to prevent unauthorized operations.
    10
    29
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gerard-kanters/mcp-linux-tools'

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