Upload fax files
request-file-from-userCall pipeline_start first, then list-numbers and list-contacts (limit 20), then this tool — always that order. Pass pipeline_id here unchanged. Pass numbers from list-numbers and contacts from list-contacts on this call so the UI can show pickers. Do not re-list inside this tool. Do not ask the user for a sender or destination. Pass optional to/from only if the user already named a number or contact (prefill); omit them otherwise. Prefill to is an array of {number, optional name}; include name when the destination is a contact. from is a number only. Never ask the user to attach the file in chat, and never expect the document to arrive as a chat attachment. NEVER read file contents and NEVER pass base64 or file bytes. Always pass start_file_upload=true and the same pipeline_id. Returns one of three chat payloads. MCP Apps (no mode): widget token in structuredContent; the UI uploads and sends. Do not call send-fax-uploaded or upload-file. mode=unconfirmed: client did not announce Apps support. Relay the user notice, continue as if the UI is present, and use the curl recipe in the same payload only after the user confirms no panel appeared. mode=agentic: client has no Apps support. Follow the curl recipe (POST fax_file), then call send-fax-uploaded with the returned path. Never paste file bytes or base64. Do not call await-fax-upload (removed). Do not call upload-file for chat (automation-only). The UI does not send a chat message when it sends the fax; it adds the submitted fax ids to the conversation context. When a fax_id is known, tell the user the fax was submitted; then get-fax or get-outbox-fax with wait_seconds=30 on the first check.
Side effects: mints a short-lived widget access token; opens the upload UI when the client supports MCP Apps.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Optional destinations. Pass only if the user already named numbers or contacts. Each item is number plus optional contact name. Prefills the UI. Do not ask the user for them. | |
| from | No | Optional sender fax number in E.164. Pass only if the user already named this number. Prefills the UI. Do not ask the user for it. Number only — no name. | |
| numbers | Yes | Sender numbers from the list-numbers result. Pass them through so the UI can offer a from picker. Do not omit after listing. | |
| user_id | No | Optional Fax.Plus user ID. Omit for self. Must be a UUID (dashed or 32-hex) or 24-char ObjectId (not a phone number). | |
| contacts | Yes | Contacts from the list-contacts result (name + fax_number). Pass them through so the UI can offer a to picker. Do not omit after listing. | |
| pipeline_id | Yes | Returned by pipeline_start. Pass it back unchanged. | |
| start_file_upload | Yes | Always pass true so the confirmation request is not empty. Ignored by the server. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| token | No | ||
| method | No | ||
| message | Yes | ||
| numbers | No | ||
| prefill | No | ||
| contacts | No | ||
| endpoint | No | ||
| expiresAt | No | ||
| field_name | No | ||
| instructions | No |