Serveur MCP

Sendpaper

io.github.ryan-tish/sendpaper
Commerce et retail Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Creates, prices, pays for, cancels, and tracks printed postcard and letter orders mailed within the United States.

cancel_order
Cancel an unpaid order
Cancel an order that has not been paid yet. Paid orders can be cancelled by emailing support before they are printed.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['order_id'], 'properties': {'order_id': {'type': 'string'}}}
create_letter
Create a letter
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.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['to', 'from', 'content'], 'properties': {'to': {'type': 'object', 'required': ['name', 'line1', 'city', 'state', 'zip'], 'properties': {'zip': {'type': 'string', 'pattern': '^\\d{5}(-\\d{4})?$'}, 'city': {'type': 'string', 'maxLength': 40, 'minLength': 2}, 'name': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Recipient or sender full name'}, 'line1': {'type': 'string', 'maxLength': 64, 'minLength': 3, 'description': 'Street address'}, 'line2': {'type': 'string', 'maxLength': 64, 'description': 'Apartment, suite, unit'}, 'state': {'type': 'string'}, 'company': {'type': 'string', 'maxLength': 60}}}, 'from': {'type': 'object', 'required': ['name', 'line1', 'city', 'state', 'zip'], 'properties': {'zip': {'type': 'string', 'pattern': '^\\d{5}(-\\d{4})?$'}, 'city': {'type': 'string', 'maxLength': 40, 'minLength': 2}, 'name': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Recipient or sender full name'}, 'line1': {'type': 'string', 'maxLength': 64, 'minLength': 3, 'description': 'Street address'}, 'line2': {'type': 'string', 'maxLength': 64, 'description': 'Apartment, suite, unit'}, 'state': {'type': 'string'}, 'company': {'type': 'string', 'maxLength': 60}}, 'description': 'Return address; printed on the mail piece'}, 'content': {'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'maxLength': 9000, 'minLength': 1, 'description': 'Full letter text. Plain text; blank lines separate paragraphs.'}, 'font': {'enum': ['serif', 'sans'], 'type': 'string', 'default': 'serif'}}}, 'customer_email': {'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,}$", 'description': 'Where to send the receipt and status updates'}, 'idempotency_key': {'type': 'string', 'maxLength': 120}}}
create_postcard
Create a postcard
Create a postcard order (4x6 or 6x9) 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.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['to', 'from', 'content'], 'properties': {'to': {'type': 'object', 'required': ['name', 'line1', 'city', 'state', 'zip'], 'properties': {'zip': {'type': 'string', 'pattern': '^\\d{5}(-\\d{4})?$'}, 'city': {'type': 'string', 'maxLength': 40, 'minLength': 2}, 'name': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Recipient or sender full name'}, 'line1': {'type': 'string', 'maxLength': 64, 'minLength': 3, 'description': 'Street address'}, 'line2': {'type': 'string', 'maxLength': 64, 'description': 'Apartment, suite, unit'}, 'state': {'type': 'string'}, 'company': {'type': 'string', 'maxLength': 60}}}, 'from': {'type': 'object', 'required': ['name', 'line1', 'city', 'state', 'zip'], 'properties': {'zip': {'type': 'string', 'pattern': '^\\d{5}(-\\d{4})?$'}, 'city': {'type': 'string', 'maxLength': 40, 'minLength': 2}, 'name': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Recipient or sender full name'}, 'line1': {'type': 'string', 'maxLength': 64, 'minLength': 3, 'description': 'Street address'}, 'line2': {'type': 'string', 'maxLength': 64, 'description': 'Apartment, suite, unit'}, 'state': {'type': 'string'}, 'company': {'type': 'string', 'maxLength': 60}}, 'description': 'Return address; printed on the mail piece'}, 'size': {'enum': ['4x6', '6x9'], 'type': 'string', 'default': '4x6'}, 'content': {'type': 'object', 'required': ['message'], 'properties': {'message': {'type': 'string', 'maxLength': 600, 'minLength': 1, 'description': 'Handwritten-style message on the back'}, 'front_theme': {'enum': ['ink', 'sky', 'sunset', 'forest'], 'type': 'string', 'default': 'ink', 'description': 'Color theme for a text-only front'}, 'front_headline': {'type': 'string', 'maxLength': 60, 'description': "Big text for the front if there is no image, e.g. 'Happy birthday, Sam!'"}, 'front_image_url': {'type': 'string', 'maxLength': 2000, 'description': 'https URL of a photo or design for the front (JPG or PNG)'}}}, 'customer_email': {'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,}$", 'description': 'Where to send the receipt and status updates'}, 'idempotency_key': {'type': 'string', 'maxLength': 120}}}
get_order
Check an order
Get the status of a postcard or letter order by id (ord_...).
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['order_id'], 'properties': {'order_id': {'type': 'string'}}}
get_pricing
Get prices
List mail products and prices (USD, printing + USPS First-Class postage included, US addresses only).
Lecture seule
Schéma d’entrée
{'type': 'object', 'properties': {}}
pay_order
Pay for an order
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.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['order_id', 'shared_payment_token'], 'properties': {'order_id': {'type': 'string'}, 'shared_payment_token': {'type': 'string', 'description': 'Stripe shared payment token, spt_…'}}}
Ajouté
cancel_order
4 October 2026 02:40
Ajouté
get_order
4 October 2026 02:40
Ajouté
pay_order
4 October 2026 02:40
Ajouté
create_letter
4 October 2026 02:40
Ajouté
create_postcard
4 October 2026 02:40
Ajouté
get_pricing
4 October 2026 02:40