Paper Owl Fax
Send a fax to any US or Canadian fax number from an AI assistant. Unlike fax services reachable through Zapier, Paper Owl Fax needs no fax account or subscription: you pay per fax, in the chat or on a short review page, you see every page and the price before paying, and if a fax cannot be delivered you are refunded automatically.
How it works
- Your assistant asks for your name (or your business name) and prepares a draft from text or a PDF. It tells you the recipient, the number of pages and the price.
- You look over the pages on the preview page.
- You approve the charge in chat, or open the review page and pay with Stripe.
- We send the fax and your assistant (or the review page) shows when it is delivered.
Pricing
$1.99 covers up to 5 pages, plus $0.25 for each page after that, up to 50 pages. A cover page counts as a page. For example, 3 pages cost $1.99 and 8 pages cost $2.74.
Rules
- United States (50 states and DC) and Canada only. One number per fax.
- No unsolicited advertising. Federal law (the Junk Fax Prevention Act) restricts it, and you confirm each fax is not an advertisement.
- No medical records or other protected health information.
- Every page is marked at the top with "From: your name via Paper Owl Fax", our sending fax number, and the date and time it was sent. Federal law requires a fax to identify its sender, so the name must be yours or your business's.
- Documents up to 10 MB. Unpaid drafts expire after 24 hours. Documents are deleted 30 days after delivery or expiry.
For developers and agents
| MCP endpoint | https://api.sendpaperowl.com/fax/mcp |
|---|---|
| Transport | Streamable HTTP, POST, JSON responses, stateless. MCP 2026-07-28, plus 2025-era clients. |
| Auth | None. Payment approval is the user's consent. |
| REST API | https://api.sendpaperowl.com/fax/v1 (OpenAPI 3.1) |
| Agent brief | muse.md and llms.txt |
| Health | /healthz |
Tools
create_fax_draft: Create fax draft
writes, not destructive, not idempotent
Prepare a fax to one US or Canadian fax number and get its price. This creates an unpaid draft only: nothing is sent and nothing is charged. Provide "from_name" (required: the name of the person or business sending the fax; ask the user, never guess), "to", and exactly one document source: "text" (plain text or simple Markdown, rendered to US Letter pages), "pdf_base64", or "pdf_url" (public https, 10 MB max). Optionally add a cover page. Every page gets a header line in its top margin reading "From: {from_name} via Paper Owl Fax" with the sending fax number, date and time, because federal law requires a fax to identify its sender. $1.99 covers up to 5 pages, plus $0.25 for each page after that, up to 50 pages. Returns a draft_id, the page count, the price, a preview_url showing every rendered page, a review_url, and when the draft expires (24 hours). Next, show the user the sender name, the recipient number, page count and price, and offer the preview link before asking for payment. Then either ask the user to approve the charge in chat and call send_fax, or, if your client cannot take payments, give the user the review_url to check the pages and pay there. Will not: send to more than one number, send outside the US and Canada, send unsolicited advertising, or handle medical records or other protected health information.
send_fax: Pay for and send fax
writes, destructive, idempotent
CHARGES THE USER MONEY. Charges exactly the price quoted by create_fax_draft, then sends the fax. Only call this after the user has seen the recipient, page count and price, has approved that exact charge in chat, and has confirmed the fax is not an unsolicited advertisement. Pass the draft_id, the Stripe shared payment token (spt_...) granted by that approval, and attest_not_advertisement: true. Never invent or reuse a token. The charge is never more than the quote, even if the approval allows more. If the charge fails, nothing is sent and the draft stays unpaid so the user can try again. Safe to retry: calling it again for the same draft never charges or sends twice. Set dry_run: true to check the draft and the approval without charging. If your client cannot take payments in chat, do not call this; give the user the review_url instead. After it returns, use get_fax_status to follow delivery. A fax that fails after the carrier's retries is refunded automatically.
get_fax_status: Get fax status
read only, not destructive, idempotent
Look up a fax by draft_id. Read only; changes nothing and charges nothing. Returns the status (draft, paid, sending, delivered, failed, refunded, cancelled or expired), pages, price, timestamps, a plain-language failure reason if it failed, the refund status, and a next_step sentence you can relay to the user. Use it after send_fax, or after the user pays on the review page. While sending, check again about once a minute.
cancel_fax_draft: Cancel fax draft
writes, destructive, idempotent
Cancel an unpaid fax draft by draft_id so it can no longer be paid for or sent. Nothing is charged. Only works before payment; a paid fax cannot be cancelled here. Calling it again on a cancelled draft is harmless. Use it when the user changes their mind or wants to start over with a different number or document.
Payment paths
In chat (Muse): the assistant shows a payment approval for the exact price. Stripe grants a single-use shared payment token, the assistant passes it to send_fax, and we charge exactly the quoted price. We never see card details.
Review page (Claude, ChatGPT and other clients): the assistant gives you a review link. You check the pages, confirm the fax is not an advertisement, and pay on Stripe Checkout.
Statuses
draft, paid, sending, delivered, failed (refund in progress), refunded, cancelled, expired.
Support
Vectis Studio LLC. Email erik@vectisstudio.com.