MCP server for managing financial data including accounts, transactions, budgets, and categories from a SureFinance database
The server defines 6 tools with explicit JSON schemas and basic descriptions. All tools follow verb-noun naming conventions and accept well-typed parameters with constraints (enums, min/max). However, parameter descriptions are entirely absent, none of the 6 tools provide descriptions for their input parameters. Tool descriptions themselves are brief but adequate (10-50 chars). Output schemas are not documented anywhere in the visible codebase. Error handling is not visible in the tool definitions. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. All tools are read-only (low risk), but this should be declared explicitly.
Retrieve balance history for a specific account
List all accounts with current balances
List budgets with spending analysis
List categories with hierarchy
Retrieve transactions with optional filters
Search transactions by keyword and filters
Missing parameter descriptions for ALL tools. The input parameters (e.g., updated_since, account_id, range, period, parent_id, start_date, end_date, limit, query) have no descriptions explaining what they control or what format they expect.
No output schema documentation. Tool definitions show the input schema structure but do not specify what fields are returned, their types, or structure. LLMs cannot plan downstream calls or extract the right data without knowing the response shape.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint attributes on any tool. While all 6 tools are safe READ_ONLY operations, annotations should be explicit in the tool definition for clarity and consistency with current MCP spec patterns.
No visible error handling or recovery guidance. The handler layer is referenced but not visible in the provided code. If handlers fail, there is no indication of how to surface actionable error messages (e.g., 'Try search_transactions with a partial query' instead of a bare error code).
Missing pagination guidance. get_transactions and get_budgets accept a limit parameter (capped at 500 and unspecified, respectively), but no mention of offset/cursor pagination or total count in the schema. Large result sets may blow the context window.