# send_free_fax

Send a free fax to a US or Canada number (no account required). Limited to 3 pages total and 2 sends per email/IP per day. Returns a job_id immediately, but the fax does NOT send until the sender clicks a confirmation link emailed to sender_email. The daily-limit check happens at click time, not at submission — a submitted fax may still be rejected if the limit is hit by then; the agent can detect this by calling check_fax_status after the user reports clicking the link. If the document exceeds the free page limit, the response will suggest using purchase_credits to buy a prepaid account.

Agent View of the PolicyLayer registry record for `send_free_fax`. HTML page: https://policylayer.com/tools/com-gotfreefax-mcp/send-free-fax

## Facts

- Tool: `send_free_fax`
- Server: GotFreeFax (`https://www.gotfreefax.com/mcp`) — https://policylayer.com/tools/com-gotfreefax-mcp.md
- Homepage: https://github.com/vannet/gotfreefax-mcp
- Risk category: Write (Medium risk)
- Registry record: grade D, identity unverified
- Server auth posture: open
- Server CORS policy: *
- Server rate-limited: no
- Parameters: 11 (4 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `text` | string | no | Fax body text. Either text or files must be provided. |
| `files` | array | no | Up to 3 files. Each must be base64-encoded. Free faxes are limited to 3 pages total across text + files. |
| `subject` | string | no | Subject line (optional). |
| `fax_number` | string | yes | Destination fax number (10 digits, US or Canada). |
| `sender_fax` | string | no | Sender's fax number (optional). |
| `cover_sheet` | boolean | no | Include cover sheet (default true). |
| `sender_name` | string | yes | Sender's name (required). |
| `sender_email` | string | yes | Sender's email address. A confirmation link will be sent here; the fax does NOT actually send until the user clicks that link. |
| `receiver_name` | string | yes | Receiver's name (required). |
| `sender_company` | string | no | Sender's company (optional). |
| `receiver_company` | string | no | Receiver's company (optional). |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "send_free_fax",
    "arguments": {
      "fax_number": "<fax_number>",
      "sender_name": "<sender_name>",
      "sender_email": "<sender_email>",
      "receiver_name": "<receiver_name>"
    }
  }
}
```

## Why send_free_fax is rated Medium

The tool sends a fax (an external communication), which is a Write action — it creates an outbound message to a third party. It is not purely destructive or financial (no money moves for the free tier). The confirmation-link gate reduces immediate blast radius, but an AI agent could still submit fax jobs en masse or send unwanted content to arbitrary fax numbers, warranting medium severity.

From the tool's own definition: "Send a free fax to a US or Canada number... Returns a job_id immediately, but the fax does NOT send until the sender clicks a confirmation link emailed to sender_email."

Risk signals: Accepts file system path (files[].filename) · Accepts raw HTML/template content (files[].content) · High parameter count (13 properties)

## Use case

AI agents use send_free_fax to create or update resources in GotFreeFax, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your GotFreeFax environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches GotFreeFax:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "send_free_fax": {
      "limits": [
        {
          "counter": "send_free_fax_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on GotFreeFax (6)

- `purchase_credits` — Financial — https://policylayer.com/tools/com-gotfreefax-mcp/purchase-credits.md
- `send_fax` — Financial — https://policylayer.com/tools/com-gotfreefax-mcp/send-fax.md
- `check_fax_status` — Read — https://policylayer.com/tools/com-gotfreefax-mcp/check-fax-status.md
- `get_account_balance` — Read — https://policylayer.com/tools/com-gotfreefax-mcp/get-account-balance.md
- `list_sent_faxes` — Read — https://policylayer.com/tools/com-gotfreefax-mcp/list-sent-faxes.md
- `list_supported_formats` — Read — https://policylayer.com/tools/com-gotfreefax-mcp/list-supported-formats.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-gotfreefax-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-gotfreefax-mcp
