MCP server for DuoFund — manage categories, goals, transactions and wishlist
DuoFund MCP has 14 well-named tools with consistent verb_noun patterns (get_, list_, create_, delete_). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present and use Zod with enums for constrained fields (scope, type, priority). However, output schemas are NOT documented, responses are formatted as plain JSON text without field-level documentation. Parameter descriptions are minimal (10-30 chars) and lack actionable constraints (e.g., no min/max for numeric fields, no format hints for dates). Error handling is absent, API errors are passed through without recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Composition is sound: tools are single-responsibility and chainable via IDs.
Cria uma categoria de orçamento com limite mensal opcional.
Cria uma meta financeira (ex: viagem, reserva de emergência).
Registra uma transação (receita ou despesa).
Adiciona um produto à lista de desejos.
Remove uma categoria de orçamento pelo ID.
Remove uma meta pelo ID.
Remove uma transação pelo ID.
Output schemas not documented. Tools return fmt(data) as plain JSON text without field-level documentation. LLMs cannot plan downstream calls or extract specific fields reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk levels in metadata but not in schema. LLMs cannot distinguish safe reads from destructive deletes without explicit hints.
Parameter descriptions lack actionable constraints. Numeric fields (limit, amount, target) have no min/max bounds. Date fields lack format hints (YYYY-MM-DD). Enum descriptions are minimal ('Escopo da categoria' vs 'personal = user-only budget, shared = couple budget').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Remove um item da lista de desejos pelo ID.
Adiciona um valor ao progresso de uma meta.
Resumo financeiro do mês: entradas, saídas, saldo, orçamento usado.
Lista categorias de orçamento com gasto atual e % do limite.
Lista metas financeiras com progresso e valor restante.
Lista transações do mês (até 50). Filtra por scope e tipo.
Lista itens da lista de desejos com preço e prioridade.
No error handling or recovery guidance. API errors are thrown as raw Error objects. LLMs receive no actionable next steps (e.g., 'Category not found. Call list_categories() to see available options.').
No pagination support on list tools. list_transactions caps at 50 items but offers no limit/offset or cursor. Large result sets risk context window exhaustion.