A collection of educational examples demonstrating agent engineering patterns including single agents, tool-using agents, MCP-style client/server separation, memory systems, multi-agent workflows, agent colonies, evaluation harnesses, RAG, approval graphs, observable agents, prompt injection defense, and cost-aware routing.
This is an educational repository with 8 tools across multiple example implementations. Tools have basic schemas and descriptions, but lack depth in parameter documentation and error handling guidance. Most tools are simple read-only operations with minimal complexity. Naming is generally clear (calculator, word_count, todo_builder, search_knowledge_base, get_user_profile, lookup_mock_evidence), but descriptions are brief (10-120 chars) and several parameters lack descriptions entirely. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. Error handling is minimal, tools raise ToolError but do not guide recovery. Output schemas are implicit in code but not formally documented for the LLM. This is typical of educational examples rather than production-grade tools.
Safely evaluate a simple arithmetic expression.
Return text and its length.
Explain the MCP-style client/server boundary.
Return a demo user profile.
Safe deterministic tool for looking up mock evidence by topic.
Search the local knowledge base for a topic.
Turn messy notes into a structured todo list.
Parameter descriptions missing or incomplete. 'echo' tool has a 'text' parameter with no description. 'explain_server_boundary' has no parameters documented. LLMs cannot infer parameter meaning from names alone.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are marked READ_ONLY in metadata but this is not reflected in schema. LLMs cannot determine retry safety or side-effect scope.
Error handling lacks recovery guidance. ToolError exceptions in calculator and word_count do not suggest next steps. 'Expression is empty or too long' tells the LLM the constraint but not how to recover.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Count words and characters in a piece of text.
Output schemas not formally documented. Tools return dicts (e.g. calculator returns {expression, result}) but LLMs see only implicit structure. No schema documentation for downstream tool chaining.
Generic tool name 'echo' lacks specificity. Does not start with action verb and does not convey intent. Should be 'count_text_length' or 'analyze_text_echo' to clarify purpose.