Normalize messy bank statement exports (CSV or OFX/QFX text) into clean, categorized, consistently-signed ledger rows. Handles varied column names, date formats (US/EU), split debit/credit columns, currency symbols, parentheses negatives, decimal commas, junk preamble lines, and footer totals. Negative amount = money out.
Single tool 'normalize_statement' has a clear, action-oriented name and reasonable description (127 chars). Input schema is present with three parameters, all typed and described. However, the tool lacks critical production-grade qualities: no output schema documentation, no error handling guidance, no examples of what 'normalized ledger rows' look like, and no discussion of edge cases or limitations. The description mentions 'categorized ledger rows' but the response structure is never defined. Parameter descriptions are minimal (e.g., 'Ambiguous date order preference' lacks guidance on when to use which). No mention of retry behavior, timeout handling, or what happens on malformed input. The tool is READ_ONLY (good), but lacks the structured output documentation and error recovery patterns expected of production tools.
Parse a bank statement (CSV or OFX/QFX text) and return normalized, categorized ledger rows.
Output schema not documented. Tool description says it returns 'normalized, categorized ledger rows' but the response structure (fields, types, example) is never defined. LLMs cannot plan downstream operations or extract data without knowing what fields to expect.
No error handling guidance. Tool description lacks recovery hints for common failures (malformed CSV, unsupported date format, invalid enum value). LLMs receive raw errors with no actionable next steps.
Parameter descriptions are too brief and lack format/constraint details. 'Ambiguous date order preference' does not explain when to use 'mdy' vs 'dmy' or what happens if the dates are unambiguous. 'Raw bank statement text' does not specify encoding, max size, or expected structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
No pagination or result limits documented. If a statement has thousands of transactions, the response could be enormous. No mention of max rows returned, pagination support, or how to handle large files.
Tool description mentions 'Educational/bookkeeping assistance only' and a disclaimer, but the disclaimer is returned in every response, not documented as part of the output schema. LLMs may not know to extract and display it to users.