A print-on-demand MCP server that lets an assistant quote, validate, order and track printed PDFs (books, wall charts, cards) shipped within India.
What you can do
Browse the catalog of printable SKUs, formats, trim sizes, page limits, INR prices and shipping coverage, and get a price quote or check whether a PDF will be accepted. Start a PDF upload and receive a signed upload URL plus size limit, then validate the PDF for page count, trim size, blocking errors and non-blocking warnings before paying. Create a print order for a validated upload and get an order ID, status, amount and a payment link to hand to a human. Check an order's status, tracking number and, while unpaid, the payment link again. Cancel an order before printing, and apply for an invoiced enterprise account for volume printing.
When to use it
Use it when you want an assistant to turn a finished PDF into a physical printed product delivered in India, for example quoting a price, checking printability, placing an order and following it to delivery. It suits agent or platform workflows that need print fulfilment behind their own checkout.
Requirements
Remote streamable HTTP endpoint; no local runtime or package. No authentication is declared for basic use, but order lookup and cancellation need the order_token returned by create_order, or a platform API key sent as an Authorization Bearer header. An enterprise application requires a valid India GSTIN. Payment happens through the returned Razorpay link.
Before you install
Creating an order leads to real payment: the returned payment link must be paid by a human via UPI or cards, and orders are physical purchases with money spent. Cancellation is only possible before printing, and later cancellation needs the API key that created the order. Order tokens and platform API keys are credentials and should be kept private. Uploads go to a signed third-party URL, and shipping is limited to India.
Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/app.toongen%2Fmassprint/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.
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.
Takes no parameters.
create_upload
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 creating extras. An API key (see apply_enterprise) lifts both limits.
Takes no parameters.
validate_pdf
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.
Parametersupload_idrequired
create_order
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.
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_...).
Parametersorder_idrequiredorder_token
cancel_order
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 moves no money, and it releases the order's client_reference — replaying that reference afterwards creates a new order and prints it. If the order moved on before the cancel landed you get not_cancellable naming its new status, never a false "canceled".
Parametersorder_idrequiredorder_token
apply_enterprise
Apply for an enterprise (invoiced) account — for platforms printing at volume behind their own checkout. Enterprise orders auto-confirm with no payment link, are priced at a platform discount off retail (default 25% below), and are settled monthly. Requires a valid India GSTIN for tax invoicing. This does NOT issue a key immediately: the application is reviewed and, once approved, an API key is emailed to contact_email. Use this only when a human has asked to set up a business/enterprise print account.
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Reached in the last 30 daysRequired25 pts
Auth declaredRequired10 pts
Tools listedRequired15 pts
DescriptionRequired15 pts
Logo10 pts
Documentation15 pts
Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.
License10 pts
Declare a license in the repository or the registry entry.