MCP server providing Read, Write, Edit, Bash, Glob, and Grep tools
Platter provides 7 tools with complete input schemas and descriptions. Naming is clear and verb-based (read, write, edit, bash, glob, grep, js). Descriptions are adequate (50-150 chars) and explain what each tool does. However, output schemas are not documented, LLMs cannot predict return structure. Error handling is minimal; no recovery guidance or categorization. The 'js' tool is particularly risky: unrestricted code execution with network access and no sandboxing, yet lacks warnings about irreversibility or permission gates. Parameter descriptions are present but lack constraints (e.g., no max file size for read/write, no timeout defaults for bash). Tool composition is reasonable but 'bash' conflates command execution and process management in one tool.
Execute a bash command, or manage a running process. Call in one of two modes — do not mix them: 1. Start a command: pass 'command' (and optional 'timeout'). Omit 'pid' and 'kill'. 2. Manage a running process: pass 'pid' (and optional 'kill'). Omit 'command'. Returns stdout/stderr combined, truncated to last 2000 lines or 50KB. If a timeout is set and the command hasn't finished, partial output is returned with the process pid. Use bash({ pid }) to wait for more output, or bash({ pid, kill: true }) to terminate it.
Edit a file by replacing exact text. The old_text must match exactly (including whitespace). Supports fuzzy matching for minor Unicode/whitespace differences. The match must be unique in the file.
Find files matching a glob pattern. Supports ** for recursive matching. Returns up to 10000 matches.
Search for lines matching a regex pattern in files. Supports recursive search with glob patterns.
Execute JavaScript code in a Node.js vm context. Has unrestricted network access via fetch and is not limited by path, command, or sandbox settings.
Output schemas not documented. LLMs cannot predict return structure for any tool. Descriptions mention truncation (2000 lines, 50KB) but do not specify field names, types, or error response format.
'js' tool lacks security warnings and permission gates. Description says 'unrestricted network access' and 'not limited by sandbox' but does not warn about irreversibility or require confirmation. No mention of what code can/cannot do.
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'file not found, check path with glob()' or 'permission denied, check security config').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Read the contents of a file. Output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files.
Write content to a file. Creates the file if it doesn't exist, overwrites if it does. Automatically creates parent directories.
'bash' tool conflates two concerns: starting a command (command + timeout) and managing a running process (pid + kill). This violates single-responsibility principle and forces LLMs to reason about mode switching.
Parameter descriptions lack constraints. 'path' has no max length or validation rules. 'timeout' has no default or range. 'limit' in read/glob has no bounds. LLMs may pass absurd values (e.g., limit=999999).