propose_transactions
Parse a bank statement CSV/OFX/QFX into proposed transactions without writing to the ledger. Returns JSON proposals with mapping and ambiguities, ready for review and categorization before booking.
Instructions
Parse a bank statement (CSV or OFX/QFX) into PROPOSED transactions.
THIS TOOL NEVER WRITES. It returns proposals as JSON; add_transactions is
still the only way anything reaches the book, so the bean-check gate and the
git commit stay where they are.
content is the statement itself — base64-encoded bytes, or the text pasted
straight in. NOT a path: the hosted chat agent has no filesystem in common
with your machine, and a tool that only works from one of them is the defect
this replaces.
account is the book account the statement belongs to, e.g.
'Assets:Checking' or 'Liabilities:Visa'. Required — every row in an export
is one side of that account and the file never says which.
WHAT YOU MUST DO WITH THE RESULT
Read
mapping. It says which column was read as what, which date format, which decimal separator, and whether a positive amount was taken to mean money in or money out — with the evidence for each. If any of it is wrong, call again with the matching override rather than editing the numbers.CATEGORISE. Every proposal's counter-account is a placeholder (Income:Unclassified / Expenses:Unclassified). Replacing those with real accounts is your job; parsing was this tool's. Keep the
import-id:metadata line exactly as given — it is what stops the same statement being booked twice.Keep the
!flags. A flagged row has an ambiguity the file cannot settle, listed inambiguities. Do not silently promote one to*.Open anything in
accounts_to_openfirst (open_directivesis ready to paste intoopen_accounts).Show the user
countsand anything flagged before you write.
Overrides, all optional: amount_shape ('signed' | 'debit_credit' | 'balance'), columns (a JSON object like {"date": "Posted Date", "amount": "Amount"} — header names or 0-based indices), date_format (strptime), delimiter, decimal_separator ('.' or ','), sign ('normal' | 'inverted'), opening_balance (for a running-balance file whose first row has no predecessor), counter_account, currency, file_format, content_encoding.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sign | No | auto | |
| account | Yes | ||
| columns | No | ||
| content | Yes | ||
| currency | No | ||
| delimiter | No | ||
| date_format | No | ||
| file_format | No | auto | |
| amount_shape | No | auto | |
| counter_account | No | ||
| opening_balance | No | ||
| content_encoding | No | auto | |
| decimal_separator | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |