Sendpaper
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Your agent sends real postcards and letters. You approve; we print and mail.
| Author | io.github.ryan-tish |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 1844 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Sendpaper": {
"url": "https://sendmypaper.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
get_pricingread-onlyList mail products and prices (USD, printing + USPS First-Class postage included, US addresses only).
Hints: read-only yes · destructive no · idempotent not declared · open-world no
create_postcardCreate a postcard order (4x6, 6x9 or 6x11) and get a payment link. Front layouts: a big headline on a color, one photo, a photo with a caption, or a collage of 2-4 photos; the back carries the message (handwriting, serif or sans) and addresses. Set express for USPS Priority Mail (2-3 days, tracked). Mails only after the user pays.
Parameters:
from(required) — object — Return address; printed on the mail piececontent(required) — object — Front (an image URL or a headline) and the message on the backto— object — Recipient's US mailing address (or use recipients for several people)size— string — Postcard size: 4x6, 6x9 or 6x11 (see get_pricing for prices)express— boolean — Send by express (USPS Priority Mail, usually 2–3 days, with tracking) for an extra charge; see get_pricing. Not available with certified.recipients— array — Send the same piece to several people: 2-25 US addresses, used INSTEAD of to. Each gets their own order and tracking; one payment covers all.customer_email— string — Where to send the receipt and status updatesidempotency_key— string — Any unique string; retrying with the same key returns the original order instead of creating a duplicate
Hints: read-only no · destructive no · idempotent not declared · open-world yes
create_letterCreate a printed letter order (8.5x11, mailed in a #10 envelope) and get a payment link. Either write it (content.body, up to ~3 pages, optional photo) or mail the user's own PDF (content.pdf_url, a public https link, up to 6 pages). Set certified to "certified" for USPS Certified Mail with tracking and proof of delivery, or "certified_return_receipt" to add the recipient's signature; use these when the user needs proof (tax notice replies, lease notices, disputes, demand letters). Or set express for USPS Priority Mail (not with certified). Prices: get_pricing. Mails only after the user pays.
Parameters:
from(required) — object — Return address; printed on the mail piececontent(required) — object — The letter: body text (optionally with a photo) or your own PDFto— object — Recipient's US mailing address (or use recipients for several people)express— boolean — Send by express (USPS Priority Mail, usually 2–3 days, with tracking) for an extra charge; see get_pricing. Not available with certified.certified— string — USPS Certified Mail. "certified": tracking number and proof of mailing and delivery. "certified_return_receipt": adds the recipient's signature as proof of delivery, which landlords, courts and agencies often require. "none": regular First-Class. Prices: get_pricing.recipients— array — Send the same piece to several people: 2-25 US addresses, used INSTEAD of to. Each gets their own order and tracking; one payment covers all.customer_email— string — Where to send the receipt and status updatesidempotency_key— string — Any unique string; retrying with the same key returns the original order instead of creating a duplicate
Hints: read-only no · destructive no · idempotent not declared · open-world yes
pay_orderdestructivePay for an unpaid order with a Stripe shared payment token (spt_…) the user approved, scoped to at least the order amount in USD. For an order created with recipients, this pays for the whole group at once (scope the token to batch.price). On success the order is paid and goes to print. Use only after the user approved the purchase.
Parameters:
order_id(required) — string — Order id from create_postcard or create_letter, ord_…shared_payment_token(required) — string — Stripe shared payment token, spt_…
Hints: read-only no · destructive yes · idempotent yes · open-world yes
get_orderread-onlyGet the status of a postcard or letter order by id (ord_...).
Parameters:
order_id(required) — string — Order id, ord_…
Hints: read-only yes · destructive no · idempotent not declared · open-world no
cancel_orderdestructiveCancel an order that has not been paid yet. Paid orders can be cancelled by emailing support before they are printed.
Parameters:
order_id(required) — string — Order id, ord_…
Hints: read-only no · destructive yes · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.