Submit an approval request
submit_requestSubmit a new approval request against a workflow. Call get_workflow_details first and supply every required field; the tool reports which values are missing or invalid rather than guessing. This notifies real approvers — confirm the values with the user before calling. Two-step: call with confirmed=false (the default) first for a preview with NOTHING written yet; call again with the same fields plus confirmed=true to actually submit it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Map of field key to value. Prefer the field's `id` (UUID) from `get_workflow_details` as the key — the binding name (e.g. "absence_from") or the exact label are accepted as fallbacks, but the UUID is canonical. Each value should match the field type: strings for text, numbers for amount/number, date strings (YYYY-MM-DD) for dates, option values for dropdowns. Money (amount, and item_price cells in line_items) in dollars as the user says it, e.g. 250 or "1,250.50"; the tool converts to the stored unit, never multiply by 100 yourself. A line-item tax cell (accounting_tax / xero_tax_rate) takes the tax's id from search_entities, never its percentage; the tool stores the tax's rate. Always include every required field — missing required fields (esp. workflow-specific ones like `absence_from`/`absence_to` for time-off, vendor for bills/POs) cause downstream creation errors that are not recoverable from inside the tool. | |
| priority | No | Priority level. Defaults to medium. | |
| confirmed | No | false (default) previews: validates everything and returns every blocker at once WITHOUT creating anything. true creates the request. Preview first, then confirm with the user, then call again with true. | |
| workflow_id | Yes | The workflow ID to create the request for. | |
| step_approvers | No | Only for steps `get_workflow_details` marks `requestor_picks_approver: true` — on those the form makes the requestor choose who approves, and the preview lists each one as a blocker until it has a pick. One entry per such step: {"step_order": 0, "approver_ids": [12, 34], "completion": "all"}. Resolve names with `search_team_users`; `completion` is "all" (every one must approve, the default) or "any" (one is enough). |