Formlabs print prep (save only)
A non-destructive version of the formlabs-print workflow: same preparation
pipeline, but always saves a .form file at the end instead of sending to a
printer. Use this when the user wants to inspect the job in PreForm first, or
batch-prepare jobs to print later.
Precondition (always)
First action: call health_check. If it errors, the formlabs MCP server
is not installed or PreFormServer failed to start. Surface the error, link
the user to https://github.com/mkebiclioglu/formlabs-local-mcp, and STOP.
Required inputs
- Model file(s) — absolute paths.
- Printer + material — same as
formlabs-print. If the user names a printer but no material, calllist_printer_typesto confirm the code, thenlist_materialsand surface the available materials for that printer so they can pick. - Output
.formpath — absolute path. If they don't specify, default to the model's directory with the same basename and.formextension, and confirm.
Workflow
health_check(precondition).create_scene.import_modelfor each input file. The server defaultsrepair_behavior=REPAIRandunits=MILLIMETERS— leave them unless the user explicitly says otherwise.auto_orient.auto_support.auto_layout(SLA,machine_typestarts withFORM-) orauto_pack(SLS, starts withFS).get_print_validation— surface errors/warnings.- Auto drain holes (SLA only): call
auto_add_drain_holesto place drain holes for any cups reported by validation. Skip the user XYZ prompt — bbox sampling + PreForm's surface projection handle placement. If PreForm reports "no surface found" for a model, surface that to the user and offeradd_drain_holes(hand-placed) as fallback. estimate_print_time— report time and material usage.save_formto the chosen path. Skip the confirmation if the path is new; ask before overwriting an existing file.- Optionally
save_screenshotto a.pngnext to the.formfor preview.
When to use this vs formlabs-print
- User mentions "save", "prepare", "set up", "draft", "preview" → this skill.
- User mentions "print", "send to printer", "kick off the job" → use
formlabs-print. - Ambiguous → ask once which they want.
Things to avoid
- Don't use TaskCreate for this flow. Short linear pipeline; overhead.
- Don't loop retries on
IMPORT_PRODUCED_EMPTY_SCENE— that error means the STL is genuinely malformed and the post-import verification caught it. Tell the user, stop, and let them open the file in PreForm to diagnose. - Don't invent
machine_typeormaterial_codevalues. Uselist_printer_types/list_materialsto get real values.