A client for interacting with AWS Bedrock and MCP servers
This server has 3 tools with significant definition quality gaps. Tool names follow verb_noun pattern (getCurrentTime, calculate, storeMemory), which is acceptable. However, descriptions lack depth and actionability. Input schemas are present but incomplete, timezone parameter in getCurrentTime has no 'required' array enforcement, and expression/key/value parameters have minimal type specificity. Critically, NO OUTPUT SCHEMAS are documented anywhere in the code, violating the requirement that 'tools returning lists should document output schema.' The tool descriptions are generic and do not explain WHEN to use each tool vs alternatives, dependencies, or consequences (especially storeMemory, which is stateful). Error handling is minimal, tools throw generic exceptions without recovery guidance. Parameters lack constraints (no regex patterns, ranges, or enums). This is a typical D-tier server with functional but poorly-engineered tool definitions.
Calculate the result of a mathematical expression. Only use this tool when the user explicitly asks for a calculation or arithmetic operation.
Get the current time in the specified timezone
Store a value in memory for later retrieval
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Violates pattern:tool requirement that tools must document return types.
Tool descriptions are generic and lack actionability. getCurrentTime: 'Get the current time in the specified timezone' does not explain when to call it or what format it returns. No context for LLM selection logic.
storeMemory description ('Store a value in memory for later retrieval') does not declare that it modifies state or explain persistence scope/lifetime. LLMs cannot reason about side effects or idempotency.
No input parameter descriptions for 'expression' in calculate tool. What format is accepted? (infix notation, postfix, prefix?) What operators? Constraints on complexity?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 37 | - | v1 |
timezone parameter in getCurrentTime has no 'required' enforcement in schema and lacks format constraints. What timezone strings are valid? (IANA standard assumed but not documented.)
No error handling guidance. Tools throw generic errors; no recovery suggestions. E.g., if timezone is invalid, LLM gets raw error with no hint to call a list_timezones tool or use 'UTC'.
storeMemory has no documented persistence model. Is memory per-session? Per-user? In-process only? How long does it live? Without this, LLMs cannot reliably use it for multi-turn state.