correct_expenses
Safely correct the category, business purpose, or explicit attendees on an exact bounded set of recorded expenses. Examples: 'categorize these as Travel', 'add Client kickoff dinner as the business purpose for these meals', or 'add Fred, Rob, and Lamar to last night's business meal'. First use search_expenses to identify the exact rows, then pass their full expenseId values. A grounded preview is automatic: first call with confirm omitted/false, show the exact count and proposed before-to-after changes, and ask once for approval. Only after explicit approval repeat the same operationId, selection, and change with confirm:true. A premature confirm:true is converted to preview. Attendee names must come explicitly from the user; never infer them. attendeeMode add preserves existing attendees, while replace substitutes only the attendee segment. Business purpose and attendees preserve the structured Notes field, including card, description, inbox, and other typed segments. Formula Notes and changes that exceed the Notes limit are skipped safely. The confirmed result reports applied/conflicted/failed counts and supports Undo. This tool does not omit duplicates, change amounts or dates, infer business context, or run broad Calendar matching. For unsupported or more than 100-row cleanup, send the user to https://www.expensebot.ai/review-expenses?source=mcp.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| undo | No | Undo a completed correction within its Undo window. | |
| change | No | Exactly one correction. The selected type determines which matching value field is required. | |
| status | No | Read operation status using operationId. | |
| confirm | No | Omit/false for preview; true only after explicit approval. | |
| selection | No | Exact expenses returned by search_expenses and approved for this bounded correction. | |
| operationId | Yes | Stable idempotency key generated once for preview and reused unchanged. |