Vision analysis tool for images using OpenRouter
Single tool 'image_analysis' has a reasonable description (85 chars) and named parameters with type hints, but critical gaps undermine production quality. Input schema is present but parameter descriptions are minimal (15-30 chars each), falling below the 72-char baseline for A+ tools. No documented output schema. Parameter 'project_root' lacks clear guidance on when it's needed. Tool description does not explain what data is returned, prerequisites (API key setup), or error recovery paths. No validation guidance for malformed images or API failures. Naming is verb-noun (acceptable), but the server lacks error handling patterns and per-parameter descriptions needed for reliable LLM interaction.
Analyze an image using OpenRouter vision models
Parameter descriptions are too brief (15-30 chars vs 72-char baseline). 'Image input as a URL, file path, or base64-encoded data' for 'image' is only 70 chars but lacks format examples or constraints. Other params lack any description at all in the visible schema.
Output schema not documented. The tool returns vision model analysis but no schema is visible describing the structure, fields, or data types of the response. LLMs cannot plan downstream actions without knowing what fields to extract.
No error handling or recovery guidance. Tool description does not explain failure modes (invalid image, API rate limit, missing API key, malformed base64). No guidance on retryable vs fatal errors or what the LLM should do if the call fails.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
OpenRouter API key must be injected via environment variable (OPENROUTER_API_KEY), but this dependency is not mentioned in the tool description. LLMs will not know the tool requires prior API key configuration and may retry on 401 failures without understanding the root cause.
Parameter 'project_root' lacks description in the visible schema. Its purpose (resolve relative file paths against this directory) is unclear. The tool description does not explain when or why to use it, creating ambiguity for LLM invocations.
Tool description does not state what the tool returns. A complete description must answer: 'What does it do? When should the LLM call it? What does it return?' Current description only explains the input. LLMs cannot determine downstream utility.
No input validation guidance. The description does not specify maximum image size, supported MIME types (PNG, JPEG, WebP, GIF?), or base64 encoding constraints. Code handles multiple formats internally, but LLMs are not told which are valid.
System prompt parameter has a very long default value embedded in the schema. This bloats the tool definition and is a poor practice, system prompts should be server-side defaults or explicitly set in the tool description, not embedded in schema defaults.