Spell and grammar checking server using Model Context Protocol
Scoring was not performed
Output schemas are not documented. The `check_text()` method returns a dict with 'language', 'error_count', 'errors' (list of dicts with 'message', 'context', 'offset', 'length', 'replacements', 'rule_id', 'category'), but LLMs cannot see this structure from the tool definition. Clients must infer output format from trial calls.
Language code parameter lacks constraint documentation. Description says 'Language code (e.g., 'pl-PL', 'en-US', 'auto' for auto-detection)' but does not enumerate valid values, specify format (e.g., must match pattern [a-z]{2}-[A-Z]{2}), or warn that invalid codes will fail silently. LLMs may hallucinate language codes like 'english' or 'pl'.
Error handling lacks recovery guidance. When `check_json_file` fails to read a JSON file (e.g., 'Failed to read JSON file: [Errno 2] No such file or directory'), it returns a generic error dict with no hints on what to do next. Per the recovery-guide pattern, errors should suggest next steps (e.g., 'File not found. Check the file path and try again, or use check_json_values() to pass JSON as a string.').
add_ignored_word modifies state with no confirmation or permission checks. The tool description does not warn that it permanently adds words to the ignore list, and there is no dry-run option, confirmation step, or ability to list/remove words. An agent could accidentally ignore a critical term.
Parameter descriptions for file_path and json_string lack format guidance. No mention of absolute vs relative paths, max file size, max JSON string length, or encoding assumptions. LLMs may pass paths that cannot be resolved or massive files that cause timeouts.
No documentation of what happens when LanguageTool library fails (e.g., network timeout, unsupported language). The server may crash or hang without returning structured errors. Error classification (retryable vs fatal) is missing.
check_json_file and check_json_values return no pagination or result limits. If a JSON file contains 10,000 string values with errors, the response could be massive. No limit capping or cursor-based pagination is documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 13 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |