This server has two OCR tools with basic definitions but significant quality gaps. Both tools have descriptions and parameter schemas, but descriptions are minimal and lack critical context for LLM tool selection. Parameter descriptions are generic. There is no documented output schema, the return type annotation exists in code but is not described in the tool definition. Error handling is absent: the tools return empty lists on failure (silent failure) rather than actionable error messages. No enum constraints, no validation guidance, and no recovery hints. The tool names lack action verbs ('ocr_by_content', 'ocr_by_path'), better names would be 'recognize_text_from_base64' or 'recognize_text_from_file'. The parameter descriptions do not explain format constraints (e.g., what image formats are accepted, what base64 encoding is expected). Overall, the definitions would not enable an LLM to reliably select and invoke these tools without ambiguity.
Perform OCR recognition on base64 encoded image content. Args: base64_data: Base64 encoded image content string Returns: List[TextContent]: List of recognized text content
Perform OCR recognition on an image file. Args: path: Path to the image file Returns: List[TextContent]: List of recognized text content
Tool names lack action verbs. 'ocr_by_content' and 'ocr_by_path' do not follow verb_noun convention (e.g., 'recognize_text_from_base64', 'recognize_text_from_file'). LLMs rely on action verbs to infer intent before reading the description.
Output schema not documented. Tools return List[TextContent] but the tool definition includes no documentation of the structure, fields, or format of TextContent objects. LLMs cannot plan downstream operations without knowing the response shape.
No error handling or recovery guidance. Tools silently return empty lists on invalid input or failure. No distinction between 'image format not supported', 'file not found', 'invalid base64', or 'OCR engine error'. LLMs cannot self-correct or retry intelligently.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Parameter descriptions are generic and lack format constraints. 'Base64 encoded image content string' does not specify accepted image formats (PNG, JPG, GIF, etc.), maximum size, or encoding expectations. 'Path to the image file' does not clarify absolute vs. relative paths or what happens on nonexistent files.
Tool descriptions are below baseline length (34 - 392 chars recommended for A+ tools). Both descriptions are ~160 chars but lack dependency hints (e.g., 'use ocr_by_content if you have base64 image data; use ocr_by_path if you have a file on disk'), prerequisites, or selection guidance between the two similar tools.
No input validation or sanitization. Tools do not validate base64 encoding, file paths (no path traversal checks), or image data before processing. The ocr_by_path tool accepts any file path with no bounds checking.