Skip to main content
Glama

Upload fax files

request-file-from-user
Destructive

Call 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

TableJSON Schema
NameRequiredDescriptionDefault
toNoOptional 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.
fromNoOptional 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.
numbersYesSender numbers from the list-numbers result. Pass them through so the UI can offer a from picker. Do not omit after listing.
user_idNoOptional Fax.Plus user ID. Omit for self. Must be a UUID (dashed or 32-hex) or 24-char ObjectId (not a phone number).
contactsYesContacts 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_idYesReturned by pipeline_start. Pass it back unchanged.
start_file_uploadYesAlways pass true so the confirmation request is not empty. Ignored by the server.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNo
tokenNo
methodNo
messageYes
numbersNo
prefillNo
contactsNo
endpointNo
expiresAtNo
field_nameNo
instructionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses substantial behavior: it mints a short-lived widget token, opens the upload UI, returns one of three chat payloads, never expects chat attachments, never accepts base64/file bytes, and explains how fax_ids are added to conversation context. No contradictory claims against the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense and well front-loaded with the required call order. Most sentences carry operational value, especially the mode branches and exclusions. There is some redundancy in the repeated warnings about never passing base64/file bytes and never asking for chat attachments, which could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, seven parameters, output schema, and destructiveHint annotation, the description is remarkably complete. It covers sequencing, parameter pass-through, mode-specific behavior, side effects, follow-up actions after fax_id is known, and which sibling tools must not be called, leaving no major gaps for an agent invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents each parameter. The description adds genuinely useful semantics beyond the schema: pipeline_id must be passed unchanged, numbers/contacts must be passed through from list results, to/from are prefill-only and should be omitted unless the user named them, and start_file_upload must always be true. This exceeds the baseline, though some information duplicates the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title make the core action clear, and the description strongly implies it requests a fax file from the user via a UI widget or curl recipe. However, there is no single crisp statement like 'asks the user to upload a fax file'; instead the purpose is embedded in orchestration details and mode-specific behavior. It does distinguish itself well from siblings like send-fax-uploaded and upload-file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the required call order: pipeline_start first, then list-numbers and list-contacts, then this tool. It also gives direct exclusions: do not re-list, do not ask for sender/destination, do not call send-fax-uploaded, upload-file, or await-fax-upload. Mode-specific instructions for MCP Apps, unconfirmed, and agentic modes make selection unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources