propose_transaction_edit
Propose an edit to an existing past income or expense transaction. Returns a proposal id; to record it, call the confirm_proposal tool with the returned proposalId after the user approves (there is no UI button or proposal card to click in this context). Only works on income/expense transactions — transfers and asset trades (buy/sell) must be edited on the Transactions page. ONLY pass the fields the user explicitly asked to change; omit the rest so they keep their current value. Pass null for an optional field only when the user explicitly asks to clear that field (e.g. 'remove the category').
MCP note: this tool only CREATES a pending proposal; nothing is recorded until confirm_proposal is called.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional. New date (YYYY-MM-DD). | |
| type | No | Optional. New type for the transaction. Only income↔expense is allowed via this tool. | |
| notes | No | Optional. New notes, or null to clear. | |
| amount | No | Optional. New amount in MAJOR units (displayed amount, e.g. 12.34 for $12.34). Never pre-multiply by 100. | |
| currency | No | Optional. New 3-letter currency code. Must match the transaction's account currency (no foreign-currency edits via chat). | |
| categoryId | No | Optional. New category id, or null to clear the category. | |
| envelopeId | No | Optional. New budget (envelope) id, or null to clear it. | |
| description | No | Optional. New description. Pass null to clear it. | |
| transactionId | Yes | Id of the existing transaction to edit. Look it up with runReadQuery (filtering by description/date/amount/etc.) before calling. | |
| editsProposalId | No | Id of an existing pending edit-proposal to update in place. Pass this when the user revises a previous edit you proposed ('actually make it $60 not $50'). Omit when proposing a fresh edit. |