concur_update_expense
Update editable fields on an unsubmitted SAP Concur expense, such as date, amount, vendor, payment type, or custom fields, with a preview and confirmation before saving.
Instructions
Change an expense on an unsubmitted SAP Concur report — date, amount/currency/exchange rate, payment type, vendor, business purpose, location, comment, the personal flag, or any other editable form field by label (e.g. a required Ticket Number). A new foreign currency or date re-fetches SAP Concur’s exchange rate, as the web app does. Sends only the fields that actually change (the preview shows each from → to). To change the expense TYPE, delete it and create a new one. Answers with the expense as Concur shows it afterwards, including any exceptions. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | New transaction date, YYYY-MM-DD. | |
| amount | No | New amount (in `currency`, or the current one). | |
| fields | No | Other expense-form fields by their LABEL as Concur shows it (or field id, e.g. "custom3", "ticketNumber"), e.g. {"Project": "Apollo", "Ticket Number": "TKT-0001", "From Location": "Boston"}. Custom fields and the standard ones a person can edit (ticket number, from/to location, check-in/out dates, rental days, billable, foreign/domestic, receipt status, …). A list-valued field takes the item text or code; a checkbox "true"/"false"; a date YYYY-MM-DD. Text longer than the form allows is refused. Fields with a named argument (vendor, comment, …) use that argument. | |
| vendor | No | Vendor / merchant name. | |
| comment | No | Expense comment (seen by approvers). | |
| currency | No | New ISO currency code. | |
| personal | No | Mark the expense personal (not reimbursable). | |
| reportId | Yes | Report id (`reportId` from concur_list_reports). | |
| expenseId | Yes | Expense entry id (`expenseId` from concur_get_report). | |
| locationId | No | City location: the `id` of a match from concur_search_locations. | |
| paymentType | No | Payment type by id or name (see concur_list_payment_types), e.g. "Cash". | |
| confirmToken | No | ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation. | |
| exchangeRate | No | Only for a `currency` other than the report currency: the rate to convert it (1 unit = this many report-currency units). Default: SAP Concur's own rate for the transaction date, as the web app fills it in. | |
| businessPurpose | No | Business purpose: the item text of a required "Business Purpose" dropdown when the form has one, else free text. |