A lightweight Java SDK for building Model Context Protocol servers
15 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. Most tools have 1-2 parameters with minimal descriptions (e.g., 'Path to the file'). No output schemas documented. Error handling returns plain strings rather than structured guidance. Tool names follow verb_noun convention (read_file, write_file, list_dir) which is good, but descriptions are generic and lack context about when to use each tool or what the LLM should expect. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. write_file is destructive but lacks confirmation/dry-run pattern.
Decode Base64 back to text
Encode text to Base64 (max 10MB)
Evaluate a simple arithmetic expression (e.g., '2 + 3 * 4'). Only supports + - * / ( )
Get the current time in a specific timezone
Get the value of an environment variable
Get information about a file or directory
List files and directories in a folder
No output schemas documented. Tools return plain strings (e.g., '✅ Written X bytes') rather than structured JSON. LLMs cannot parse results reliably or chain tools without guessing field names.
Destructive tool (write_file) lacks confirmation/dry-run pattern. No error recovery guidance. Agents cannot safely preview changes before committing.
Parameter descriptions are minimal (e.g., 'Path to the file', 'Text to analyze'). No constraints documented (max file size, allowed characters, format). LLMs cannot validate inputs before calling.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
List all available timezone IDs (optionally filtered by keyword)
Read the contents of a file
Get OS, Java version, and memory information
URL-decode a string
URL-encode a string (max 1MB)
Generate a random UUID (v4)
Count characters, words, and lines in text (max 1MB)
Write text content to a file (overwrites if exists)
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Clients cannot determine which tools are safe to retry or have side effects.
Error responses are unstructured strings with emoji prefixes ('❌ File not found'). No actionable recovery guidance. LLMs cannot determine if errors are retryable or user-fixable.