A LangGraph ReAct agent whose tools are served over the Model Context Protocol (MCP).
Four tools with clear verb-noun naming (add, multiply, search_notes, list_topics) and basic descriptions. All tools have input schemas with typed parameters and descriptions. However, descriptions are minimal (10-60 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit error guidance. No output schemas documented. Parameters lack constraints (e.g., numeric ranges for add/multiply). Tools are READ_ONLY but this is not stated in descriptions. No pagination, no error recovery guidance. Schemas are present but sparse, meets minimum bar but falls short of production quality.
Add two numbers and return the sum.
List the topics available in the built-in knowledge base.
Multiply two numbers and return the product.
Search the built-in knowledge base and return the most relevant note.
Descriptions are too brief (10-60 chars vs. 194-char baseline). 'Add two numbers and return the sum' lacks context on when to use this tool vs. alternatives, prerequisites, or error cases.
No output schemas documented. LLMs cannot plan downstream tool calls or extract fields without knowing the response structure. E.g., search_notes returns a string, but is it guaranteed non-empty? What if no match?
Numeric parameters (a, b in add/multiply) lack constraints. No min/max bounds specified. LLMs could pass absurd values (1e308, negative infinity) that break downstream logic.
No error guidance. If search_notes finds no match, description says 'return the most relevant note' but code returns 'No matching note found.' LLM has no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
list_topics has no parameters but description does not explain what it returns or when to call it. Should state: 'Returns a comma-separated list of available topics. Call this first to discover what knowledge base contains.'