# SendThisFax

> Send real faxes to EU institutions: pay per fax via checkout link or prepaid API key.

- name: com.sendthisfax/fax
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 75/100 flags: no-repository
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.sendthisfax%2Ffax
- tools: https://api.protogrid.dev/v1/servers/com.sendthisfax%2Ffax/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "fax": {
      "type": "http",
      "url": "https://www.sendthisfax.com/mcp",
      "headers": {
        "Authorization": "Bearer ${FAX_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${FAX_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 99
- freshness: 65
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% ~updated-104d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 4 tools declare all four hints; missing: get_price (destructiveHint, idempotentHint); get_fax_status (destructiveHint, idempotentHint); check_balance (destructiveHint, idempotentHint)
- pass `tools.token_cost`: about 967 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 967 tokens to load them all
- tool set hash: 920ae6f54b741fcc8ac9abf94a03be51
- badge: [![protogrid quality](https://protogrid.dev/badge/com.sendthisfax/fax.svg)](https://protogrid.dev/servers/com.sendthisfax/fax)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://www.sendthisfax.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (4)

- `check_balance`: Get the prepaid credit balance of the API key used to authenticate this MCP connection. Requires a bearer API key (stf_live_...). Buy or top up credits at https://www.sendthisfax.com/en/credits — credits never expire and failed faxes are re-credited automatically.

- `get_fax_status`: Get the current status of a fax. Poll this after send_fax until a terminal state.

Fax lifecycle: draft (uploaded, not submitted) -> pending (submitted, awaiting payment) -> sending -> delivered | failed.
Payment lifecycle: unpaid -> verifying/open (checkout in progress) -> paid | failed | canceled | expired.
A fax that fails after payment is refunded automatically to the payer.

- `get_price`: Get the price quote in euro cents for sending a fax. Pricing: 5.00 EUR for up to 5 pages, plus 0.50 EUR per extra page, plus VAT based on the payer's billing country (0% VAT outside the EU).

- `send_fax`: Submit an uploaded PDF for faxing.

Step 1 (before this tool): upload the PDF over plain HTTP multipart, using any HTTP client you have — shell, JavaScript fetch with FormData, Python, etc.:
  curl -F "file=@document.pdf" https://www.sendthisfax.com/api/upload
  fetch("https://www.sendthisfax.com/api/upload", {method: "POST", body: formDataWithFile})
The response contains fax_public_id and page_count. PDFs must be unencrypted, at most 50 MB and 1000 pages.

Step 2: call this tool with the fax_public_id and the recipient fax number.

Two modes:
- With an API key (Authorization: Bearer stf_live_... on this MCP connection): the fax price is debited from the prepaid credit balance and sending starts immediately — no checkout, no browser. sender_email and billing_country are optional (they default to the key's records). Buy credits at https://www.sendthisfax.com/en/credits.
- Without an API key: sender_email and billing_country are REQUIRED and the tool returns a checkout_url the USER must pay in a browser; the fax is sent automatically once paid.

In both modes, poll get_fax_status until status reaches "delivered" or "failed" (failures after payment are auto-refunded).

For integration testing, +19898989898 is the designated test recipient number.

