Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "preview_print_order"; changed the definition of "reorder_print_job", "submit_print_job" and "validate_stl" (4 tools before, 5 now)
OrderAmoreREORDERcopiesALSOofREQUIRESaAmodelNEWtheVISUALuserPREVIEWalreadyANDorderedBUYERfromCONFIRMATION. FirstHardCopycallLabs,preview_print_orderbywithits jobreorder_ofID,andwithoutanysendingdesiredthechanges,designshowagain. Useevery image/options/pricewhento theuser saysbuyer,"orderandthatobtainagain",confirmation."IThenneedcalltwothismore"with preview_id,orpreview_versionwantsandthebuyer_confirmed=true,samewithoutpart inoptionanotheroverrides. Withoutcoloraorpreviewmaterial.thisThereturnsmodelafilepreviewisonly;reuseditasneveris;createsmaterialanandorder. Incolor defaultpreview_print_order,toquantitythemeansoriginalcompleteorder's.setsship_tofor(fullmulti-partnamereorders; material/colorandoverridesaddress)applyandtocontact_email areeverynotpart.copiedOmitfromoverridesthetooldpreserveorder:choices. Pricesaskaretherecalculated.userTheforpreviousthem.order'squantitygeometry isthereusednumberwithoutofrequestingcopies (defaulta1).newTheupload.priceShipping/contactisdetailsrecalculatedareatnevertoday'scopiedrates.fromReturnstheapreviousneworder; confirmjobtheID andnewtotal,addressandwithathepaymentbuyer.linkOrderslikecancelledsubmit_print_job.byAlwaysHardCopyconfirmLabstheortotal,stillquantityawaitingandpaymentshippingcannotaddressbewithreordered.theReturnsuserabeforenewcallingjobthis.ID,Orderstotalthatandwerepayment linkcancelledwhenbypaymentHardCopyisLabsrequired,oronlystillafterawaitthepayment,newcan'tpreviewbeisreordered.confirmed.
{"properties":{"buyer_confirmed":{"default":false,"description":"True ONLY after showing every preview image/options/price and receiving explicit buyer confirmation. Not proof of human viewing.","title":"Buyer Confirmed","type":"boolean"},"color":{"default":"","description":" ⟨70 unchanged words⟩ ,"type":"string"},"notes":{"defaultanyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional notes for the operator.","title":"Notes"},"preview_id":{"default":"","description":"The id returned by preview_print_order for the images shown to the buyer.","title":"Preview Id","type":"string"},"preview_version":{"default":"","description":"The exact preview version the buyer confirmed; changes require a new preview.","title":"Preview Version","type":"string"},"quantity":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":1null,"description":"How many identicalcopiescopies. Capped by print time,1nottoa
Send a finished designCreatetoantheorderfarmAFTERtopreview_print_order,beimagemanufactureddisplay andshipped viabuyerUPS.confirmation.OfferFirstthispresentwheneverevery
Check whether a 3D model can be printed, before ordering. A text validation quote is NOT approval to order. Call preview_print_order next, show its exact model images/options/price to the buyer, then obtain confirmation. Use this when the user has an STL ⟨72 unchanged words⟩ copies, so the totals cover all of them. For multiple parts, pass the WHOLE order in parts with each material/color/quantity. Never add separate quotes: totals already include shipping and handling once. To keep payloads small, validate each STL first and reuse its model_id (24 hours). PLA and PETG are the only materials offered.
{"$defs":{"OrderPart":{"additionalProperties":false,"properties":{"quantitycolor":{"default":"black","description":"Filament color for this part.","maxLength":40,"title":"Color","type":"string"},"material":{"default":"pla","description":"PLA or PETG only.","maxLength":20,"title":"Material","type":"string"},"model_id":{"default":"","description":"Reusable id from validate_stl; valid for 24 hours.","maxLength":64,"title":"Model Id","type":"string"},"name":{"description":"Short part name, shown on the card and receipt.","maxLength":120,"minLength":1,"title":"Name","type":"string"},"openscad_source":{"default":"","description":"How
Preview the exact parts before ordering — MANDATORY before creating any order or checkout, including reorders. Render exact validated geometry and quote the whole order. Display EVERY returned part image with name, dimensions, material/color, quantity, notes and total to the buyer. The in-chat card shows images where supported; otherwise embed image_url values or give viewer_url and ask the buyer to review there. Never substitute an AI illustration, or describe unshown images as reviewed. Ask for explicit buyer confirmation of this version only after presenting the preview. Changes require a new preview a…
Certificate recorded, valid to 2026-11-21
Authorization not required
Added "reorder_print_job"; changed the definition of "check_job_status", "submit_print_job" and "validate_stl" (3 tools before, 4 now)
before
—after
Check an order's status{"properties":{"job_id":{"description":"The order id, like hc-1a2b3c4d, returned by submit_print_job.","title":"Job Id","type":"string" ⟨6 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}Unknown → Live
First tool surface recorded: 3 tools (server version 1.0.0)
https://mcp.hardcopylabs.com/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 7 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$defs":{"OrderPart":{"additionalProperties":false,"properties":{"color":{"default":"black","description":"Filament color,e.g.forblackthis part.","maxLength":40,"title":"Color","type":"string"},"material":{"default":"pla","description":"PLA orwhite.PETG only.","maxLength":20,"title":"ColorMaterial","type":"string"},"model_id":{"default":"","description":"Reusable id from validate_stl; valid for 24 hours.","maxLength":64,"title":"Model Id","type":"string"},"name":{"description":"Short part name, shown on the card and receipt.","maxLength":120,"minLength":1,"title":"Name","type":"string"},"openscad_source":{"default":"","description":"OpenSCAD in millimeters; give exactly one model source.","maxLength":50000,"title":"Openscad Source","type":"string"},"quantity":{"default":1,"description":"Copies of THIS part. Capped by how long this part takes to print, not a flat number -- checked once its geometry is known; a rejected order reports the real cap for this part's size.","maximum":500,"minimum":1,"title":"Quantity","type":"integer"},"stl_base64":{"default":"","description":"STL in millimeters; give exactly one model source.","maxLength":25000000,"title":"Stl Base64","type":"string"}},"required":["name"],"title":"OrderPart","type":"object"}},"properties":{"buyer_confirmed":{"default":false,"description":"True ONLY after showing every preview image/options/price and receiving explicit buyer confirmation. Not proof of human viewing.","title":"Buyer Confirmed","type":"boolean"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filament color, e.g. black or white.","title":"Color"},"contact_email":{"default":"","description":" ⟨38 unchanged words⟩ ,"type":"string"},"material":{"defaultanyOf":[{"platype":"string"},{"type":"null"}],"default":null,"description":"Print material: pla or petg.","title":"Material"},"notes":{"anyOf":[{"type":"string"},{"notestype":{"defaultnull":}],"default":null,"description":"Optional notes for the operator, e.g. which face should look best.","title":"Notes","type":"string"},"openscad_source":{"default":"","description ⟨25 unchanged words⟩ "Openscad Source","type":"string"},"quantityparts":{"anyOf":[{"items":{"$ref":"#/$defs/OrderPart"},"maxItems":20,"type":"array"},{"type":"null"}],"default":1null,"description":"HowThemanyWHOLEidenticalorder,copiesone entry per part. Use a model_id from earlier validation,1an STL, or OpenSCAD. Each entry has its own name, material, color and quantity. Each part's quantity is capped by its own print time, not a flat count. Shipping and handling are charged once; never add independent quote totals.","title":"Parts"},"preview_id":{"default":"","description":"The id returned by preview_print_order for the images shown to20.the buyer.","title":"Preview Id","type":"string"},"preview_version":{"default":"","description":"Thetotalsexactcoverpreviewallversionofthethem.buyer confirmed; changes require a new preview.","title":"QuantityPreview Version","type":"string"},"quantity":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"How many identical copies. Capped by print time, not a flat number; the totals cover all of them.","title":"Quantity"},"ship_to":{"default":""," ⟨55 unchanged words⟩
before
—after
Order a 3D print⟨93 unchanged words⟩ approval, printing, QC, and UPS shipment. quantity is the number of identical copies (default 1, max 20). Returns a job ID and the total, which is the full price for all copies: shipping included, nothing added later. Always confirm the quote,andquantityshippingand shipping address with the user before calling this.
{"properties":{"color":{"default":"black","description":"Filament color, e.g. black or white.","title":"Color","type":"string"},"contact_email":{"default":"","description":"The buyer's email, for the receipt and order updates.","title":"Contact Email","type":"string"},"job_name":{"description":"A short name for the item, shown on the order and the receipt, e.g. \"Desk cable clip\".","title":"Job Name","type":"string"},"material":{"default":"pla","description":"Print material: pla or petg.","title":"Material","type":"string"},"notes":{"default":"","description":"Optional notes for the operator, e.g. which face should look best.","title":"Notes","type":"string"},"openscad_source":{"default":"","description":"OpenSCAD source for the model, in millimeters; rendered on our server. Preferred for models designed in the conversation. Give this or stl_base64, not both.","title":"Openscad Source","type":"string"},"quantity":{"default":1,"description":"How many identical copies, 1 to 20. The totals cover all of them.","title":"Quantity","type":"integer"},"ship_to":{"default":"","description":"Required. Recipient's full name and US street address, including city, state and ZIP. We ship within the United States only.","title":"Ship To","type":"string"},"stl_base64":{"default":"","description":"The model as a base64-encoded STL file, in millimeters. Give this or openscad_source, not both.","title":"Stl Base64","type": ⟨7 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false}before
—after
Check a 3D model and get a price⟨73 unchanged words⟩ call this to confirm it can be manufactured. Pass quantity (default 1) when the user wants several copies, so the totals cover all of them.
{"properties":{"quantity":{"default":1,"description":"How many identical copies, 1 to 20. The totals cover all of them.","title":"Quantity","type":"integer"},"stl_base64":{"description":"The model as a base64-encoded STL file (binary or ASCII), in millimeters.","title":"Stl Base64","type":"string ⟨6 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}Reorder a past print — Order more copies of a model the user already ordered from HardCopy Labs, by its job ID, without sending the design again. Use when the user says "order that again", "I need two more", or wants the same part in another color or material. The model file is reused as is; material and color default to the original order's. ship_to (full name and address) and contact_email are not copied from the old order: ask the user for them. quantity is the number of copies (default 1). The price is recalculated at today's rates. Returns a new job ID and total, and a payment link…