{"openapi":"3.1.0","info":{"title":"Formada3D shop, design studios and instant 3D print quotes","version":"2.1.0","description":"Same tools as the MCP server at https://mcp.formada3d.com/ as plain JSON. Prices AUD (no GST) from live pricing. Ordering = links the person opens and pays on formada3d.com.","contact":{"email":"info@formada3d.com","url":"https://formada3d.com/ai/"}},"servers":[{"url":"https://mcp.formada3d.com"}],"paths":{"/api/search_products":{"post":{"operationId":"search_products","summary":"Search the shop","description":"Search the Formada3D shop (3D-printed paint racks, desk & home organisers, wall planters, Mac mounts, collectibles display, kids wooden-railway track parts, custom letters, cookie cutters, tabletop terrain, STL files). Relevance-ranked; live AUD prices from our price list (no GST); made to order in Melbourne, Australia. Returns product URL and add_to_cart_url.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"What the person wants, e.g. \"rack for vallejo dropper bottles\" (optional; empty = everything)."},"category":{"type":"string","description":"Optional category filter (see list_categories), e.g. \"Paint racks\", \"planters\", \"Kids\"."},"max_price":{"type":"number","description":"Optional max starting price in AUD."},"digital":{"type":"boolean","description":"true = STL files only, false = physical products only."},"max":{"type":"number","description":"Max results (default 20, max 50)."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/get_product":{"post":{"operationId":"get_product","summary":"Product detail","description":"Full detail for one shop product: description, option names and values (e.g. colours, sizes, left/right pull), every variant with its live price, images, size mentions from the product page, lead time, shipping, and links. Identify by id (feed slug), product_id, sku, url or exact title.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"product_id":{"type":"string"},"sku":{"type":"string"},"url":{"type":"string"}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/list_categories":{"post":{"operationId":"list_categories","summary":"Shop categories","description":"All shop categories with product counts, starting prices (AUD) and category page links.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/cart_permalink":{"post":{"operationId":"cart_permalink","summary":"Cart link (v1)","description":"Backward-compatible v1 tool: a link that adds a product to the Formada3D cart (our own shop, Stripe checkout). Give id or sku, optional quantity and optional variant text (e.g. \"Matte Black / Right Pull\"). The person opens it, reviews and pays. Prefer start_order for several items.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sku":{"type":"string"},"quantity":{"type":"number"},"variant":{"type":"string"},"variant_id":{"type":"string"}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/start_order":{"post":{"operationId":"start_order","summary":"Start an order (link for the person)","description":"Build the link where the PERSON reviews and pays. For shop items: items[] with product id/sku, quantity and option text -> a formada3d.com cart link (pre-filled, live prices, Stripe checkout). For a print quote: quote_id from get_quote -> the quote page with that quote loaded. For design studios use the studio link from the price_* tools. The AI never pays and never handles card details.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","maxItems":10,"items":{"type":"object","properties":{"id":{"type":"string"},"sku":{"type":"string"},"quantity":{"type":"number"},"variant":{"type":"string","description":"Option text, e.g. \"Matte Black / Right Pull\""},"variant_id":{"type":"string"}}}},"quote_id":{"type":"string","description":"A quote_id returned by get_quote."},"business":{"type":"boolean","description":"With quote_id: open on business.formada3d.com (invoice/PO)."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/get_quote":{"post":{"operationId":"get_quote","summary":"Instant quote for a 3D file","description":"Instant price for printing the person's own 3D file (STL, 3MF or OBJ by public URL or base64). Our LIVE quote engine slices it server-side and returns price (AUD, no GST), grams, print time, size, printability checks (fits printer, watertight, thin walls), bulk prices and a review_and_pay_url where the person checks and pays. STEP/IGES: upload on the quote page. Materials PLA, PETG, TPU (PAHT-CF on request).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"file_url":{"type":"string","description":"Public http(s) URL of the 3D file (STL, 3MF or OBJ; up to 25 MB). STEP/IGES must be uploaded on the quote page (converted in the browser)."},"file_base64":{"type":"string","description":"The file bytes as base64 (up to 8 MB decoded). Use instead of file_url."},"file_name":{"type":"string","description":"File name incl. extension, e.g. \"bracket.stl\" (needed with file_base64)."},"parts":{"type":"array","maxItems":5,"description":"Several files in one quote (max 5). Each item: {file_url | file_base64, file_name, quantity, material, colour, infill, notes}. Top-level settings apply when an item omits them.","items":{"type":"object"}},"material":{"type":"string","enum":["PLA","PETG","TPU","PLA_MATTE","PLA_SILK","PLA_METAL","PLA_GALAXY","PETG_TRANS","ABS","ASA","PLA_CF","PETG_CF","PAHT","MJF_PA12","SLS_PA12","SLS_PA12GB","SLA_WHITE","SLA_GREY","SLA_BLACK","SS316L","TI64","PEEK","PEKK","PA12_CF","ABS_ESD"],"description":"Default PLA. Instant, in stock: PLA, PETG, TPU. Ordered in for the job (+3-5 days): PLA_MATTE, PLA_SILK, PLA_METAL, PLA_GALAXY, PETG_TRANS, ABS, ASA. On request (no instant price): PLA_CF, PETG_CF, PAHT. Industrial production via our production network (instant price, ships in ~2-3 weeks, A$8 setup per order, colour fixed by the material): MJF_PA12, SLS_PA12, SLS_PA12GB, SLA_WHITE, SLA_GREY, SLA_BLACK, SS316L, TI64, PEEK, PEKK, PA12_CF, ABS_ESD."},"colour":{"type":"string","description":"Black, White, Grey, Silver, Red, Blue, Navy, Green, Yellow, Orange, Purple, Pink, Beige, Brown, Teal or Clear (default Black)."},"infill":{"type":"number","enum":[10,15,25,40,60,100],"description":"Infill % (default 15). Stronger parts: 25-40."},"layer_height":{"type":"number","enum":[0.12,0.16,0.2,0.28],"description":"Layer height mm (default 0.2)."},"walls":{"type":"number","enum":[2,3,4],"description":"Wall loops (default 2; 3-4 for strength)."},"supports":{"type":"string","enum":["auto","off"],"description":"Default auto."},"units":{"type":"string","enum":["mm","cm","in"],"description":"Units the file was modelled in (default mm)."},"quantity":{"type":"number","description":"Copies of each part (default 1, max 10000)."},"lead":{"type":"string","enum":["standard","express"],"description":"standard 3-5 business days (ordered-in filaments +3-5 days, production-partner materials ~2-3 weeks); express 48 h dispatch (+30%, in-stock materials only)."},"country":{"type":"string","description":"Ship-to country ISO code (default AU)."},"ship_method":{"type":"string","enum":["standard","express"],"description":"AU only: express post."},"business":{"type":"boolean","description":"true = business customer (review/pay link on business.formada3d.com, invoice/PO available)."},"notes":{"type":"string","description":"Notes for us about the part (max 500 chars)."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/get_saved_quote":{"post":{"operationId":"get_saved_quote","summary":"Look up a quote","description":"Look up a quote by quote_id (from get_quote or a formada3d.com/quote/?q= link): parts, prices, total and the review/pay link.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"quote_id":{"type":"string"}},"required":["quote_id"]}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/quote_options":{"post":{"operationId":"quote_options","summary":"Quote engine options","description":"What the instant quote accepts: materials, colours, infill and layer options, printers/build volume, file types and size limits, pricing rule, shipping table. Live from the quote engine.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/find_or_design":{"post":{"operationId":"find_or_design","summary":"Find or design something","description":"Natural-language need -> what Formada3D can do: (a) matching shop products with live prices, (b) our online design studios that make it (cookie cutters, stamps, NFC/pet tags, logo plaques, letters, slab/vinyl boxes, rollers, moulds, boxes, terrain) with a price when computable, (c) a custom-design path (we design it to measure; quoted by us). Example: \"a jacket hook for a 4 mm nail, 2 kg load\".","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","description":"What the person needs, in their words, with any sizes/loads/quantities."},"max_price":{"type":"number"}},"required":["description"]}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/list_design_studios":{"post":{"operationId":"list_design_studios","summary":"Design studios","description":"Our live online 3D design studios (design in the browser, we print it), what each makes, and the tool that prices it.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_cookie_cutter":{"post":{"operationId":"price_cookie_cutter","summary":"price cookie cutter","description":"Price a custom cookie cutter with the exact formula our checkout charges (Cookie Cutter Studio). Returns price (AUD) and the studio link where the person designs it and adds it to the cart.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text/number to cut (max 10 chars). Omit for a drawn/shape cutter."},"size_mm":{"type":"number","description":"Cutter size in mm, 50-150 (default 80)."},"closed_back":{"type":"boolean","description":"Closed back (embosser style), +A$4."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_nfc_tag":{"post":{"operationId":"price_nfc_tag","summary":"price nfc tag","description":"Price a personalised keyring / bag tag from the NFC Tag Designer, using the checkout's own formula. Optional NFC chip (tap to open a link).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text on the tag (max 14 chars). Omit for an icon tag."},"size_mm":{"type":"number","description":"Tag size 25-95 mm (default 45)."},"thickness_mm":{"type":"number","description":"Thickness 3-6 mm (default 4). 5 mm or more adds A$1.50."},"nfc":{"type":"boolean","description":"Embed an NFC chip, +A$2."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_pet_id_tag":{"post":{"operationId":"price_pet_id_tag","summary":"price pet id tag","description":"Price a Pet ID tag (two-sided, optional NFC chip that opens the pet's found page) with the checkout's formula.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"two_colour":{"type":"boolean","description":"Two-colour tag (A$32.95) vs one colour (A$24.95)."},"nfc":{"type":"boolean","description":"Embed an NFC chip, +A$2."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_logo_plaque":{"post":{"operationId":"price_logo_plaque","summary":"price logo plaque","description":"Price a business logo plaque / sign from the Logo Plaque Maker with the checkout's formula (size, number of colours, optional NFC e.g. Google review link).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"size_mm":{"type":"number","description":"Logo size 40-200 mm (default 80)."},"colours":{"type":"number","description":"Number of colours in the logo (each is a separate print layer; default 1)."},"nfc":{"type":"boolean","description":"Embed an NFC chip, +A$2."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_stamp":{"post":{"operationId":"price_stamp","summary":"price stamp","description":"Price a custom stamp / embosser using the Stamp Studio's own price formula (the studio confirms the order by email).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Stamp text (max 12 chars). Omit for a shape/logo stamp."},"size_mm":{"type":"number","description":"Stamp size 25-90 mm (default 40)."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_terrain_roller":{"post":{"operationId":"price_terrain_roller","summary":"price terrain roller","description":"Price a printed texture roller (Roller Studio formula: by diameter and length). The STL is also a free download in the studio.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"diameter_mm":{"type":"number","description":"Roller diameter 25-60 mm (default 40)."},"length_mm":{"type":"number","description":"Roller length 40-200 mm (default 100)."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_slab_box":{"post":{"operationId":"price_slab_box","summary":"price slab box","description":"Price the Slab Box Studio keepsake case for one graded trading card (engraved lid A$39.99, optional NFC +A$5).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"nfc":{"type":"boolean","description":"NFC tag sealed in the lid, +A$5."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/price_letters":{"post":{"operationId":"price_letters","summary":"price letters","description":"Price custom wall letters or two-colour shadow letters / house numbers from the live price list (per letter, by size XS 3.5 cm to XL 25 cm). Returns the total and the letters designer link.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"The word/number (spaces not charged; max 16 characters)."},"style":{"type":"string","enum":["wall","shadow"]},"size":{"type":"string","description":"XS, Small, Medium, Large or XL (default Small)."},"keyhole":{"type":"boolean","description":"Shadow letters only: keyhole hanger on the back."}},"required":["text"]}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/materials_guide":{"post":{"operationId":"materials_guide","summary":"Materials guide","description":"Which material to choose: PLA, PETG, TPU 95A in-house; PAHT-CF, ASA, ABS, CF blends on request; resin (Formlabs Form 4) coming soon; SLS/MJF nylon and metal via partners (request a quote; not in-house).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"material":{"type":"string","description":"Optional: one material to describe."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/list_parts":{"post":{"operationId":"list_parts","summary":"Business parts catalogue","description":"Formada3D Business parts catalogue (business.formada3d.com/parts/): parts we designed ourselves for robotics (soft gripper fingers, servo/camera brackets, ISO 9409 flange adapters, sensor brackets), sensor and IoT enclosures (sealed O-ring boxes, LoRa mesh node cases), 42 mm grid organisers and NFC review stands. Guide prices in AUD (no GST), printed to order in Melbourne. Optional query/category filter; live from the catalogue pages.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"What the person needs, e.g. \"gripper fingers for eggs\", \"ESP32 enclosure\" (optional)."},"category":{"type":"string","description":"Optional: Robotics, Enclosures, Organisers or NFC."},"max":{"type":"number"}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/get_part":{"post":{"operationId":"get_part","summary":"Part detail (business catalogue)","description":"Full detail for one business-catalogue part: description, specs (material, sizes, what it fits, hardware), option prices (AUD guide prices), availability (made to order / after fit check), safety and use notes, FAQ and images. Identify by id (slug from list_parts), sku (F3D-PARTS-nn), url or exact name.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"sku":{"type":"string"},"url":{"type":"string"},"name":{"type":"string"}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/order_status":{"post":{"operationId":"order_status","summary":"Order status (buyer only)","description":"Status of a Formada3D order for the person who placed it: received / printing / packed / shipped, carrier, tracking number and link, dates, and the item names. Needs the order reference AND the exact email used for the order (both from their confirmation email); anything else returns \"not found\". References: print quotes Q......-XXXX; shop orders: the THANKS-XXXXXX code or tracking number from the shipping email, or the Stripe session id (cs_live_...) from the order-confirmed page link. Only call this with details the person gave you. Rate-limited.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"order_number":{"type":"string","description":"Order reference (case-insensitive)."},"email":{"type":"string","description":"The email address used for the order (exact match)."}},"required":["order_number","email"]}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/shipping_and_lead_times":{"post":{"operationId":"shipping_and_lead_times","summary":"Shipping & lead times","description":"Shipping rates (AUD) by country and production lead times, from Melbourne, Australia.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"Optional ISO country code, e.g. AU, NZ, US, CA, GB."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/policies":{"post":{"operationId":"policies","summary":"Policies","description":"Returns (Australian Consumer Law), made in Melbourne, GST (not registered), minimum order, payment, privacy and safety notes.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/business_services":{"post":{"operationId":"business_services","summary":"Business services","description":"Formada3D Business (business.formada3d.com): robot parts, sensor/IoT enclosures, rapid prototyping, small-batch production, the parts catalogue (list_parts), materials guide; invoice/PO; NDA on request.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/contact":{"post":{"operationId":"contact","summary":"Contact","description":"How to reach Formada3D (email, response time, links). Location is Melbourne, Australia; online only.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/api/request_custom_quote":{"post":{"operationId":"request_custom_quote","summary":"Send a custom-quote enquiry","description":"Send the person's brief to Formada3D (info@formada3d.com) for a custom design or a manual quote. Only call this when the person has asked you to and agreed to share their name and email (set user_confirmed=true). We reply by email within 1 business day. Rate-limited; no files are stored (pass a link instead).","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Person's name (2-80 chars)."},"email":{"type":"string","description":"Email we reply to."},"description":{"type":"string","description":"What they need: purpose, sizes, load, quantity, colour, deadline (20-4000 chars)."},"phone":{"type":"string"},"company":{"type":"string"},"quantity":{"type":"number"},"deadline":{"type":"string"},"budget":{"type":"string"},"file_url":{"type":"string","description":"Optional link to a file/photo/sketch (we do not download or store it here)."},"country":{"type":"string","description":"Ship-to country."},"user_confirmed":{"type":"boolean","description":"Must be true: the person asked for this enquiry to be sent and agreed to share these details."}},"required":["name","email","description","user_confirmed"]}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Tool error {error}"},"429":{"description":"Rate limited"}}}},"/search":{"get":{"operationId":"search_get","summary":"Search products","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"max","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Products"}}}}}}