3D printing: printable models, calculators, troubleshooting wiki, build guides, AI 3D + CAD design.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. `Bearer pp_live_…` PrintPal API key (printpal.io/api-keys) unlocks credit-metered AI 3D generation. All search, calculator and knowledge tools work without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Convert filament grams to metres (and back), compute volume and cost, and estimate how much is left on a spool from its gross weight. Knows densities for PLA, PETG, ABS, ASA, TPU, Nylon, PC, CF blends. Give either `grams` or `meters`.
pla, petg, abs, asa, tpu, nylon, pc, pla-cf, petg-cf, pa-cf …
Override density if known.
Weight of the empty spool (typ. 130–250 g).
Weight of spool + remaining filament, to estimate what is left.
Convert filament grams to metres (and back), compute volume and cost, and estimate how much is left on a spool from its gross weight. Knows densities for PLA, PETG, ABS, ASA, TPU, Nylon, PC, CF blends. Give either `grams` or `meters`.
| Argument | Type | Description |
|---|---|---|
| grams | number | |
| meters | number | |
| material | string | pla, petg, abs, asa, tpu, nylon, pc, pla-cf, petg-cf, pa-cf … |
| diameter_mm | number | |
| density_g_cm3 | number | Override density if known. |
| spool_price_usd | number | |
| spool_weight_kg | number | |
| empty_spool_weight_grams | number | Weight of the empty spool (typ. 130–250 g). |
| spool_gross_weight_grams | number | Weight of spool + remaining filament, to estimate what is left. |
{
"type": "object",
"properties": {
"grams": {
"type": "number"
},
"meters": {
"type": "number"
},
"material": {
"type": "string",
"default": "pla",
"description": "pla, petg, abs, asa, tpu, nylon, pc, pla-cf, petg-cf, pa-cf …"
},
"diameter_mm": {
"type": "number",
"default": 1.75
},
"density_g_cm3": {
"type": "number",
"description": "Override density if known."
},
"spool_price_usd": {
"type": "number"
},
"spool_weight_kg": {
"type": "number",
"default": 1
},
"empty_spool_weight_grams": {
"type": "number",
"description": "Weight of the empty spool (typ. 130–250 g)."
},
"spool_gross_weight_grams": {
"type": "number",
"description": "Weight of spool + remaining filament, to estimate what is left."
}
},
"additionalProperties": false
}Compute the Z-axis "magic number" layer heights for a printer from its stepper step angle, microstepping and lead-screw pitch/starts, filtered to what suits the nozzle. Defaults match most Ender/Prusa-style printers (1.8°, 1/16, T8 2 mm × 4 starts → 0.04 mm steps).
| Argument | Type | Description |
|---|---|---|
| microstepping | integer | |
| lead_screw_starts | integer | |
| nozzle_diameter_mm | number | |
| step_angle_degrees | number | |
| lead_screw_pitch_mm | number | |
| max_layer_height_mm | number |
{
"type": "object",
"properties": {
"microstepping": {
"type": "integer",
"default": 16
},
"lead_screw_starts": {
"type": "integer",
"default": 4
},
"nozzle_diameter_mm": {
"type": "number",
"default": 0.4
},
"step_angle_degrees": {
"type": "number",
"default": 1.8
},
"lead_screw_pitch_mm": {
"type": "number",
"default": 2
},
"max_layer_height_mm": {
"type": "number"
}
},
"additionalProperties": false
}Estimate what an FDM print costs (material, electricity, machine wear, labor, failure allowance) and a suggested selling price. Needs the print weight in grams and time in hours from the slicer; all other inputs have sensible defaults (1 kg spool at $20, 120 W printer, $0.12/kWh, 5% failures).
| Argument | Type | Description |
|---|---|---|
| quantity | integer | |
| labor_minutes | number | Hands-on time: slicing, removal, post-processing. |
| markup_percent | number | Profit markup to compute a selling price. |
| spool_price_usd | number | |
| spool_weight_kg | number | |
| print_time_hours* | number | Print time in hours (e.g. 3.5). |
| printer_cost_usd | number | Printer purchase price, for depreciation. 0 to skip. |
| print_weight_grams* | number | Filament used, from the slicer. |
Check whether a hotend can keep up: volumetric flow (mm³/s) = layer height × line width × speed, compared against the hotend limit, plus the maximum safe speed. Accepts a hotend preset name (stock, v6, bambu, volcano, rapido, high-flow, goliath…) or an explicit max flow.
| Argument | Type | Description |
|---|---|---|
| hotend | string | Preset: stock, v6, ender3, prusa-mk3, prusa-mk4, bambu, volcano, rapido, dragon-hf, high-flow, chc-pro, goliath, voron |
| line_width_mm | number | |
| layer_height_mm | number | |
| print_speed_mm_s* | number | |
| max_volumetric_flow_mm3_s | number |
{
"type": "object",
"required": [
"print_speed_mm_s"
],
"properties": {
"hotend": {
"type": "string",
"description": "Preset: stock, v6, ender3, prusa-mk3, prusa-mk4, bambu, volcano, rapido, dragon-hf, high-flow, chc-pro, goliath, voron"
},
"line_width_mm": {
"type": "number",
"default": 0.42
},
"layer_height_mm": {
"type": "number",
"default": 0.2
},
"print_speed_mm_s": {
"type": "number"
},
"max_volumetric_flow_mm3_s": {
"type": "number"
}
},
"additionalProperties": false
}Poll a PrintPal AI generation started with `generate_3d_model` in API-key mode. Returns status (queued/processing/completed/failed) and, when completed, a time-limited download URL for the mesh.
| Argument | Type | Description |
|---|---|---|
| generation_uid* | string |
{
"type": "object",
"required": [
"generation_uid"
],
"properties": {
"generation_uid": {
"type": "string"
}
},
"additionalProperties": false
}For mechanical / functional parts with exact dimensions — brackets, enclosures, adapters, gears, bins, knobs, mounts — open PrintPal's AI CAD agent with a ready-to-run brief. The agent writes editable OpenSCAD with parameter sliders, live 3D preview and STL/3MF/STEP export. This tool improves the user's description into a precise CAD brief (dimensions, tolerances, mounting, print orientation) and returns the link; the user clicks it to generate.
| Argument | Type | Description |
|---|---|---|
| material | string | Intended filament (affects tolerances), e.g. PLA, PETG, TPU. |
| dimensions | string | Known dimensions in mm, e.g. "60 x 40 x 20 mm, M3 holes 50 mm apart". |
| description* | string | What the part is and what it must fit/do. |
| export_format | string |
{
"type": "object",
"required": [
"description"
],
"properties": {
"material": {
"type": "string",
"description": "Intended filament (affects tolerances), e.g. PLA, PETG, TPU."
},
"dimensions": {
"type": "string",
"description": "Known dimensions in mm, e.g. \"60 x 40 x 20 mm, M3 holes 50 mm apart\"."
},
"description": {
"type": "string",
"description": "What the part is and what it must fit/do."
},
"export_format": {
"enum": [
"stl",
"3mf",
"step",
"scad"
],
"type": "string",
"default": "stl"
}
},
"additionalProperties": false
}Fetch the full content of a PrintPal item returned by `search` (or any id of the form `model:<uid>`, `tool:<slug>`, `wiki:<slug>`, `doc:<slug>`, `resource:<slug>`, `project:<slug>`, `course:<slug>`). Returns the complete text (article body, transcript, build steps, BOM, model description and files) plus the canonical URL for citation.
| Argument | Type | Description |
|---|---|---|
| id* | string | Item id from `search`, e.g. "wiki:stringing-and-oozing". |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Item id from `search`, e.g. \"wiki:stringing-and-oozing\"."
}
},
"additionalProperties": false
}Recommend the right free PrintPal browser tool for a task: print cost / resin cost / layer height (magic numbers) / E-steps / flow rate / volumetric flow / filament spool / drying / shrinkage / Vref / Etsy profit calculators; generators for lithophanes, vases, name plates, 3D text, QR codes, bins, puzzles, mold boxes, flexi models, fidget clickers, Desk Pal, terrain maps, Minecraft maps; mesh repair, model splitter, converter, viewer, G-code viewer, AMS/multicolor painters; AI generators. Returns matching tools with links. Pass an empty task to list every tool.
| Argument | Type | Description |
|---|---|---|
| task | string | What the user is trying to do, e.g. "split a big model to fit my bed". |
| limit | integer |
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "What the user is trying to do, e.g. \"split a big model to fit my bed\"."
},
"limit": {
"type": "integer",
"default": 6,
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}Turn a text prompt or an image into a print-ready 3D mesh (STL/GLB/OBJ geometry) with PrintPal's AI generator. Without a PrintPal API key this returns a link that opens the generator on printpal.io with the prompt prefilled; nothing is generated until the user clicks it. With an API key header (`Authorization: Bearer pp_live_…`) it submits the job to the user's own account, spends that account's credits, and returns a `generation_uid` that `check_3d_generation` accepts. Suited to organic/sculptural objects (figurines, animals, props); exact-dimension mechanical parts are handled by `design_parametric_cad`.
| Argument | Type | Description |
|---|---|---|
| format | string | |
| prompt* | string | What to generate, e.g. "low-poly fox figurine, sitting". |
| quality | string | default/high/ultra for text or image; super*/superplus* tiers are image-only high-res. |
| image_url | string | Optional public PNG/JPEG/WebP URL for image-to-3D (API-key mode only). |
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"format": {
"enum": [
"glb",
"stl",
"obj",
"ply",
"fbx"
],
"type": "string",
"default": "glb"
},
"prompt": {
"type": "string",
"description": "What to generate, e.g. \"low-poly fox figurine, sitting\"."
},
"quality": {
"enum": [
"default",
"high",
"ultra",
"super",
"super_texture",
"superplus",
"superplus_texture",
"superplus_1280",
"superplus_1280_texture",
"superplus_1536",
"superplus_1536_texture"
],
"type": "string",
"default": "default",
"description": "default/high/ultra for text or image; super*/superplus* tiers are image-only high-res."
},
"image_url": {
"type": "string",
"description": "Optional public PNG/JPEG/WebP URL for image-to-3D (API-key mode only)."
}
},
"additionalProperties": false
}Get full details for one PrintPal model by uid: description, license, file formats, author, stats, and the page URL to download it. Accepts a uid from `search_3d_models` results or a printpal.io/model/<uid> URL.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Model uid from search results or a printpal.io/model/<uid> URL. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Model uid from search results or a printpal.io/model/<uid> URL."
}
},
"additionalProperties": false
}Read a full PrintPal build guide by slug: summary, bill of materials with quantities and links, downloadable files (STL/3MF/code), every build step, callouts and code blocks. Use when the user wants to actually follow or adapt a project.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Project slug from search results or a printpal.io/projects/<slug> URL. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Project slug from search results or a printpal.io/projects/<slug> URL."
}
},
"additionalProperties": false
}Explain what is free on PrintPal, how AI generation credits and the CAD agent are priced, API access and the on-demand 3D printing service — with links to sign up, buy credits or subscribe. Call when the user asks about cost, limits, subscriptions or how to get more generations.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Search everything on PrintPal for a 3D-printing query: community 3D models, free tools and calculators, wiki troubleshooting articles, OpenSCAD/AI-CAD docs, video tutorials, build guides and Academy courses. Returns ids accepted by `fetch` for the full content. Suited to general 3D printing questions such as "why is my first layer not sticking", "PETG temperature" or "3D printed phone stand".
| Argument | Type | Description |
|---|---|---|
| query* | string | Natural-language search query. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Natural-language search query."
}
},
"additionalProperties": false
}Find printable 3D models (STL/3MF/OBJ) in the PrintPal community library by keyword — e.g. "articulated dragon", "headphone stand", "Raspberry Pi 5 case". Returns cards with thumbnail, author, tags, likes and a link to the model page where the files can be downloaded. Searches existing uploads only; new models are made by `generate_3d_model` (AI mesh) or `design_parametric_cad` (exact dimensions).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | What the user wants to print, 1–6 words works best. |
| category | string | Optional category filter. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 12,
"maximum": 30,
"minimum": 1
},
"query": {
"type": "string",
"description": "What the user wants to print, 1–6 words works best."
},
"category": {
"enum": [
"Art",
"Fashion",
"Gadgets",
"Hobby",
"Household",
"Learning",
"Miniatures",
"Tools",
"Toys & Games",
"Other"
],
"type": "string",
"description": "Optional category filter."
}
},
"additionalProperties": false
}Find step-by-step PrintPal build guides: Arduino/ESP32 electronics + 3D-printed enclosures, robots, functional prints, printer mods, STEM classroom projects, props and toys. Each result lists difficulty, time, cost, part/file/step counts. Filter by category (electronics-robotics, functional-prints, home-workshop, stem-education, printer-mods, art-props, toys-games) or difficulty (beginner, intermediate, advanced). Leave query empty to browse featured guides.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| limit | integer | |
| query | string | |
| category | string | Category slug or name. |
| difficulty | string |
{
"type": "object",
"properties": {
"sort": {
"enum": [
"featured",
"recent",
"popular",
"liked"
],
"type": "string",
"default": "featured"
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string"
},
"category": {
"type": "string",
"description": "Category slug or name."
},
"difficulty": {
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
}
},
"additionalProperties": false
}Search PrintPal's how-to content: the vendor-neutral 3D printing wiki (print quality, filaments, slicer settings, maintenance, error codes, safety), OpenSCAD + AI-CAD docs, short video tutorials with transcripts, and free Academy courses with certificates. Use `type` to narrow. Results include ids accepted by `fetch` for the full article text.
| Argument | Type | Description |
|---|---|---|
| type | string | |
| limit | integer | |
| query* | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"type": {
"enum": [
"all",
"wiki",
"docs",
"videos",
"courses"
],
"type": "string",
"default": "all"
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}| labor_rate_per_hour |
| number |
| printer_power_watts | number |
| failure_rate_percent | number |
| printer_lifespan_hours | number |
| electricity_cost_per_kwh | number |
{
"type": "object",
"required": [
"print_weight_grams",
"print_time_hours"
],
"properties": {
"quantity": {
"type": "integer",
"default": 1
},
"labor_minutes": {
"type": "number",
"default": 0,
"description": "Hands-on time: slicing, removal, post-processing."
},
"markup_percent": {
"type": "number",
"default": 0,
"description": "Profit markup to compute a selling price."
},
"spool_price_usd": {
"type": "number",
"default": 20
},
"spool_weight_kg": {
"type": "number",
"default": 1
},
"print_time_hours": {
"type": "number",
"description": "Print time in hours (e.g. 3.5)."
},
"printer_cost_usd": {
"type": "number",
"default": 0,
"description": "Printer purchase price, for depreciation. 0 to skip."
},
"print_weight_grams": {
"type": "number",
"description": "Filament used, from the slicer."
},
"labor_rate_per_hour": {
"type": "number",
"default": 0
},
"printer_power_watts": {
"type": "number",
"default": 120
},
"failure_rate_percent": {
"type": "number",
"default": 5
},
"printer_lifespan_hours": {
"type": "number",
"default": 5000
},
"electricity_cost_per_kwh": {
"type": "number",
"default": 0.12
}
},
"additionalProperties": false
}