A Model Context Protocol (MCP) server for updating translations in JSON files
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error guidance. Both tools have input schemas visible (Zod-based, converted to JSON Schema), but descriptions are minimal (under 100 chars). Parameter descriptions exist but lack detail on constraints, formats, and error recovery. No output schema documentation. Error handling returns generic messages without actionable guidance for LLM recovery. Tool names follow verb_noun pattern (get-translation, update-translation) which is good, but descriptions do not explain WHEN to use each tool or what distinguishes them.
Gets a translation from the specified language file
Updates a translation in the specified language file
Parameter descriptions lack format constraints and validation rules. 'translationId' description says 'e.g. common.buttons.save' but does not specify allowed characters, max length, or dot-notation requirement. 'language' accepts 'sv', 'en' but no enum constraint or validation guidance.
Tool descriptions are under 100 characters and lack context on WHEN to use each tool, what they return, and prerequisites. 'Gets a translation from the specified language file' does not explain: What if the translation ID is not found? What format is returned? Should I call get-translation before update-translation?
No output schema documented. Callers cannot predict response structure. get-translation returns a string (success or error message), but update-translation also returns a string. LLMs cannot distinguish success from failure or extract structured data for chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Error messages are generic and do not guide LLM recovery. 'Failed to get translation: ...' or 'Translation for X not found' do not suggest next steps. Per pattern:recovery-guide, errors should say 'Try search_translations() with a partial ID' or 'Check that the language code is correct (e.g. sv, en, fr)'.
update-translation is a destructive operation (WRITE risk) but has no confirmation step or dry-run mode. Per pattern:confirmation-request, irreversible operations should support a confirm_before_execute pattern to prevent accidental overwrites.