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. 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, call get-fax or get-outbox-fax.

Side effects: mints a short-lived fax-scoped access token; opens the upload UI when the client supports MCP Apps, and that UI uploads the file and sends the fax to the chosen recipient numbers when the user clicks Send.

Input 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

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.0
Behavior3/5

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

It adds real context beyond the annotations: a short-lived fax-scoped token is minted, the UI uploads and sends only on user click, the UI does not post a chat message but injects the fax ids into context, and file bytes must never be read or passed. It still does not say what happens if the user closes the panel, whether the token expires, or whether a partially completed upload can be retried -- meaningful gaps for an operation annotated destructive.

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?

Individual sentences are purposeful and rules are stated imperatively rather than padded, but the whole thing arrives as one undifferentiated block with no opening statement of purpose and no separation between ordering rules, parameter rules, and mode handling. Front-loading the three-mode branching (Apps / unconfirmed / agentic) would make it far easier to scan.

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 seven parameters, a required ordering protocol, three client-capability modes, and an output schema, the description covers everything an agent needs to invoke it correctly: what to gather first, what to pass, which modes exist and what to do in each, and where to go next once a fax_id is known.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already defines to/from/numbers/contacts/pipeline_id/start_file_upload, including the array item shapes; the description largely restates those rules. It does add the sequencing constraint that numbers and contacts must be passed through from the listing calls unchanged and that to/from are prefill-only, which is modest value on top of 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 description conveys the specific resource and action -- it collects sender numbers, contacts and pipeline_id so the UI can upload a file and send a fax, and it explicitly separates itself from upload-file and send-fax-uploaded. It never states a single front-loaded purpose sentence, though, and the name (request-file-from-user) is never reconciled with the behavior described (a fax-send orchestration step).

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?

It gives an explicit call order (pipeline_start, then list-numbers and list-contacts, then this tool), states what must not be re-done inside the tool, and names the alternatives it forbids in Apps mode (send-fax-uploaded, upload-file) versus the one it requires in agentic mode. When-to-use and when-not-to-use are both spelled out.

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