Token-efficient vision capability layer for MCP clients (describe / OCR / inspect)
Single tool 'analyze_image' has a well-structured input schema with proper types and enums, and a clear description (95 chars). However, the output schema is not visible in the provided source code, only a reference to 'analyzeImageOutputSchema' exists. Parameter descriptions are present and specific (e.g., 'Analysis mode: describe (summary), ocr (text extraction)...'), meeting baseline expectations. The tool name 'analyze_image' is appropriately verb-noun formatted. No critical security issues detected (API keys injected server-side via config). Error handling returns structured responses with isError flag and actionable messages. Main gap: output schema documentation is not shown in source, preventing full validation against pattern:response-shaper.
Analyze an image using vision capabilities (describe, OCR, or inspect modes)
Output schema not visible in source code. Only a reference to 'analyzeImageOutputSchema' exists; the actual schema definition is not shown. Cannot verify if output documents all fields needed for downstream tool chaining or if it includes pagination/limits.
Tool description (95 chars) is adequate but could be more explicit about when to use each mode. Currently states 'describe (summary), ocr (text extraction), inspect (detailed analysis)' but does not explain token cost trade-offs or when to prefer one mode over another.
The 'image' parameter accepts four kinds (path, url, base64, resource) but the description does not clarify which is preferred, what constraints apply to each (e.g., max URL length, base64 size limits), or error handling if a URL is unreachable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
No documented error recovery guidance. Error responses return 'code: message' format but do not tell the LLM what to do next (e.g., 'Image too large, reduce size and retry' or 'URL unreachable, check network or provide base64 instead').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. The tool is read-only and idempotent, but these hints are not declared in the schema, forcing LLMs to infer safety properties.