MCP server that gives text-only AI agents image understanding via vision APIs
Strong schema definitions with comprehensive parameter documentation across all 10 tools. All tools have clear, actionable descriptions (100-250 chars). Input schemas are well-structured using Zod with proper type definitions and descriptions. However, output schemas are not formally documented, responses are formatted as markdown text rather than structured JSON. Tool names are descriptive but lack action verbs (analyze_image vs vision_analyze). Error handling is present but generic. No tool annotations (readOnlyHint, destructiveHint) despite all tools being read-only.
Analyze one or more images with a vision model and return plain text. Use for general Q&A when the host model cannot see images. Supports single `image` or multi `images` (image 1, image 2, ...).
Compare two or more images and explain similarities/differences. Use for "compare image 1 and 2", before/after, A/B UI, design variants, or sequential screenshots.
Produce a detailed textual description of one or more images so a text-only model can reason about them. Prefer for general scene/UI understanding and multi-upload context dumps.
Explain diagrams (architecture, flowchart, sequence, ERD, UML, mind map, whiteboard, etc.). Identifies nodes/components, edges/relationships, direction of flow, and groupings.
Extract structured information from image(s) and return valid JSON. Use null for unknown fields; do not invent values.
Output schemas not formally documented. All tools return markdown-formatted text rather than structured JSON. LLMs cannot parse response fields or chain downstream tool calls reliably.
Tool names lack action verbs. 'analyze_image' and 'describe_image' are descriptive but 'vision_analyze' or 'vision_describe' would be clearer. Naming convention inconsistency with production baselines (90% of A+ tools start with action verbs).
No tool annotations despite all tools being read-only. Missing readOnlyHint declarations in tool registration. Agents cannot determine which tools are safe to call without side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 71 | 2026-07-28+ | v2 |
Extract readable text from one or more images (screenshots, documents, diagrams, error dialogs). Multi-image calls return a section per image label.
Read charts, graphs, plots, tables, or dashboards. Identifies chart type, axes, units, legends, series, and extracts key values, trends, outliers, and comparisons.
Answer a question that refers to specific uploads by label ("refer image 1 and 2", "only the second screenshot", "both figures"). Grounds every claim in image labels.
Inspect UI screenshot(s) for layout, components, states, accessibility, and usability issues. Extracts visible labels, copy, and error messages.
Report the current vision provider configuration and status.
Error handling returns generic text responses without recovery guidance. 'Vision analyze_image failed: <message>' does not tell the LLM what to do next or whether the error is retryable.
extract_from_image accepts optional 'schema' parameter as string, not as structured JSON Schema object. LLMs may pass invalid schema syntax; validation happens server-side with unclear error messages.