design_session
Turn a plain-English idea into a 3D-printable model, resolve vague requests with clarifying questions, and track each version under a goal for later revisions.
Instructions
Make, design or create any physical object — a part, a bracket, a box, a holder, a gift — as a 3D model ready to print. Describe it in plain English: a specific request goes straight to generate, a vague one gets a quick question or two. Kiln builds the STL from the OpenSCAD you write (scad_code) and reports which design checks it passes. It saves the request as a goal, so later versions and parts made with Kiln's other make tools can be kept together under its goal_id. Verbs: start, update, save (or commit), generate (or make), join.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"verb": "<verb>"
},
"name": "design_session"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| idea | No | What the person wants to make, in their words. Required for ``start``; ignored by the other verbs. Default: "". | |
| verb | Yes | The move to make: ``start``, ``update``, ``save`` (or ``commit``), ``generate`` (or ``make``) and ``join``; any other word is refused. | |
| answers | No | Replies to the goal's open questions, mapping each question's text to the answer. Read by ``update``, ``save`` and ``generate``; answers given on ``save`` or ``generate`` are named back under ``assumed``. | |
| goal_id | No | The goal ``start`` returned. Required for every verb but ``start``, and for recording numbers, pictures or refusals on a later call. Default: "". | |
| material | No | For ``start``: the material the person has in mind, such as ``PLA``. Empty means none was named. Default: "". | |
| made_with | No | For ``join``: where that model came from, as ``{kind, by}`` plus, for a download, its ``name``, ``creator``, ``license`` and ``url``; kept beside the version. Optional. | |
| mesh_path | No | For ``join``: the model file made somewhere else to add to the goal as its next version. Default: "". | |
| scad_code | No | For ``generate``: the OpenSCAD source to compile and check. Empty asks a configured cloud backend, or hands back the design details for you to write it. Default: "". | |
| spec_numbers | No | Dimensions settled in conversation, one entry each, with ``label``, ``measurement`` (``bbox_x`` / ``bbox_y`` / ``bbox_z`` / ``volume_mm3`` / ``hole_count`` / ``min_hole_diameter``, or a name Kiln will learn to measure), ``value``, ``origin`` (``"user_stated"`` or ``"kiln_derived"``) and ``why`` (one plain sentence); ``tolerance`` and ``stated_text`` optional. Works with every verb; a later entry with the same label replaces the earlier one. | |
| artifact_type | No | The kind of thing being saved: ``design`` (the default), ``feature`` or ``decoration``, stamped on the goal. Default: "design". | |
| edited_prompt | No | For ``generate`` without ``scad_code`` only: words to hand back in place of the request Kiln builds from the goal. Ignored when ``scad_code`` is given, which is every OpenSCAD make. | |
| target_size_mm | No | For ``start``: a size hint in millimetres, kept with the goal; it does not answer the sizing question on its own. | |
| decided_against | No | What the person turned down, as a list of ``{what, why}`` entries kept on the goal; ``{what, withdrawn: true}`` takes one off the list. | |
| material_change | No | For ``update``, ``save`` and ``generate``: the filament the goal's part is made in now, as ``{material, why, decided_by, printer_model}``. Only ``material`` is required; ``why`` is why the old filament was set aside, ``decided_by`` is ``"person"`` when they chose it or ``"agent"`` when you did, and ``printer_model`` the printer it is printed on. The goal's old filament stays on its history. | |
| reference_images | No | A picture the person showed you: an image file path, or a list of them. Kept on the goal, so every later ``generate`` is checked against it. |