MCP server that exposes a vision tool — forwards images to a custom vision-capable AI endpoint
Single tool with complete schema and reasonable description. Naming is clear (describe_image), but description is verbose (400+ chars, exceeds 200-char LLM-optimized baseline). Parameters are typed and described, but lack constraints (no enum for format, no min/max for file size). Error handling returns error text but lacks recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Output schema is undocumented, LLM must infer response structure.
Pass a local image file to a vision-capable AI and get back a text description. IMPORTANT: The `image` parameter MUST be a local absolute file path on disk. Do NOT pass URLs, base64 strings, or data URIs — always provide the full absolute path to an image file (e.g. "C:\\Users\\photos\\cat.jpg" or "/home/user/images/pic.png"). Supported formats: PNG, JPG, JPEG, GIF, WEBP. Parameters: image (str, required): Local absolute file path to the image. prompt (str, optional): Instruction for the vision model. Defaults to 'Describe this image in detail.' Returns: Text description produced by the vision model.
Description exceeds LLM-optimized length (400+ chars vs 50-200 baseline). Verbose parameter documentation in tool description wastes tokens and buries key intent.
Output schema undocumented. LLM cannot infer response structure (string vs object, fields, types). Must guess whether result is plain text or structured.
No tool annotations (readOnlyHint, idempotentHint). LLM cannot determine if tool is safe to retry or has side effects.
Error handling returns raw exception text ('[vision error] {exc}') without recovery guidance. LLM cannot determine if error is retryable or user-fixable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
No input validation constraints. Supported formats listed in description but not enforced via enum. File size limit (20 MB) not exposed as parameter constraint.