Letters, certified mail and postcards — printed, stamped and posted. Give your agent (Claude, Codex, Gamut) one endpoint and it can put paper in the post, without you touching a printer.
It writes the letter, checks the address is real, and hands back a PDF of exactly what will be printed — plus the price.
// the agent calls prepare_letter({ to: { name: "IRS", … }, content: { body: "# Response to CP2000…" }, extra_service: "certified" })
Only after you have seen the proof and the price. The second call takes nothing but the token from the first, so what gets printed is what you saw.
// after you say yes send_letter({ confirm_token: "eyJkcmFmdF9pZCI6…" }) → { item_id, tracking_number, expected_delivery_date }
One endpoint: https://mcp.postalmcp.com/mcp —
sign in with Google or GitHub, add a card, done.
A whole category of work stops at the mailbox — not because the thinking is hard, but because someone has to print, stamp and walk.
Agencies, insurers and banks still want paper — and often want it certified, with a signature on record. Your agent drafts it, mails it certified, and hands you the USPS tracking number and the proof of what was sent.
Upload a CSV, write the design once with {{placeholders}},
and every recipient gets their own copy — including per-recipient artwork, so a
landscaper can mail each homeowner a rendering of their yard.
send_letter accepts a token and nothing else — no address,
no content, no price. It can only confirm a piece you have already been shown, so
there is no combination of plausible arguments that mails something unexpected.
Tokens are single-use and expire in 30 minutes.
Not a preview — the real rendered file, produced by the same printer that will print it. Address wrong, artwork the wrong size, letter too long? You find out for free.
Write markdown and get correct margins and a clear USPS address window automatically. Or supply a PDF, DOCX, PNG or JPEG and we print that instead.
Every carrier scan lands on a timeline you can query, and we email you when a piece is delivered or comes back undeliverable.
Payment is captured before anything reaches a printer, and every cent is either dispatched or refunded. If part of a batch can't be produced, that part comes back automatically.
Per-recipient, per-day, per-batch and daily-spend ceilings, plus a public do-not-mail list anyone can add themselves to.
Each mailable thing gets a free prepare_* and a paid send_*.
| Tool | What it does |
|---|---|
| get_catalog | Products, prices, artwork specs and what is available in each country. |
| validate_address | Is this address real and deliverable? Free, and returns the carrier's corrected spelling. |
| prepare_letter / send_letter | One letter. Optional certified, certified with return receipt, or registered. |
| prepare_letters / send_letters | The same letter to many recipients, personalised from a list or CSV. |
| prepare_postcard / send_postcard | One postcard: 4×6, 6×9 or 6×11. |
| prepare_postcards / send_postcards | A postcard campaign, batched and personalised. |
| list_sent_items | Everything sent, newest first, with filters and pagination. |
| check_item_status | One piece: status, tracking timeline, proof PDF, delivery estimate. |
| cancel_item | Cancel and refund, while the piece is still in the cancellation window. |
Printing, paper and postage included — there is no separate postage charge.
6×9 postcards $2.07 · 6×11 $2.31 · certified with return receipt +$15.54 · registered +$36.40.
Call get_catalog for the live list.
In Claude Code:
claude mcp add --transport http postalmcp https://mcp.postalmcp.com/mcp
In claude.ai or any other MCP client, add it as a custom connector using the same URL.
Your client opens our sign-in page. Continue with Google or GitHub, then add a card through Stripe — card details go straight to Stripe and never touch our servers. You are charged per piece, only when mail is actually sent.
“Write a letter to my insurer disputing claim 44812 and send it certified.” Your agent will come back with a price and a proof before anything is printed.
Not by accident. Sending is deliberately two calls: the first renders and prices the piece and charges nothing, the second takes only the resulting token. An agent cannot construct a send from scratch — it can only confirm something that was already prepared, and the tool descriptions tell it to show you the price and proof first. Every send also appears in your dashboard and in a confirmation email.
Letters and 4×6 postcards go worldwide. USPS special services — certified, certified with return receipt, registered, prepaid return envelopes — and the larger 6×9 and 6×11 postcards are US destinations only, and are refused for other countries before you are charged.
Pieces print the next business day and typically arrive 4–6 business days later within the US. International mail takes longer and is less predictable. Registered mail is the slowest option and its tracking only appears about three business days after sending.
Yes, for a few minutes — until the job enters production at the printer. Call
cancel_item and the full amount is refunded. After that the
piece will be mailed, and the tool tells you so plainly rather than pretending.
Use the do-not-mail page. You do not need an account. We block by name and address together, so it will not affect anyone else who receives mail at your address, and we store only a one-way hash — the list is not itself a mailing list.
Threats, extortion, mail impersonating a government agency or court, and doxxing. Content is screened before anything is printed. Ordinary angry correspondence — a furious complaint, a legal demand letter, an appeal accusing an agency of error — is entirely fine, and is exactly what this is for.