Educational repository containing sample agent implementations using Google Agent Development Kit (ADK). Includes examples of agent tools, memory management, multi-agent systems, and MCP integration patterns.
This is a teaching repository, not a production MCP server. Tools are defined as Python functions with docstrings, not registered via MCP protocol. Naming is generally good (verb_noun pattern: get_fee, get_exchange_rate, place_shipping, save_userinfo, retrieve_userinfo, google_search, load_memory, preload_memory). Descriptions are present and reasonably detailed (avg ~150 chars), explaining WHAT each tool does. However, input schemas are inferred from function signatures, not explicitly declared as JSON Schema. Parameters lack formal type constraints (no enums, no min/max bounds). Output schemas are not documented, callers must infer structure from docstring examples. Error handling is minimal: tools return status/error_message dicts but provide no recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The codebase demonstrates good pedagogical intent but falls short of production-grade tool definition standards.
Looks up and returns the exchange rate between two currencies.
Looks up the transaction fee percentage for a given payment method. This tool simulates looking up a company's internal fee structure based on the name of the payment method provided by the user.
Built-in tool for searching the web using Google Search. Allows agents to retrieve current information from the internet.
Tool for reactive memory retrieval. Allows agents to search and load relevant memories from long-term memory storage.
Places a shipping order. Requires approval if ordering more than 5 containers. This demonstrates a long-running operation that can pause for human approval.
Tool for proactive memory preloading. Automatically loads relevant memories before agent processing.
No explicit JSON Schema definitions. Input schemas are inferred from Python function signatures, not formally declared. This violates the MCP tool registration contract and prevents clients from validating inputs before calling.
Output schemas not documented. Tools return dicts with status/error_message fields, but the full response structure is not formally specified. LLMs cannot reliably extract fields from undocumented responses.
No parameter constraints (enums, min/max, patterns). E.g., payment method accepts free-form strings; exchange_rate accepts any currency code. LLMs will hallucinate invalid values. Should use enums for known sets (platinum credit card, gold debit card, bank transfer).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Tool to retrieve user name and country from session state.
Tool to record and save user name and country in session state.
Error handling lacks recovery guidance. Tools return {status: error, error_message: ...} but do not suggest next steps. E.g., 'Payment method not found' should suggest 'Try one of: platinum credit card, gold debit card, bank transfer'.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. place_shipping_order is destructive (WRITE risk) but has no annotation to signal this to agents.