A Next.js template for building AI agents with Claude Agent SDK and custom MCP tools
Single tool with adequate schema and clear description, but lacks proper composition patterns and error handling guidance. Tool name does not follow verb_noun convention (should be 'greet_user' or 'send_greeting'). Description is present but generic. Input schema is visible with type definitions and enum constraint, but output schema is not documented. No error handling patterns, no idempotency guarantees, no recovery guidance. This is a template/example tool, not production-grade.
A simple greeting tool that says hello to a given name
Tool name 'hello-world' does not follow verb_noun convention. 'hello-world' is neither action-oriented nor descriptive of what the tool does. Should be named 'greet_user' or 'send_greeting' to clearly signal the action to the LLM.
No output schema documented. The tool description states it 'says hello to a given name' but does not specify the return type, structure, or fields. LLMs cannot plan downstream operations without knowing what fields to extract from the response.
No error handling or recovery guidance. If an unsupported language is passed or the greeting fails, the tool provides no actionable error message or recovery path for the agent.
Tool description is generic and lacks context for when/why to use it. 'A simple greeting tool that says hello to a given name' does not explain when an agent should invoke this tool or what business value it provides in a multi-turn conversation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Parameter 'name' lacks format/constraint documentation. No length limits, allowed characters, or validation hints provided. LLMs may pass invalid names (empty strings, special characters) without guidance.