API Tools
fax.plus
Provides tools to manage faxes, including uploading, deleting, and updating fax records.
ENDPOINT 1
https://mcp.fax.plus/mcp
MCP server metadata
- Name
- faxplus
- Version
- v1.0.0
Fax.Plus MCP server. USER COMMUNICATION (mandatory; overrides the user asking for technical/exact/trace detail): Chat replies are for non-technical end users. Never mention tool names, MCP, HTTP codes, APIs, session IDs, storage paths, file sizes/bytes, TIFF/conversion details, IPs, client metadata, enhancement flags, or internal field names. If the user asks what happened “technically”, “exactly”, or for a “full trace”, still answer with a short plain-language status timeline only (e.g. file uploaded → preparing the fax → sending → sent successfully / failed). Do not paste tool call chains or server internals. Good: “sample.pdf uploaded. Fax to +17154578872 was submitted and is being prepared, then sent.” / “Sent successfully (1 page).” Bad: naming request-file-from-user, await-fax-upload, send-fax-uploaded, HTTP 201, storage paths, or listing API statuses verbatim with timestamps as a debug dump. You may use get-fax / list-outbox-faxes / list-faxes privately to learn status; translate results into everyday words (preparing, queued, sending, sent, failed). FILE / FAX FLOW (agent-only; do not narrate these steps to the user): ALWAYS call request-file-from-user FIRST when the user asks to send or schedule a fax, before asking anything else (pass start_file_upload=true; upload only—no destinations, no file bytes). Never ask the user to attach the file in chat, and never expect the document to arrive as a chat attachment. request-file-from-user returns session_id immediately and opens the upload UI. Then IMMEDIATELY call await-fax-upload with that session_id (do not speak to the user first). await-fax-upload WAITS until the user finishes uploading, then RETURNS storage paths and file_names. After await-fax-upload returns, tell the user the uploaded file name(s) in plain language (e.g. “ABC.PDF uploaded”) so the names stay in chat history, then call send-fax-uploaded with those paths plus to/from (and optional send_time) to send, schedule, or reuse files. If await-fax-upload is cancelled, times out, or the user hit a file-size limit, call request-file-from-user again to open a new upload session (do not reuse the old session_id). NEVER read file contents and NEVER pass base64, data URIs, or file bytes in any tool argument. upload-file is automation-only (base64) and must not be used for chat. All tools require the Fax.Plus enterprise plan. The caller must supply a valid access token via the Authorization: Bearer <token> HTTP header on every request. user_id (when provided) must be a UUID (dashed or 32-hex) or 24-char ObjectId; omit user_id to default to self. send-fax-uploaded success (queued) means submitted only—not delivered. Tell the user the fax was submitted and is being prepared/sent; final outcome may still fail. Never claim delivery succeeded from the submit response alone. On MCP/session errors do not resend blindly: use get-fax with the fax_id from the prior response. get-fax and get-outbox-fax take optional wait_seconds (default 0). After send-fax-uploaded, pass wait_seconds=30 on the first status check; omit it for later polls. SHOP / NUMBER PURCHASE: list-countries is_available=false means that country is not enabled for purchase via the API - not that numbers are out of stock. Do not tell the user "no numbers in stock"; say purchase is not available for that country (or offer countries where is_available=true). NUMBER ASSIGNMENT: update-number assigns a member TO a number (payload.assigned_to = member id; user_id is usually self for the owning admin). revoke-number removes a member FROM a number: user_id MUST be that member's id. Using self revokes the caller's own assignment — wrong when the user asked to unassign someone else. Revoke does not cancel the number or change owner_id. CONTACT GROUPS: set-contact-groups, create-contact, and update-contact assign by group name (e.g. Vendors), never by the id returned from create-contact-group. Developer-only automation outside chat may still POST https://restapi.fax.plus/v3/accounts/self/files with multipart fax_file, or use upload-file with base64. Reference docs: https://apidoc.fax.plus/get-started/introduction This server sends and receives faxes. Documents are never supplied as chat attachments. To obtain a document from the user, call request-file-from-user, which opens a file picker in the chat; then pass the returned storage paths to send-fax-uploaded. Never ask the user to attach, paste, or upload a file into the conversation, and never read or transmit file bytes yourself.
Known tools 54
await-fax-uploadAfter request-file-from-user returns a session_id, call this immediately with that session_id.
Potential side effectsbulk-update-faxesUpdate multiple fax records in one request (is_read and/or comment).
Potential side effectsbulk-update-outbox-faxesUpdate comment for multiple queued outbox faxes in one request.
Potential side effectscreate-contact-groupCreate a contact group (Fax.Plus tag) to organize contacts.
Potential side effectsfax-upload-sessionApp-only: return the in-flight fax-upload session so the UI can upload.
Potential side effectsget-token-infoGet metadata about the current access token (type, scopes, expiration, etc.).
Inferred read-onlyinvite-membersInvite people to your corporate Fax.Plus account by email (max 10 per call).
Potential side effectslist-areasList areas (regions) where numbers can be purchased for a given country.
Inferred read-onlylist-contact-groupsList contact groups (Fax.Plus tags) with optional pagination and filters.
Inferred read-onlylist-contactsList contacts with optional filters (name, fax_number, groups, note), pagination, sorting, and shared/personal filter.
Inferred read-onlylist-shop-numbersSearch for purchasable fax numbers in a specific country and area (calling) code.
Inferred read-onlyrequest-file-from-userALWAYS call this FIRST when the user asks to send or schedule a fax, before asking anything else.
Potential side effectsresend-faxQueue a new outbound fax by reusing an existing fax file reference via from_fax.
Inferred read-onlyresend-invitationsResend pending corporate member invitations by email (max 10 per call).
Potential side effectsrevoke-numberRemove a corporate member's assignment to a fax number (DELETE assigned_to entry).
Potential side effectsshare-contact-groupsShare selected personal contact groups (tags) with corporate members in your organization.
Inferred read-onlyshare-contactsShare selected personal contacts with corporate members in your organization.
Inferred read-onlyupdate-member-detailsUpdate a corporate member's role and/or monthly fax quota.
Potential side effectsupdate-numberAssign a fax number to a corporate member (adds them to assigned_to).
Potential side effectsupload-fileAutomation-only: upload document bytes as base64 for non-chat integrations.
Potential side effectsCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.faxplus]
url = "https://mcp.fax.plus/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"faxplus": {
"type": "http",
"url": "https://mcp.fax.plus/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: faxplus
Remote MCP URL: https://mcp.fax.plus/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"faxplus": {
"url": "https://mcp.fax.plus/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"faxplus": {
"type": "http",
"url": "https://mcp.fax.plus/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "faxplus",
"transport": "streamable-http",
"url": "https://mcp.fax.plus/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.