An MCP server providing translation tools (language detection and text translation) for an academic research assistant system that indexes and searches research papers using vector embeddings.
Three tools with inconsistent quality. detect_language and translate_text have basic descriptions and input schemas, but lack parameter descriptions and output schema documentation. search_papers has minimal description ('Search the academic paper vector database for relevant chunks') and no visible implementation details. All tools lack error handling guidance, output structure documentation, and LLM-optimized descriptions. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Parameter descriptions are missing entirely for detect_language and translate_text; search_papers has only query and domain described. No pagination guidance for search_papers despite returning lists.
Detect the language of the given text. Returns the detected language code and whether it is supported.
Search the academic paper vector database for relevant chunks
Translate text between supported languages (en, es, fr, it). Returns the translated text along with source and target language info.
Missing parameter descriptions for detect_language and translate_text. LLMs cannot infer that 'text' means user-provided content vs system text, or that 'source_lang'/'target_lang' must be 2-letter codes.
search_papers description is 56 characters, below the 10 - 1024 character baseline and lacks WHEN to use it, WHAT it returns, or how results are structured. No pagination parameters documented despite top_k suggesting list results.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. detect_language and translate_text return Dict[str, Any] with undocumented fields; search_papers return type is unknown.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
No error handling guidance. translate_text returns {'error': ...} on invalid language, but LLM does not know if this is retryable, user-fixable, or fatal. No recovery suggestions provided.
search_papers domain parameter accepts 'AI', 'Security', 'Other', or empty string, but these are not declared as an enum in the schema. LLMs may hallucinate invalid domain values.