An MCP server for managing and tracking expenses with SQLite database backend
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (add_, list_, summarize). Descriptions exist but are minimal (10-60 chars, below the 50-200 char LLM-optimized baseline). Critical issue: no parameter descriptions for date fields (format, range), no output schema documentation, no error handling guidance. The 'summarize' tool has a nullable default (category=null) which is unusual and undocumented. No input validation, no recovery hints, no pagination despite list_expenses potentially returning unbounded results.
Add a new expense entry to the database.
List expense entries within an inclusive date range.
Summarize expenses by category within an inclusive date range.
Parameter descriptions missing for date fields. 'date', 'start_date', 'end_date' lack format specification (ISO 8601?), range constraints, or validation rules. LLMs cannot infer correct date format and will pass invalid values.
No output schema documentation. Tools return dicts/lists but LLMs have no visibility into field names, types, or structure. Downstream tool chaining is blind.
list_expenses lacks pagination (limit, offset, page_size). Unbounded result sets can exhaust context window. No total count or next_cursor returned.
No error handling or recovery guidance. Tool descriptions do not explain failure modes (invalid date format, database errors, missing category). LLM receives raw exceptions with no actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Tool descriptions are too brief (10-60 chars vs 50-200 char baseline). 'Add a new expense entry to the database' lacks context on when to use, what happens on error, or what the response contains.