Guarded Model Context Protocol server for Firefly III personal finance management system
Server has 19 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~100 chars). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented in the source code, parameter constraints are minimal (few enums), and error handling lacks recovery guidance. Write tools include confirmation gates (confirm_write pattern), which is good for safety. Missing: enum constraints for string parameters (account_type, transaction type, insight_type), output schema documentation, and actionable error messages.
Autocomplete search for various Firefly III object types
Create a new budget with confirmation required for live writes
Create a budget limit for a specific budget with confirmation required for live writes
Create a new category with confirmation required for live writes
Create a new tag with confirmation required for live writes
Create a new transaction with confirmation required for live writes
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure. All 19 tools lack documented return types.
String parameters lack enum constraints. account_type, transaction type, insight_type, period, and accounts accept free-form strings, inviting hallucinated values. Should use enums (asset|expense|revenue|liability for account_type; withdrawal|deposit|transfer for type; expense|income|transfer for insight_type; 1d|1w|1m|3m|6m|1y for period).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Delete a transaction with confirmation required for live writes
Get details for a specific account by ID
Get account balance chart data for a specified period
Get basic financial summary for a date range
Get financial insights for a date range and insight type
Get server configuration and capability status for diagnostics
Get details for a specific transaction group by ID
List all accounts with optional filtering and pagination
List all budgets with optional pagination
List all categories with optional pagination
List all tags with optional pagination
List transactions with optional filtering by date range, account, type, and pagination
Update an existing transaction with confirmation required for live writes
Error handling lacks recovery guidance. No evidence of actionable error messages (e.g., 'User not found. Try search_users() first'). Errors should categorize as retryable, user-fixable, or fatal and guide next steps.
Pagination not fully documented. list_* tools accept limit and page but do not document total count or next_cursor in response. LLMs cannot determine if more results exist without explicit pagination metadata.
Write tools require confirm_write=true but lack dry-run support. Agents cannot preview changes before committing. Should offer a dry_run parameter or separate preview tool to reduce catastrophic errors.