Print and Mail Company

Print and post real paper letters to any country from your AI assistant: upload a PDF or compose one from text, with optional registered mail. Quotes, destinations and PDF checks work without an account.

Servidor MCP hospedado

npx add-mcp 'https://printandmailcompany.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Print and Mail Company for AI assistants (MCP)

Remote MCP server (connector): https://printandmailcompany.com/mcp (Streamable HTTP; MCP 2026-07-28 and 2025-era clients). Quotes, destinations and the PDF check work without an account; the account tools ask the user to sign in (OAuth 2.1 with PKCE; Client ID Metadata Documents and Dynamic Client Registration supported) the first time they are used. API keys also work. Anonymous endpoint with only the public tools: https://printandmailcompany.com/mcp/public.

Connect

No connector: prefilled letter link

Any assistant can give the user one link that opens our letter form filled in: https://printandmailcompany.com/en/write#recipient_name=…&recipient_line1=…&recipient_postal_code=…&recipient_city=…&recipient_country=DE&subject=…&body=… (use the user's language instead of en: de, fr, es or pt).

Tools

ToolSign-inPurpose
get_price_quotenot neededExact price incl. VAT to post a letter (ordinary or registered) to a country, by pages, print options and envelope.
list_destinationsnot neededCountries letters can be posted to, with postage zone, 1-page prices and delivery times.
check_pdf_marginsnot neededChecks a PDF (URL or base64) for A4 or US Letter size and the 9 mm margin; says the paper it is printed on (the size uploaded; mixed A4/Letter on A4); stores nothing.
compose_letterrequiredTurns text into an A4 letter PDF (DIN 5008 layout, the user's address in the sender block), e.g. to cancel a contract or subscription, and creates a draft with the exact price. Sends nothing.
upload_documentrequiredStores an existing PDF (public URL or base64) and returns the print check.
fix_document_marginsrequiredFixes the margins of an uploaded PDF: shrink (default, nothing lost) or crop (content in the margin is not printed); the original is kept.
create_upload_linkrequiredPrivate browser link where the user uploads a PDF from their device.
create_letterrequiredCreates a draft letter with the exact price. Nothing is sent or charged. The envelope shows the user's sender details as the sender.
send_letterrequiredPays a draft from prepaid credit and releases it to print, only after the user explicitly confirmed it; returns a payment link if credit is too low.
get_letterrequiredStatus, tracking number and price of one letter.
list_lettersrequiredRecent letters of the user.
cancel_letterrequiredCancels a letter before production; the amount returns to credit.
get_balancerequiredCurrent prepaid credit.
create_topup_linkrequiredLink to the payment page where the user adds credit or pays a draft letter by card; the tool charges nothing.

Rules for agents

  • Never send a letter without the user's explicit confirmation of recipient, content and price (send_letter requires confirm=true).
  • Letters are paid from prepaid credit only; if credit is too low, give the user the top-up link.
  • Use compose_letter to turn text into a correctly formatted letter; use check_pdf_margins before uploading a user's PDF.
  • Before the account's first letter, ask the user for their real full name (first and last name, not an alias, nickname or pseudonym) and postal address, and pass them as sender to compose_letter, create_letter or send_letter. Once the account has them, they stay as they are (sender_details "on_file"; "kept" when the sender given differs, which is not saved; compose_letter still prints its sender block as given): the user changes them in Settings → Your details.
  • REST API: https://printandmailcompany.com/api/v1 — OpenAPI: https://printandmailcompany.com/openapi.json

Troubleshooting

  • The assistant doesn't ask to sign in: expected at first. Price quotes, destinations and the PDF check work without an account; the sign-in card appears the first time an account tool is used (for example compose_letter or get_balance). In Claude Code, run /mcp to sign in. If it never appears, remove the connector and add it again.
  • "Allow access?" shows the wrong account: the page shows the email of the account signed in on printandmailcompany.com, and that account gets connected. To use another one, click Deny, sign out of the website, then connect again.
  • Email not confirmed (EMAIL_NOT_VERIFIED): connecting an assistant, sending letters and paying need a confirmed email address. Open the link in the confirmation email or request a new one in the account (https://printandmailcompany.com/en/app), then try again.
  • Paper size question (PAPER_CHOICE_REQUIRED): the PDF is US Letter size and the recipient is outside the US, Canada and US territories. Ask the user whether to shrink it to A4 (recommended) or keep US Letter (same price), then call send_letter again with paper_size "a4" or "us_letter". To the US, Canada and US territories a US Letter PDF is printed on US Letter without asking.
  • Sender details (SENDER_DETAILS_REQUIRED): no letter is paid while the account has no sender details (send_letter), and for an account without them create_letter without sender, or compose_letter with a sender block that isn't a real full name and postal address, answers it too. Ask the user for their real full name (no alias) and postal address and call the same tool again with them as sender (send_letter takes them too, and sends the same draft), or the user adds them in their account (https://printandmailcompany.com/en/app/settings, "Your details"). If the user's real name is refused, they write to support@printandmailcompany.com: we check it and set it for them.
  • Not enough credit (PAYMENT_REQUIRED): send_letter returns pay_url, a link to pay that letter by card on the website; or add credit at https://printandmailcompany.com/en/app/wallet and call send_letter again. Assistants never pay and never see card details.
  • Disconnect: Account → API & AI assistants → Connected apps (https://printandmailcompany.com/en/app/developers) → Disconnect ends the assistant's access at once; its next account tool call asks to sign in again. Removing the connector in Claude or ChatGPT also works.
  • ChatGPT answers from web search instead of using the tools: add the plugin to the chat first (+ in the message box, or @-mention it), then ask again.
  • Rate limit reached (RATE_LIMITED): too many requests in a short time. Without sign-in the limits apply per IP address, which other users may share (hosted assistants call from a few shared addresses); retry after retry_after_seconds (at most a minute), or sign in. Signed-in accounts have their own hourly limits on quotes, PDF checks and uploads ("Rate limit reached, try again later.").
  • PDF rejected: up to 4 MB, A4 or US Letter pages, 9 mm free on every side (fix_document_margins can shrink or crop; compose_letter always passes). pdf_base64 only up to about 3 MB; larger files: pdf_url (public https link) or create_upload_link.

Support