{
  "markdown": "# Statement Normalizer MCP\n\nDeterministic bank-statement parsing for AI agents: messy CSV/OFX exports in, clean categorized ledger rows out.\n\n## Why this exists\n\nEvery bank exports transactions differently: shifted headers, inconsistent date formats, debit/credit sign conventions, junk rows. Agents doing bookkeeping either write fragile one-off parsing or hallucinate structure. This server does the boring part correctly, deterministically, and identically every time.\n\n## Privacy posture (read this first)\n\nYour transaction data is processed **in memory only**:\n\n- No storage. Nothing is written to disk or retained after the response\n- No external calls. Parsing is pure Python; data never leaves the process\n- No LLM in the loop. Deterministic rules, not model inference\n- Open source (MIT), so you can verify all of the above, or run it locally and send nothing anywhere\n\n## Tools (4)\n\n- `detect_format(sample)` - identify the export format, delimiter, header row, and date convention\n- `normalize_statement(data, format_hint?)` - full parse to clean ledger rows: ISO dates, signed amounts, merchant, category\n- `summarize_statement(data)` - totals by category, month, and direction (income/expense)\n- `to_quickbooks_csv(data)` - re-emit normalized rows as QuickBooks-importable 3-column CSV\n\n## Example\n\n```\nnormalize_statement(\"Date,Description,Amount\\n07/03/2026,COFFEE SHOP #42,-4.50\\n...\")\n```\n\n```json\n{\n  \"rows\": [\n    {\"date\": \"2026-07-03\", \"description\": \"COFFEE SHOP #42\", \"amount\": -4.50, \"direction\": \"debit\", \"category\": \"dining\"}\n  ],\n  \"rows_parsed\": 1,\n  \"rows_skipped\": 0,\n  \"format_detected\": \"generic_csv_mdy\"\n}\n```\n\n## Run\n\n```bash\npip install \"mcp>=2.0\"\npython server.py          # stdio transport\n```\n\nTests: `python test_server.py` - hand-built fixtures covering CSV variants, OFX, sign conventions, and malformed rows.\n\n## Pricing (hosted)\n\n- Free tier: 50 requests/month (enough to evaluate every tool)\n- Then $0.01 per request, metered. Pay only for what you use\n- Or run it locally for free, forever (MIT)\n\n## Compliance posture\n\n- Educational and bookkeeping-assist tooling; **not financial advice**\n- Deterministic parsing only; no recommendations, no analysis beyond arithmetic totals\n- Category assignments are heuristic and user-reviewable, disclosed in-payload\n\n",
  "bytes": 2302,
  "sha": "e29ccbb3389299cbb5c381973afa722b11821c5a761f68c6cd3c6ddeabbf5acd",
  "repo_slug": "jfortier93/statement-normalizer-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jfortier93_statement_normalize_6149ca0e/readme"
}