An MCP server for tracking and managing expenses with SQLite database backend
ExpenseTracker has three tools with basic schemas and descriptions, but significant gaps prevent higher scores. All tools have descriptions (10-60 chars, below the 50-200 char baseline for LLM optimization) and input schemas with types. However, parameter descriptions are minimal or missing context. The add_expense tool lacks validation guidance (date format, amount range). list_expenses and summarize lack pagination support despite potentially returning large result sets. No output schemas are documented. Error handling is absent, no guidance on what happens if date parsing fails or category doesn't exist. Tool naming is clear (verb_noun pattern), but composition could be improved: no batch operations, and no guidance on chaining tools together.
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 lack validation context. 'date' parameter has no format specification (ISO 8601? YYYY-MM-DD?). 'amount' has no range constraints. LLMs will pass invalid values without guidance.
No output schemas documented. Callers cannot predict response structure. add_expense returns {status, id}; list_expenses returns array of expense objects; summarize returns array of {category, total_amount}. These must be formally specified.
No pagination support. list_expenses and summarize lack limit, offset, and total_count. Large expense datasets will blow context windows. Baseline pattern requires pagination for list tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If date parsing fails, category doesn't exist, or amount is negative, the tool returns a raw error. LLM has no guidance on what to do next.
Tool descriptions are too short (40-45 chars vs 50-200 char baseline). 'Add a new expense entry to the database' lacks context on when to use it vs other tools, what happens on success, or prerequisites.