An MCP server that performs a visual review of UI edit requests
Single tool 'reviewEdit' has a clear verb-noun name and comprehensive description (195 chars, within baseline 34-392 range). Input schema is present with Zod validation and all three parameters have descriptions. However, output schema is not documented, the tool returns text content but LLMs cannot infer the structure of the response (success/failure format, field names for parsed results). Error handling returns generic error messages without recovery guidance. No parameter constraints (enums, ranges) are declared. The tool lacks idempotency documentation and does not guide the LLM on retry behavior after transient failures.
Perform a visual review of a UI edit request. The 'before screenshot' is a screenshot of the page before the edit, and the 'after screenshot' is the screenshot of the page after the edit. You will recieve either a yes or no response, indicating whether the edit visually satisfies the edit request. If no, it will provide a detailed explanation of why the edit does not satisfy the request so you can continue to work on it.
Output schema not documented. Tool returns text content but LLMs cannot infer response structure (e.g., is it 'yes'/'no' followed by explanation, or a JSON object?). Agents cannot reliably parse results for downstream logic.
Error messages lack recovery guidance. 'Error processing screenshots: <message>' tells the LLM nothing about whether to retry, ask the user, or abort. Should categorize errors (retryable vs. user-fixable) and suggest next steps.
No parameter constraints declared. File paths accept any string; no validation that files exist or are valid PNG. editRequest accepts any string with no length or format guidance. Zod schema present but constraints not exposed in descriptions.
Tool description does not state idempotency or side effects. Agents need to know: is this safe to retry? Does calling it twice with the same screenshots produce the same result? No guidance on retry behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
API key passed as command-line argument, not via environment variable or secure injection. While not exposed as a tool parameter (good), the startup pattern is fragile and logs the key in process arguments.