Secure, encoding-aware filesystem tools and durable asynchronous shell/script tasks for MCP
Scripthold provides 25 tools with complete input schemas and descriptions. Naming follows verb_noun conventions (read_text_file, write_whole_file, task_run). Most descriptions are adequate (100-200 chars), explaining what the tool does. However, parameter descriptions are often generic ('Path to file', 'File path to edit') without format constraints, ranges, or validation guidance. Error handling is present but lacks recovery guidance. Tool composition is sound, each tool has a single responsibility. Output schemas are not explicitly documented in the source. The server demonstrates solid fundamentals but lacks the LLM-optimized precision expected of A-grade tools.
Manage file backups with status, list, inspect, restore preview, and restore apply actions
Check for available updates to the scripthold server
Retrieve bounded segments of oversized MCP results retained as compact handles
Detect text encoding of a file using BOM and content analysis
Edit file with preview/apply workflow and backup policy support
Apply a previewed file edit
Generate fingerprints for files with deferred operation support for large path sets
Parameter descriptions lack format constraints and validation guidance. E.g., 'Path to file' does not specify absolute vs relative, allowed characters, or max length. LLMs cannot infer constraints from names alone.
Output schemas are not explicitly documented in source code. Tool descriptions mention what is returned (e.g., 'file metadata') but do not specify field names, types, or structure. LLMs cannot plan downstream calls without knowing response shape.
Error handling lacks recovery guidance. Tools return errors but do not suggest next steps (e.g., 'File not found. Try list_directory() to see available files'). Agents cannot self-correct without explicit guidance.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Get file metadata including size, permissions, and timestamps
Search text files for patterns with deferred operation support for large results
List directories accessible to the MCP server
List directory contents with file metadata
List supported text encodings
Apply patches to package files with preview/apply workflow and backup policy
Read multiple text files with encoding detection
Read text file with encoding detection and BOM handling
Search for files by name with deferred operation support for large result sets
Bounded read-only structural search with project relations and fingerprint-verified task context
Extract source code symbols with bounded read-only outline, digest, find, and fingerprint-bound show
Cancel a durable asynchronous task
Get status and details of a durable asynchronous task with workerOnline, scheduler, and executor liveness disambiguation
List durable asynchronous tasks
Retrieve logs from a durable asynchronous task
Execute a durable asynchronous shell/script task with idempotency key and lock support
Display directory tree structure with deferred operation support for large trees
Write entire file content with encoding and BOM preservation
Deferred operation tools (grep_text_files, tree, search_files, fingerprint_paths) mention deferred_operation in descriptions but do not document when/why the LLM should expect a deferred result vs inline result. Threshold criteria are missing.
Task tools (task_run, task_list, task_get, task_logs, task_cancel) lack documentation of idempotency guarantees and failure modes. task_run accepts idempotencyKey but does not explain deduplication semantics or retry behavior.