A simple expense manager that allows you to add, find, get and count expenses
This server exhibits critical deficiencies across naming, descriptions, schemas, and error handling. Of 7 tools evaluated, 4 lack ANY description text, 3 have trivial or missing parameter documentation, and ALL tools lack output schema documentation. The server mixes two unrelated domains (expense management and calculator) without clear separation. Tool names lack action verbs (e.g., 'add' is ambiguous, does it mean addition or expense entry?). Parameter schemas exist but descriptions are minimal or absent. No evidence of error handling, validation guidance, or recovery strategies. This is a teaching/demo server that would not pass production review.
Add a new expense
Count all expenses
Find all expenses
4 of 7 tools lack ANY description text (find_expenses, count_expenses, add, subtract, multiply, divide). LLMs cannot determine when or why to select a tool without a description. This violates the mandatory requirement in pattern:tool-description.
No output schemas documented for ANY tool. Callers (LLM agents) cannot know what fields to expect in responses, breaking downstream tool composition and forcing agents to guess at field names. This violates pattern:response-shaper.
find_expenses accepts no parameters (empty input schema) and likely returns unlimited results with no pagination. This violates pattern:paginated-result and will exhaust context windows on real data.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | 2026-07-28+ | v2 |
Calculator tools (add, subtract, multiply, divide) use bare imperative names without object nouns. In a server mixing expense and math domains, 'add' conflicts with 'add_expense', causing LLM confusion. Names should follow verb_noun pattern.
divide tool has no error guidance for division by zero, a common, foreseeable failure. Error handling must guide recovery with actionable messages (e.g., 'Cannot divide by zero. Numerator was <num1>; try a different denominator.').
add_expense description is 10 characters ('Add a new expense'), below the 20-character floor and provides no context on when to use it. Per hard-cap rule, description score cannot exceed 20.
Server mixes two unrelated domains (expense tracking and arithmetic) without clear separation or thematic coherence. This increases cognitive load on agents deciding which tool to call and violates separation-of-concerns principle.
Parameter names in add_expense (date) lack format specification. Should clarify: ISO 8601? Unix timestamp? Natural language? Currently invites type mismatches.