{"serverId":"mcp-registry/com.themassprint/massprint","tools":[{"name":"cancel_order","fixed":{"name":"cancel_order","description":"Cancel an order, stopping it before it is printed. With the order_token from create_order this works while the order is awaiting_payment. A platform that sends its own API key (Authorization: Bearer mp_live_...) can additionally cancel an order THAT KEY created while it is confirmed or printing — that is how you stop a press when your customer cancels on your side. shipped and delivered can never be canceled; that is a refund, contact support (see get_catalog). Canceling stops production but mov","inputSchema":{"type":"object","required":["order_id"],"properties":{"order_id":{"type":"string"},"order_token":{"type":"string","description":"The token returned once by create_order. Optional if you send the API key that created the order instead."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"create_order","fixed":{"name":"create_order","description":"Create a print order for a validated upload. Validates everything BEFORE any payment link is minted. Returns { order, order_token } — the order object has order_id, status, amount, and payment_url (the Razorpay link, present while awaiting_payment). Give payment_url to the human to pay (UPI/cards/netbanking). SAVE order_token — it is shown only once and is required for get_order and cancel_order. The order confirms automatically after payment; unpaid orders expire after 72 hours.","inputSchema":{"type":"object","required":["upload_id","format","email","address"],"properties":{"email":{"type":"string","description":"Buyer email; receives the Razorpay payment notification."},"copies":{"type":"integer","default":1,"maximum":20,"minimum":1},"format":{"enum":["paperback","hardcover","sticker-a3","greeting-card-a5"],"type":"string","description":"paperback/hardcover: bound storybook (20-60 page PDF). sticker-a3: single-sheet A3 portrait sticker / wall chart (exactly 1 page, 842×1191 pt). greeting-card-a5: folded A5 greeting card, one A4-landscape sheet printed duplex (exactly 2 pages, 859×612 pt incl. 3 mm bleed)."},"address":{"type":"object","required":["name","line1","city","state","pincode","phone"],"properties":{"city":{"type":"string"},"name":{"type":"string"},"line1":{"type":"string"},"line2":{"type":"string"},"phone":{"type":"string","description":"India mobile, 10 digits, optional +91 prefix"},"state":{"type":"string"},"pincode":{"type":"string","description":"6-digit India PIN code"}},"description":"India shipping address (V1 ships within India only).","additionalProperties":false},"upload_id":{"type":"string","description":"upload_id of a PDF that passed validation."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":492,"tokensAfter":492},{"name":"create_upload","fixed":{"name":"create_upload","description":"Start a PDF upload. Returns {upload_id, put_url, expires_at, max_bytes}. HTTP PUT the raw PDF bytes to put_url (Content-Type: application/pdf, no auth needed — the URL is signed). The PUT response includes the validation report. Then pass upload_id to create_order. Keyless use is bounded per calling origin: 20 create_upload calls per hour, at most 5 unused uploads open at a time, and put_url expires in 2 hours — so PUT the bytes promptly and reuse an upload_id you already hold instead of creatin","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"get_catalog","fixed":{"name":"get_catalog","description":"List what can be printed: SKUs (storybook books, sticker-a3 wall charts, greeting-card-a5 folded cards), formats, supported trim sizes, page-count limits, prices (INR, shipping included), and shipping coverage (India only). Call this first to quote a price or check whether a PDF will be accepted.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":115,"tokensAfter":115},{"name":"get_order","fixed":{"name":"get_order","description":"Check an order: status (awaiting_payment → confirmed → printing → shipped → delivered), tracking number once shipped, and — while unpaid — the payment_url again (so you can always re-answer \"how do I pay\"). Requires the order_token from create_order, or the API key that created the order (Authorization: Bearer mp_live_...).","inputSchema":{"type":"object","required":["order_id"],"properties":{"order_id":{"type":"string"},"order_token":{"type":"string","description":"The token returned once by create_order. Optional if you send the API key that created the order instead."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":180,"tokensAfter":180},{"name":"validate_pdf","fixed":{"name":"validate_pdf","description":"Get the print-validation report for an uploaded PDF before paying: page count, trim size, hard errors (blocking) and soft warnings (non-blocking). Every error includes a `resolution` explaining how to fix it. Free to call; use it to check printability before create_order.","inputSchema":{"type":"object","required":["upload_id"],"properties":{"upload_id":{"type":"string","description":"The upload_id returned by create_upload."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":139,"tokensAfter":139}],"toolsChanged":6,"tokensSaved":0,"todo":[{"tool":"cancel_order","params":["order_id"]},{"tool":"create_order","params":["copies"]},{"tool":"get_order","params":["order_id"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}