Sendpaper
Your agent sends real postcards and letters. You approve; we print and mail.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"sendpaper": {
"url": "https://sendmypaper.com/mcp"
}
}
}Remote endpoints
https://sendmypaper.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢get_pricing
List mail products and prices (USD, printing + USPS First-Class postage included, US addresses only).
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"cents": {
"type": "number"
},
"price": {
"type": "string",
"description": "Display price, e.g. $2.99"
}
},
"required": [
"id",
"name",
"cents",
"price"
],
"additionalProperties": {}
}
},
"payment": {
"type": "object",
"properties": {
"options": {
"type": "array",
"items": {
"type": "string"
}
},
"currency": {
"type": "string"
},
"stripe_network_id": {
"description": "Scope Stripe shared payment tokens to this network id",
"type": "string"
}
},
"required": [
"options",
"currency"
],
"additionalProperties": {}
},
"first_order_discount": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"description": {
"type": "string"
}
},
"required": [
"amount_cents",
"description"
],
"additionalProperties": false
},
"letter_photo": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"description": {
"type": "string"
}
},
"required": [
"amount_cents",
"description"
],
"additionalProperties": false,
"description": "Surcharge for a letter with a photo (prints in color)"
}
},
"required": [
"products",
"payment",
"first_order_discount",
"letter_photo"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡create_postcard(size, to, from, customer_email, idempotency_key, ...)
Create a postcard order (4x6, 6x9 or 6x11) and get a payment link. The front is an image URL or a big headline; the back carries the message and addresses. Mails only after the user pays.
Input Schema
{
"type": "object",
"properties": {
"size": {
"default": "4x6",
"description": "Postcard size: 4x6, 6x9 or 6x11 (see get_pricing for prices)",
"type": "string",
"enum": [
"4x6",
"6x9",
"6x11"
]
},
"to": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Recipient or sender full name"
},
"company": {
"description": "Company name, printed under the person's name",
"type": "string",
"maxLength": 60
},
"line1": {
"type": "string",
"minLength": 3,
"maxLength": 64,
"description": "Street address"
},
"line2": {
"description": "Apartment, suite, unit",
"type": "string",
"maxLength": 64
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "City"
},
"state": {
"description": "Two-letter US state code, e.g. NY",
"type": "string"
},
"zip": {
"type": "string",
"pattern": "^\\d{5}(-\\d{4})?$",
"description": "5-digit US ZIP code, or ZIP+4"
}
},
"required": [
"name",
"line1",
"city",
"state",
"zip"
],
"description": "Recipient's US mailing address"
},
"from": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Recipient or sender full name"
},
"company": {
"description": "Company name, printed under the person's name",
"type": "string",
"maxLength": 60
},
"line1": {
"type": "string",
"minLength": 3,
"maxLength": 64,
"description": "Street address"
},
"line2": {
"description": "Apartment, suite, unit",
"type": "string",
"maxLength": 64
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "City"
},
"state": {
"description": "Two-letter US state code, e.g. NY",
"type": "string"
},
"zip": {
"type": "string",
"pattern": "^\\d{5}(-\\d{4})?$",
"description": "5-digit US ZIP code, or ZIP+4"
}
},
"required": [
"name",
"line1",
"city",
"state",
"zip"
],
"description": "Return address; printed on the mail piece"
},
"customer_email": {
"description": "Where to send the receipt and status updates",
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"idempotency_key": {
"description": "Any unique string; retrying with the same key returns the original order instead of creating a duplicate",
"type": "string",
"maxLength": 120
},
"content": {
"type": "object",
"properties": {
"front_image_url": {
"description": "https URL of a photo or design for the front (JPG or PNG)",
"type": "string",
"maxLength": 2000
},
"front_headline": {
"description": "Big text for the front if there is no image, e.g. 'Happy birthday, Sam!'",
"type": "string",
"maxLength": 60
},
"front_theme": {
"default": "ink",
"description": "Color theme for a text-only front",
"type": "string",
"enum": [
"ink",
"sky",
"sunset",
"forest"
]
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 600,
"description": "Handwritten-style message on the back"
}
},
"required": [
"message"
],
"description": "Front (an image URL or a headline) and the message on the back"
}
},
"required": [
"to",
"from",
"content"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id, ord_…"
},
"object": {
"type": "string",
"enum": [
"postcard",
"letter"
]
},
"product": {
"type": "string",
"description": "Product id, e.g. postcard_4x6 or letter_certified"
},
"product_name": {
"type": "string"
},
"certified": {
"type": "string",
"description": "none, certified or certified_return_receipt"
},
"status": {
"type": "string",
"description": "awaiting_payment, paid, printing, mailed, cancelled or refunded"
},
"status_detail": {
"type": "string",
"description": "Plain-English status to show the user"
},
"price": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"currency": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"amount_cents",
"currency",
"display"
],
"additionalProperties": false
},
"checkout_url": {
"description": "Where the user pays; null once paid or cancelled",
"type": [
"string",
"null"
]
},
"order_url": {
"type": "string",
"description": "Order status page"
},
"preview_url": {
"type": "string",
"description": "Exact print preview"
},
"tracking": {
"anyOf": [
{
"type": "object",
"properties": {
"number": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"number",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "USPS tracking, for Certified Mail once printed"
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"display": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"amount_cents",
"display",
"reason"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "First-order discount, already taken off price; null when none applies"
}
},
"required": [
"id",
"object",
"product",
"product_name",
"certified",
"status",
"status_detail",
"price",
"checkout_url",
"order_url",
"preview_url",
"tracking",
"discount"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟡create_letter(to, from, customer_email, idempotency_key, content, ...)
Create a printed letter order (up to 3 pages, 8.5x11, mailed in a #10 envelope) and get a payment link. Mails only after the user pays. Set certified to "certified" ($14.99) for USPS Certified Mail with tracking and proof of delivery, or "certified_return_receipt" ($19.99) to add the recipient's signature; use these when the user needs proof (landlord notices, legal or tax replies, disputes). Regular letters are $4.99.
Input Schema
{
"type": "object",
"properties": {
"to": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Recipient or sender full name"
},
"company": {
"description": "Company name, printed under the person's name",
"type": "string",
"maxLength": 60
},
"line1": {
"type": "string",
"minLength": 3,
"maxLength": 64,
"description": "Street address"
},
"line2": {
"description": "Apartment, suite, unit",
"type": "string",
"maxLength": 64
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "City"
},
"state": {
"description": "Two-letter US state code, e.g. NY",
"type": "string"
},
"zip": {
"type": "string",
"pattern": "^\\d{5}(-\\d{4})?$",
"description": "5-digit US ZIP code, or ZIP+4"
}
},
"required": [
"name",
"line1",
"city",
"state",
"zip"
],
"description": "Recipient's US mailing address"
},
"from": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Recipient or sender full name"
},
"company": {
"description": "Company name, printed under the person's name",
"type": "string",
"maxLength": 60
},
"line1": {
"type": "string",
"minLength": 3,
"maxLength": 64,
"description": "Street address"
},
"line2": {
"description": "Apartment, suite, unit",
"type": "string",
"maxLength": 64
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "City"
},
"state": {
"description": "Two-letter US state code, e.g. NY",
"type": "string"
},
"zip": {
"type": "string",
"pattern": "^\\d{5}(-\\d{4})?$",
"description": "5-digit US ZIP code, or ZIP+4"
}
},
"required": [
"name",
"line1",
"city",
"state",
"zip"
],
"description": "Return address; printed on the mail piece"
},
"customer_email": {
"description": "Where to send the receipt and status updates",
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"idempotency_key": {
"description": "Any unique string; retrying with the same key returns the original order instead of creating a duplicate",
"type": "string",
"maxLength": 120
},
"content": {
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 9000,
"description": "Full letter text. Plain text; blank lines separate paragraphs."
},
"font": {
"default": "serif",
"description": "Typeface for the letter body",
"type": "string",
"enum": [
"serif",
"sans"
]
},
"image_url": {
"description": "Optional photo printed at the top of the letter (https JPG or PNG). A letter with a photo prints in color, for a small surcharge (see get_pricing).",
"type": "string",
"maxLength": 2000
}
},
"required": [
"body"
],
"description": "The letter text and font"
},
"certified": {
"default": "none",
"description": "USPS Certified Mail. \"certified\" ($14.99): tracking number and proof of mailing and delivery. \"certified_return_receipt\" ($19.99): adds the recipient's signature as proof of delivery, which landlords, courts and agencies often require. \"none\" ($4.99): regular First-Class.",
"type": "string",
"enum": [
"none",
"certified",
"certified_return_receipt"
]
}
},
"required": [
"to",
"from",
"content"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id, ord_…"
},
"object": {
"type": "string",
"enum": [
"postcard",
"letter"
]
},
"product": {
"type": "string",
"description": "Product id, e.g. postcard_4x6 or letter_certified"
},
"product_name": {
"type": "string"
},
"certified": {
"type": "string",
"description": "none, certified or certified_return_receipt"
},
"status": {
"type": "string",
"description": "awaiting_payment, paid, printing, mailed, cancelled or refunded"
},
"status_detail": {
"type": "string",
"description": "Plain-English status to show the user"
},
"price": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"currency": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"amount_cents",
"currency",
"display"
],
"additionalProperties": false
},
"checkout_url": {
"description": "Where the user pays; null once paid or cancelled",
"type": [
"string",
"null"
]
},
"order_url": {
"type": "string",
"description": "Order status page"
},
"preview_url": {
"type": "string",
"description": "Exact print preview"
},
"tracking": {
"anyOf": [
{
"type": "object",
"properties": {
"number": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"number",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "USPS tracking, for Certified Mail once printed"
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"display": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"amount_cents",
"display",
"reason"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "First-order discount, already taken off price; null when none applies"
}
},
"required": [
"id",
"object",
"product",
"product_name",
"certified",
"status",
"status_detail",
"price",
"checkout_url",
"order_url",
"preview_url",
"tracking",
"discount"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🔴pay_order(order_id, shared_payment_token)
Pay for an unpaid order with a Stripe shared payment token (spt_…) the user approved, scoped to at least the order amount in USD. On success the order is paid and goes to print. Use only after the user approved the purchase.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id from create_postcard or create_letter, ord_…"
},
"shared_payment_token": {
"type": "string",
"description": "Stripe shared payment token, spt_…"
}
},
"required": [
"order_id",
"shared_payment_token"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id, ord_…"
},
"object": {
"type": "string",
"enum": [
"postcard",
"letter"
]
},
"product": {
"type": "string",
"description": "Product id, e.g. postcard_4x6 or letter_certified"
},
"product_name": {
"type": "string"
},
"certified": {
"type": "string",
"description": "none, certified or certified_return_receipt"
},
"status": {
"type": "string",
"description": "awaiting_payment, paid, printing, mailed, cancelled or refunded"
},
"status_detail": {
"type": "string",
"description": "Plain-English status to show the user"
},
"price": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"currency": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"amount_cents",
"currency",
"display"
],
"additionalProperties": false
},
"checkout_url": {
"description": "Where the user pays; null once paid or cancelled",
"type": [
"string",
"null"
]
},
"order_url": {
"type": "string",
"description": "Order status page"
},
"preview_url": {
"type": "string",
"description": "Exact print preview"
},
"tracking": {
"anyOf": [
{
"type": "object",
"properties": {
"number": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"number",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "USPS tracking, for Certified Mail once printed"
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"display": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"amount_cents",
"display",
"reason"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "First-order discount, already taken off price; null when none applies"
}
},
"required": [
"id",
"object",
"product",
"product_name",
"certified",
"status",
"status_detail",
"price",
"checkout_url",
"order_url",
"preview_url",
"tracking",
"discount"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢get_order(order_id)
Get the status of a postcard or letter order by id (ord_...).
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id, ord_…"
}
},
"required": [
"order_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id, ord_…"
},
"object": {
"type": "string",
"enum": [
"postcard",
"letter"
]
},
"product": {
"type": "string",
"description": "Product id, e.g. postcard_4x6 or letter_certified"
},
"product_name": {
"type": "string"
},
"certified": {
"type": "string",
"description": "none, certified or certified_return_receipt"
},
"status": {
"type": "string",
"description": "awaiting_payment, paid, printing, mailed, cancelled or refunded"
},
"status_detail": {
"type": "string",
"description": "Plain-English status to show the user"
},
"price": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"currency": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"amount_cents",
"currency",
"display"
],
"additionalProperties": false
},
"checkout_url": {
"description": "Where the user pays; null once paid or cancelled",
"type": [
"string",
"null"
]
},
"order_url": {
"type": "string",
"description": "Order status page"
},
"preview_url": {
"type": "string",
"description": "Exact print preview"
},
"tracking": {
"anyOf": [
{
"type": "object",
"properties": {
"number": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"number",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "USPS tracking, for Certified Mail once printed"
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"display": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"amount_cents",
"display",
"reason"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "First-order discount, already taken off price; null when none applies"
}
},
"required": [
"id",
"object",
"product",
"product_name",
"certified",
"status",
"status_detail",
"price",
"checkout_url",
"order_url",
"preview_url",
"tracking",
"discount"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🔴cancel_order(order_id)
Cancel an order that has not been paid yet. Paid orders can be cancelled by emailing support before they are printed.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id, ord_…"
}
},
"required": [
"order_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id, ord_…"
},
"object": {
"type": "string",
"enum": [
"postcard",
"letter"
]
},
"product": {
"type": "string",
"description": "Product id, e.g. postcard_4x6 or letter_certified"
},
"product_name": {
"type": "string"
},
"certified": {
"type": "string",
"description": "none, certified or certified_return_receipt"
},
"status": {
"type": "string",
"description": "awaiting_payment, paid, printing, mailed, cancelled or refunded"
},
"status_detail": {
"type": "string",
"description": "Plain-English status to show the user"
},
"price": {
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"currency": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"amount_cents",
"currency",
"display"
],
"additionalProperties": false
},
"checkout_url": {
"description": "Where the user pays; null once paid or cancelled",
"type": [
"string",
"null"
]
},
"order_url": {
"type": "string",
"description": "Order status page"
},
"preview_url": {
"type": "string",
"description": "Exact print preview"
},
"tracking": {
"anyOf": [
{
"type": "object",
"properties": {
"number": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"number",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "USPS tracking, for Certified Mail once printed"
},
"discount": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"display": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"amount_cents",
"display",
"reason"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "First-order discount, already taken off price; null when none applies"
}
},
"required": [
"id",
"object",
"product",
"product_name",
"certified",
"status",
"status_detail",
"price",
"checkout_url",
"order_url",
"preview_url",
"tracking",
"discount"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}Community
Evidence