MCP server for Textra translation API (Ja->En)
Single tool with adequate but not exemplary definition. Tool name 'translate_ja_to_en' follows verb_noun convention and is clear. Description is present (227 chars, within 10-1024 range) and explains WHAT the tool does and WHEN to use it. However, the description could be more concise for LLM token efficiency. Input schema is minimal, single 'text' parameter with a string type and basic description ('The Japanese text to translate.'). Parameter description is only 31 chars and lacks guidance on expected format, length constraints, or edge cases (e.g., max text length, handling of mixed Japanese/English input). Output schema is not documented, the function returns a string, but LLMs cannot see what fields they should expect or how to chain subsequent operations. No error recovery guidance provided: when translation fails due to configuration, network, or API errors, the tool returns generic messages like 'Translation failed due to a configuration issue' without actionable next steps (e.g., 'Check server environment variables' or 'Retry with exponential backoff'). Error categorization is implicit in the code (ValueError, HTTPStatusError, RequestError, generic Exception) but not exposed in the tool contract. Tool is READ_ONLY (no state mutation), which is correct. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present in the fastMCP decorator, these should be explicit. Overall, the tool is functional and follows basic patterns, but lacks the depth of description and error guidance expected of production-grade tools.
Translates Japanese text to English using the Textra API. If the user provides instructions or questions in Japanese, use this tool first to translate the text into English before processing it with other tools or functions.
Input parameter description is too brief (31 chars) and lacks format/length constraints. LLMs cannot infer maximum text length, expected encoding, or handling of mixed-script input.
Output schema is not documented. Tool returns a string, but LLMs need explicit schema showing what the returned text represents and any metadata (confidence, translated_text, original_text, etc.).
Error messages lack recovery guidance. Generic 'Translation failed due to a configuration issue' does not tell the LLM what to do next (e.g., 'Check TEXTRA_API_KEY environment variable' or 'Retry after 5 seconds').
No tool annotations (@readOnly, @destructive, @idempotent) present. Tool is read-only but this is not declared in the tool schema, only inferred from Risk field.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 37 | - | v1 |
No input validation or constraint documentation. Tool accepts any string via 'text' parameter; no guidance on max length, character sets, or handling of edge cases (empty string, very long text >10KB, special characters).