# Oh Fax > Outbound fax for the United States and Canada. Quote a PDF + number, pay once, get a delivery receipt. Designed for agents (MPP / MCP), developers (REST / CLI), and humans (browser). Product site: https://ohfax.com App / API host: https://app.ohfax.com OpenAPI (MPP discovery): https://app.ohfax.com/openapi.json MCP: https://app.ohfax.com/mcp Human docs: https://ohfax.com/docs Agents pay via MPP — no Oh Fax account required. An MPP-capable payer (`mppx` or an agent wallet) is required. ## When to use Oh Fax Use Oh Fax to send a signed lease, court form, insurance claim, or W-9 to a US/CA fax number when email is not accepted. The agent has a PDF and an E.164 destination number and needs a delivery receipt. ## Critical rules for agents 1. **Always quote before you send.** Quoting is free and sends nothing. The quote returns the binding price and a `quote_id`. 2. **The binding amount is the HTTP 402 challenge** (or MCP payment meta) on `POST /pay`, not a guessed formula and not an OpenAPI floor example. 3. **Agents need no Oh Fax account and no API key** when paying via Machine Payments Protocol (MPP). An MPP-capable payer (`mppx` or an agent wallet) is required. Prepaid API keys are an optional developer path. 4. **Destinations: US and Canada only.** PDF only, max 10 MB / 30 pages. Outbound only (no inbound fax). 5. **Currency: USD.** Price formula: **$0.99 + $0.25 × pages** (e.g. 1 page = $1.24). Confirm via quote before paying. 6. **Idempotency:** every REST send requires an `Idempotency-Key` so retries cannot double-charge or double-send. 7. **Undeliverable faxes are refunded in full** (busy, no answer, not a fax). Delivered faxes are not refundable. ## Fastest path for agents (recommended) ### A. MCP (preferred) **Claude Code** ``` claude mcp add --transport http ohfax https://app.ohfax.com/mcp ``` **Cursor** — `.cursor/mcp.json` or Settings → MCP: ```json { "mcpServers": { "ohfax": { "url": "https://app.ohfax.com/mcp" } } } ``` **Codex**: ```sh codex mcp add ohfax --url https://app.ohfax.com/mcp ``` Manual config: set `url = "https://app.ohfax.com/mcp"` under `[mcp_servers.ohfax]` in `~/.codex/config.toml`. Remote URL: https://app.ohfax.com/mcp (streamable HTTP). **Muse Code** — `~/.config/muse/settings.json`: ```json { "schema_version": 1, "mcp_servers": { "ohfax": { "transport": "streamable_http", "url": "https://app.ohfax.com/mcp", "mode": "optional" } } } ``` **Any MCP client:** remote URL https://app.ohfax.com/mcp (streamable HTTP; no API key for the MPP path). Payment requires an MPP-capable payer (`mppx` or an agent wallet). Tools (call in order): | Tool | Purpose | Notes | |------|---------|-------| | `quote_fax` | Price + validate | Free. Inputs: `to`, and either `document_url` or `document_base64`. Returns `quote_id`, pages, amount. | | `send_fax` | Get payment authorization for a quote | Input: `quote_id`. Does **not** charge by itself. | | *(pay)* | Satisfy MPP / HTTP 402 on `/pay` | No Oh Fax account. Use MPP-capable client (`mppx`, agent wallet, etc.). | | `get_fax_status` | Poll delivery | Statuses include awaiting_payment, paid, submitting, submitted, sending, delivered, failed, refunded. | | `get_fax_receipt` | Final receipt | Available once the fax is final. | Payment is still MPP — no Oh Fax account required; use an MPP-capable payer. ### B. HTTP + MPP (no MCP client) 1. `POST https://app.ohfax.com/api/v1/quotes` with multipart form: `to`, `file` (PDF). Free. 2. Read `quote_id` and exact `amount` from the response. 3. `POST https://app.ohfax.com/pay?quote_id=…` (or body with `quote_id`). Unpaid → **HTTP 402** with MPP challenge. 4. Complete payment with an MPP client; binding amount is the challenge. 5. Poll `GET https://app.ohfax.com/api/v1/faxes/{fax_id}` then receipt when final. Discover payment terms: `GET https://app.ohfax.com/openapi.json`. ## Developer path (prepaid balance) 1. Google sign-in at https://app.ohfax.com/account 2. Top up ($5 / $10 / $25 / $50), create API key (`afx_live_…` shown once) 3. Quote free; send with `Authorization: Bearer …` + `Idempotency-Key` 4. Optional CLI: `ohfax` with `OHFAX_API_KEY` and `OHFAX_URL=https://app.ohfax.com` See https://ohfax.com/docs/api and https://ohfax.com/docs/cli ## Pricing examples | Pages | Total | |------:|------:| | 1 | $1.24 | | 3 | $1.74 | | 5 | $2.24 | | 10 | $3.49 | | 30 (max) | $8.49 | ## What success looks like - Delivery usually within a few minutes of payment. - Track on status endpoint or browser `https://app.ohfax.com/f/:id`. - Document bytes deleted ~24h after a final state; transaction metadata (destination, pages, timing, content hash) retained — contents are not. - Webhooks (account holders): `fax.delivered` / `fax.failed` with `x-ohfax-event`, `x-ohfax-signature`, `x-ohfax-delivery-id`. Docs: https://ohfax.com/docs/webhooks ## Docs map - Overview: https://ohfax.com/docs - Quickstart: https://ohfax.com/docs/quickstart - API: https://ohfax.com/docs/api - MCP: https://ohfax.com/docs/mcp - CLI: https://ohfax.com/docs/cli - Webhooks: https://ohfax.com/docs/webhooks - Limits & acceptable use: https://ohfax.com/docs/limits - Privacy: https://ohfax.com/privacy - Terms: https://ohfax.com/terms - MPP protocol docs (for payment clients): https://mpp.dev/llms.txt ## Do not - Skip quoting and invent a price. - Retry a paid send without a stable idempotency key (REST). - Fax outside US/CA, non-PDF, or >30 pages / >10 MB. - Send bulk/unsolicited advertising or premium-rate numbers. - Expect inbound fax receiving (not offered). ## Contact Product questions / billing disputes: support@ohfax.com