A reusable serverless project template using hexagonal architecture with MCP (Model Context Protocol) server and client implementations for AWS Lambda
Single tool with minimal definition quality. Tool name 'getAltTextForImage' is verb-noun format and clear, but descriptions are severely lacking. Tool description is only 48 characters and lacks WHEN/WHY context. Parameter descriptions are present but minimal (14 and 47 characters respectively). Input schema exists with Zod validation but parameter types lack depth (both string-based, no enums or format constraints). No output schema documented. No error handling guidance visible. No recovery paths for failures (e.g., when image URL is invalid or generation fails). The implementation shows basic tool registration but falls short of production-grade quality across most rubric dimensions.
Generates alternative text for an image using AI
Tool description is too short (48 chars, baseline 194) and lacks actionable guidance. Does not explain WHEN to use this tool, prerequisites, or what the LLM should expect. Current: 'Generates alternative text for an image using AI', missing context about accessibility use cases, supported image formats, failure modes.
Parameter 'userPrompt' description is only 47 characters and does not explain valid formats, length constraints, or examples of effective prompts. LLM cannot infer guidance structure.
No output schema documented. Tool returns free-text string in response, but LLM needs to know: is alt text guaranteed to be present? What does 'Could not generate alt text.' mean? Should the LLM retry, ask the user, or use a fallback? No guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | 2025-06-18+ | v1 |
No error handling or recovery guidance. Code returns hardcoded fallback 'Could not generate alt text.' but LLM is not told why generation failed (bad image URL? unsupported format? API rate limit?), whether to retry, or what to do next.
Parameter 'imageUrl' description lacks format constraints. Should document: accepted protocols (http/https only?), file size limits, supported image formats (JPEG, PNG, WebP, etc.), any URL length limits.
Tool modifies no state (READ_ONLY confirmed), but description does not explicitly state this is a query-only operation safe to retry. Agents need to know idempotency for planning.
Zod schema uses z.string().optional() for userPrompt, but no enum, pattern, or length constraint documented. LLM cannot infer valid prompt styles.