MCPサーバー

Sendpaper

io.github.ryan-tish/sendpaper
コマース・小売 公開・接続可能 MCP 2025-11-25

この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.
破壊的操作あり 冪等
入力スキーマ
{'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.
外部アクセスあり
入力スキーマ
{'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.
外部アクセスあり
入力スキーマ
{'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_...).
読み取り専用
入力スキーマ
{'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).
読み取り専用
入力スキーマ
{'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.
外部アクセスあり 冪等
入力スキーマ
{'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_…'}}}
追加
cancel_order
2026年10月4日2:40
追加
get_order
2026年10月4日2:40
追加
pay_order
2026年10月4日2:40
追加
create_letter
2026年10月4日2:40
追加
create_postcard
2026年10月4日2:40
追加
get_pricing
2026年10月4日2:40