home / examples

Example library

101 cookbook recipes agents can search and run. Pair with the public schema and live modeling docs.

Use MCP execute_cookbook / cookbook search tools with a recipe id. Runnable docs examples also live under /docs.

2-DOF pan/tilt inspection head with a rigid routed service tube and animationView

Prompt asks for a production 2-DOF pan/tilt inspection head: grounded base, yaw stage, tilt yoke with cheeks and a servo shelf fused into the parent solid, two revolute mates with limits, mechanicalJoint intent, and a rigid swept service tube fastened to the moving head (NOT a flexible hose). Declare yawDeg and tiltDeg with param() in the same block as animationView — tracks must name those live params; dropping param() while keeping tracks throws animation.param.unknown. Prefer design_loop until evaluate_script reports mechanism=real, then open_in_studio and capture_animation from a file with pose-interference verification. Closed-loop FK and joint.scissorLift are unsupported — stop and say so.

assembly connector mate revolute joint kinematic parameter actuator tube route sweep material

Source · run via MCP execute_cookbook with id mated-inspection-head-routed-tube-animation

20x20 B-type T-slot extrusion with slot-6 opening and corner connector

You need a 20×20 B-type T-slot extrusion (slot 6, 6 mm slot opening) trimmed to a length param, plus a matching 90-degree corner connector that fastens on the T-slots.

extrusion tslot extrude subtract sketch assembly parameter

Source · run via MCP execute_cookbook with id tslot-extrusion-and-bracket

2D quintic Hermite G2 transition between two path runs

You're authoring a freeform 2D outline that should transition from one prescribed point + tangent (+ curvature) to another with G2 continuity (no visible curvature crease where adjacent neighbours meet). Drop a single .hermiteG2(a, b) call into the chain; a.point must match the current pen position. Tangent magnitude is the first derivative (typical ~ chord length, NOT unit length).

primitive sketch extrude

Source · run via MCP execute_cookbook with id path-hermite-g2-blend-2d

4-DOF open-chain arm release pack — materials, reach animation, static hold

Prompt asks to turn a production 4-DOF open-chain arm (base yaw, shoulder, elbow, wrist, bridged yokes, named materials) into a release/evidence package with an animationView reach cycle and declared actuator capacities. This script evaluates standalone: param() sits beside animationView, and kinematic.checkStaticHold runs against body-tree revolutes (mates are not in that joint list). Prefer design_loop until evaluate_script reports mechanism=real. Follow-up MCP, not more geometry: inspect/export BOM, exploded PDF/SVG drawing, and usd-isaac with explicit drives on fastened/revolute mates only. run_fea only when CalculiX and gmsh are present — otherwise report FEA UNVERIFIED. No joint.scissorLift and no closed-loop FK.

assembly connector mate revolute joint kinematic parameter actuator material static-hold torque bom export fea

Source · run via MCP execute_cookbook with id 4dof-release-evidence-pack

Approximate static stability — a cantilever needs a hold until its support

A build sequence must say which steps need an external hand, fixture or clamp. Run verify({ check: 'assembly-path', sequence: true, stability: true }) and read sequence.needsHold / Step.heldBy. The check projects each part's centre of mass onto its contacts with already-stable parts; it is not a physics simulation. Declare gravity for a different build orientation and fixtures for parts that are present from step 1.

assembly kinematic static-hold

Source · run via MCP execute_cookbook with id assembly-stability-support-polygon

Assign material and quantity so a bill of materials can be extracted

Before calling inspect({ of 'bom' }) or export({ format 'bom-csv' | 'bom-json' }), declare material/density on assembly.part(...) so mass rows are real numbers instead of bom.material.unassigned gaps; instances placed in a loop with distinct names group into one BOM row by real quantity.

bom material density fasteners catalog

Source · run via MCP execute_cookbook with id bom-ready-assembly

Automatic dimensions, datums and position tolerances on an svg-drawing sheet

You need a quotable engineering drawing without writing every callout. Export svg-drawing with autoAnnotate to derive datums, grouped bore callouts with position frames, positions from the datums, overall size, radii, chamfers, flatness and an ISO 2768 note from the geometry, and declare the datums or tolerances that are design intent with shape.datum and shape.tolerance.

drawing dimension gdt tolerance datum

Source · run via MCP execute_cookbook with id drawing-auto-dimension-gdt

Await sectionSketch/faceSketch/silhouette before chaining extrude

You called shape.sectionSketch(...), .faceSketch(...), or .silhouette(...) and chained a Sketch method (.extrude, .revolve, .sweep, .loft, .reflect) directly on the result. All three producers are async and return Promise<Sketch> — chaining without awaiting throws feature.async-result.missing-await instead of silently doing the wrong thing.

sketch extrude

Source · run via MCP execute_cookbook with id async-sketch-await

Bent tube between two ports

You need one rigid tube from a fitting on one part to a fitting on another (a hydraulic, fuel, oil or coolant line). Declare each fitting as an axis connector with port data, pass part.port(name) as the tube ends, and give the corner points in between. The first corner goes on the first port's axis and the last corner on the second port's axis.

tube-routing

Source · run via MCP execute_cookbook with id tube-between-two-ports

Blind pocket cut into one face only

You want a pocket cut into the top face only — the cylinder is shorter than the plate so it does not reach the bottom face.

subtract pocket plate primitive

Source · run via MCP execute_cookbook with id blind-pocket-from-top

Boolean, choice, and string script params (beyond numeric param())

A `.kcad.ts` script needs an editable value that isn't a plain number: a feature on/off switch (`param('HasLid', true)`), a closed set of named options like a fastener size (`param('Screw', 'M4', { choices: [...] })`), or free text such as a nameplate/label (`param('Label', 'KCAD', { maxLength })`). All three resolve eagerly — read `.value` in script logic (`if`, object-key lookup, `sketch.text`) instead of the numeric ParamRef's symbolic `.add()`/`.multiply()` chain.

parameter typed-params choice-param boolean-feature-toggle

Source · run via MCP execute_cookbook with id typed-params-boolean-choice-string

Box semi-trailer with roof solar-battery packs placed on a keep-out and axle-balance rule

Prompt asks for a freight box / dry-van semi-trailer with solar-battery modules, or solar-panel-plus-battery cabinets, mounted on the roof and an optimal or balanced location for them. Pack the maximum grid that fits inside the front-fairing, rear-door, and side-walkway keep-outs, then center that grid on the kingpin/bogie static-reaction station. The rule is closed-form packing plus a reaction split — not an FEA solve and not a mass-properties query. Doors are modeled closed and fastened; they are not a swinging mechanism.

assembly connector mate parameter material extrude sketch fillet plate manufacturing choice-param typed-params density

Source · run via MCP execute_cookbook with id freight-trailer-roof-solar-batteries

Build an L-bracket as two non-overlapping plates

You're building two perpendicular plates joined at a right angle; both plates have the same thickness; volumes must not overlap at the joint.

boolean union plate bracket stacking

Source · run via MCP execute_cookbook with id non-overlapping-l-bracket

Build half a symmetric part then mirror to complete it

The part is symmetric across a cardinal plane; build only one half and call mirror to produce the complete symmetric part.

mirror symmetry boolean

Source · run via MCP execute_cookbook with id mirror-half-part

Chained 3-joint revolute arm with collision-free knuckles

You are building a serial robot arm (shoulder, elbow, wrist) as an assembly. Each link carries a tongue + pin at its proximal pivot and a clevis at its distal pivot (disjoint axial ranges, see revolute-joint-knuckle), so every joint is collision-free at any angle; the joint limits and link lengths keep non-adjacent links clear of each other and of the base at every combination of limits.

assembly connector mate revolute joint

Source · run via MCP execute_cookbook with id chained-revolute-arm

Chamfer a canonical face after the part is rotated

You rotated a primitive and now want to chamfer one of its canonical faces by name (face-name semantics survive transforms).

chamfer rotate face-ref edge-features

Source · run via MCP execute_cookbook with id chamfer-rotated-face

Check a design against a load with FEA and gate on the safety factor

The design has to carry a real load and you need evidence, not a guess: peak von Mises stress, peak displacement, and a safety factor against the material's yield. Declare the study on the shape with shape.feaStudy({ material, fixed, loads, meshSize?, minSafetyFactor? }) — `fixed` and `loads[].faces` take the same FaceQuery / @kc[...] selectors as the rest of the API, and `force` is the TOTAL newtons on those faces. Declaring minSafetyFactor makes it an enforcement gate: evaluate_script fails with fea.safety-factor.below-min and names the governing region. Then run run_fea for the full summary, per-region hot spots and heatmap PNGs. Needs the external CalculiX + gmsh toolchain; check with fea_summary({}). Use this instead of verify({ check: 'load-capacity' }) when the geometry is not a plain cantilever beam or when you need to know WHERE it is overloaded.

fea stress load

Source · run via MCP execute_cookbook with id fea-study-safety-factor-gate

Check FDM printability and choose a support-free print orientation

You are about to slice or send a model to an FDM printer and want to know first whether it prints cleanly — no unsupported overhangs, no over-long bridges, walls at least 2 x the nozzle, no pins or holes too small for the nozzle, enough bed contact, fits the printer bed. Declare dfmSpec({ process: 'fdm' }) and evaluate; the dfm.fdm.* diagnostics name the overhang area and locus, and the hint gives the axis-aligned rotation that minimises unsupported area ("rotate -90° about Y ... drops from 938.2 to 0.0 mm²"). Apply it by declaring that buildDirection, which the gcode export also slices in. Full report per orientation via verify({ check: 'dfm' }) or kernelcad dfm.

manufacturing overhang print-orientation

Source · run via MCP execute_cookbook with id fdm-printability-and-print-orientation

Check whether an actuator can hold a joint against gravity

A revolute or prismatic joint drives a downstream mass against gravity (a robot arm shoulder, a lift stage) and you need to know whether the declared actuator torque/force is sufficient — not just whether the mechanism is collision-free. Declare actuator: { torqueNm } (revolute) or actuator: { forceN } (prismatic) on the joint, then call kinematic.checkStaticHold(arm, opts). Real mass properties come from the part's geometry + declared density/material; the worst pose across the joint's declared range is reported alongside the margin. Fires assembly.joint.static-hold.exceeded when the actuator is undersized, assembly.joint.static-hold.margin-low when it clears but under the requested safety margin.

assembly connector mate revolute hinge joint static-hold actuator torque kinematic

Source · run via MCP execute_cookbook with id static-hold-actuator-torque-check

Clamshell enclosure release pack — clevis spine, lid swing, materials

Prompt asks for a clamshell enclosure release pack: two walled shells on a clevis spine, a lidDeg swing with animationView, named materials, and a drawing/BOM/USD checklist. Declare lidDeg with param() in the same block as animationView — tracks must name that live param. The lid is modeled open, side by side with the base; limits stop it before the shells fold onto each other. A gasket-sealed close is not modeled. No latch mate, no joint.scissorLift, no closed-loop FK. After evaluate_script reports mechanism=real, export BOM and a PDF or SVG drawing, and usd-isaac with an explicit drive on the hinge only. Report FEA UNVERIFIED unless CalculiX and gmsh are present. Prefer design_loop until green.

assembly connector mate revolute hinge joint parameter material bom manufacturing datum

Source · run via MCP execute_cookbook with id clamshell-enclosure-release-pack

Clamshell hinge between a base and a lid, joined by a revolute mate

You are modeling a laptop-lid-style clamshell hinge, or any assembly where one rigid body swings about a fixed pivot line on another rigid body. Declare a matching axis connector on both bodies along the physical hinge line, then join them with a revolute mate and limitsDeg to bound the swing angle. Relevant for hinge, revolute joint, or assembly with connectors and mates.

assembly connector mate revolute hinge joint

Source · run via MCP execute_cookbook with id clamshell-hinge-two-part-assembly

Close the print loop — export gcode, then send_to_printer

You have a finished, watertight kernelCAD part and want to go straight to a physical print — slice it to G-code with a real slicer (no manual GUI step), then upload it to a network-connected printer and start the print, without a human touching a slicer or a printer's touchscreen.

manufacturing gcode printer parameter

Source · run via MCP execute_cookbook with id gcode-export-and-print

Collision geometry as convex pieces so a non-convex body has no phantom physics contact

A body is not convex (a plate with rods, a shaft with side lugs, an L bracket) and a physics check reports collisions in the empty space inside its convex hull. Declare its collision geometry as a few convex shapes with .collision([...]); the physics export then emits one mesh geom per piece instead of one hull of the whole body. Mass and inertia still come from the real shape.

assembly mate revolute joint kinematic

Source · run via MCP execute_cookbook with id part-collision-convex-pieces

Compact GT2 belt-driven rotary actuator — housing, shaft, 608 bearing, cover

Prompt asks for a compact manufacturable GT2 belt-driven rotary actuator, not a stack of boxes: a machined housing with cavity walls, a bearing-seat bore, floor bosses, filleted edges, and a four-hole mounting pattern; two separate 20-tooth 2 mm-pitch pulleys; a closed belt; a shaft and 608-style bearing as separate bodies; a removable cover; named materials. The belt is a geometric cord and the pulley teeth are rounded nubs — not tooth meshing, pretension, or power transmission. Do not export USD Isaac: the cylindrical shaft/bearing mate fails with export.usd.joint-unsupported. After a full evaluate_script (not dry-run), inspect BOM and export a PDF or SVG drawing. Auto-GD&T in the script is generated annotation, not a manufacturing certification. Prefer design_loop until green.

assembly connector mate belt pulley drive bearing shaft material manufacturing fillet hole plate

Source · run via MCP execute_cookbook with id gt2-shop-release-actuator

Compare a plain fillet vs a G2 blend with continuity inspect and zebra

You filleted or blended a freeform panel and need numbers, not a guess: is the join G0, G1, or G2? inspect({ of: 'continuity' }) samples each shared edge for position gap, normal jump and curvature difference. inspect({ of: 'curvature' }) reports per-face Gaussian and mean curvature (sphere 1/r², cylinder Gaussian 0 and |H|=1/(2r)). render_preview overlay zebra / curvature / continuity is the picture of those numbers.

continuity

Source · run via MCP execute_cookbook with id surface-quality-fillet-vs-g2

Compose multiple primitives by translate then union

Simple blockouts only — compose primitives by translate+union without overlap. NOT for real / production / complex / enclosure / gearbox / bearing housing / robot-arm prompts (use multi-feature-machined-housing or multi-body-mechanism-real-proportions instead).

boolean union translate stacking primitive

Source · run via MCP execute_cookbook with id union-of-stacked-primitives

Countersunk hole seating a flat-head screw flush

You need countersunk holes whose cone matches a flat-head screw so the head sits flush: hole or holes with countersink { diameter, angleDeg } cut a real cone widest at the entry face, and a revolved 90° head of the same diameter fills it with no gap on the cone and no overlap (M3–M6 ISO 10642 table).

fastener revolve assembly

Source · run via MCP execute_cookbook with id countersunk-flat-head-screw

Cylindrical wall or ring via path + revolve

You want a thin cylindrical wall, ring, or tube — author the rectangular profile via path() with the inner radius as the x offset, then call .revolve() to sweep it around Z.

revolve sketch primitive

Source · run via MCP execute_cookbook with id revolve-rectangular-profile

Declare a connector and join parts with a revolute mate

The model has multiple mechanical parts (not a single fused body) that need a named pivot between them. Declare an axis connector on each part with partRef.connector(name, { type: 'axis', origin: { kind: 'vec3', value: [...] }, axis: [...] }), then join the connectors with arm.mate(name, 'partA.conn', 'partB.conn', 'revolute', { limitsDeg: [min, max] }). This is the canonical assembly-topology vocabulary for hinges, elbows, and any revolute joint — connector origins must use the tagged { kind: 'vec3', value: [...] } form, not a bare [x, y, z] array.

assembly connector mate revolute hinge joint

Source · run via MCP execute_cookbook with id assembly-connector-and-revolute-mate

Declare dimension callouts on the 3D viewer

You want the viewer to show a named measurement on the model, for example the spacing between two holes or a hole diameter, by declaring it with shape.dimension() in the script. Labels are names, the viewer adds the value; open the shared link with ?dims=1 to force the callouts on.

dimension callout hole-spacing annotation

Source · run via MCP execute_cookbook with id dimension-callouts

Dense infill only where an FDM print is stressed (FEA-graded infill 3MF)

A 3D print carries a load and the user wants it strong where it matters and light everywhere else. Declare the load case with shape.feaStudy({ material, fixed, loads }) — fix the mounting holes, load the face the force acts on, force in TOTAL newtons — then export a 3MF with options.infill { fromFea: '<study name>' | true }. The export solves the study, splits the volume into stress bands relative to yield (default < 15 % -> 10 %, 15-40 % -> 25 %, > 40 % -> 60 % gyroid; override with infill.bands [{ name, fromYield, densityPercent }]) and writes one modifier volume per dense band with its own infill density (Orca/Bambu format by default; options.slicer 'prusa' writes PrusaSlicer's format). The result carries infill { bands (volume % per band), saving (filament + time vs uniform infill at the high density), fea (peak stress, safety factor), images { heatmap, bands, cutaway } }. Requires the LOCAL CalculiX + gmsh toolchain (check with fea_summary({})); without it the export fails with fea.solver.unavailable and writes nothing. The two slicer formats are not interchangeable: pick the slicer the file opens in. The FEA treats the print as solid, so the safety factor is an upper bound.

fea stress load printer export bracket

Source · run via MCP execute_cookbook with id stress-graded-infill-fdm

DXF for laser, waterjet and CNC — flat blanks, panels, cut lists and sections

You need a 2D cut file — a flat blank with holes and slots, a panel, an extruded profile, or a whole cut list of flat panels — or a section of any 3D body at one height (plans, floor plans, profiles). Export format dxf finds the blank's own plane in any orientation and writes the outline and holes with exact arcs and circles.

export manufacturing

Source · run via MCP execute_cookbook with id export-dxf-flat-parts

Enclosure base and screw-on lid with corner bosses and clearance holes

Prompt asks for an electronics enclosure with a removable screw-on lid/cover (not a hinged clamshell). Build a walled base with corner bosses + lid with matching clearance holes. Prefer this over `clamshell-hinge-two-part-assembly` when the user wants fasteners, not a revolute hinge.

shell hole pocket fillet plate parameter manufacturing assembly subtract

Source · run via MCP execute_cookbook with id enclosure-lid-with-screw-bosses

Explicit 2D B-spline segment via path().nurbsSegment() control net

You have an explicit B-spline control polygon (programmatic generation, round-tripping from external CAD, when precise shape control beats waypoint convenience) and want a 2D path segment authored from the control net directly. The first control point must match the current pen position within 1e-6 mm; the pen ends at the last control point.

primitive sketch extrude

Source · run via MCP execute_cookbook with id path-nurbs-segment-explicit

Exploded isometric with BOM balloons and a bill table

You need an exploded isometric of a multi-body assembly — bodies pulled apart along mate axes or radially from the centroid — with BOM-numbered balloons and a bill table on a svg-drawing sheet, or the same explode on render_preview.

exploded-view balloons drawing bom

Source · run via MCP execute_cookbook with id exploded-assembly-drawing

Export a mated assembly to a USD Isaac physics stage

The consumer is a GPU physics / robot-learning stack that imports a UsdPhysics stage directly instead of parsing URDF or SDF. Author parts with a named material (it seeds both mass and appearance), axis connectors, and fastened / revolute / prismatic mates exactly as for urdf, then call export({ target: 'model', format: 'usd-isaac', output_path: 'robot.usda' }). You get an articulation root, one rigid body per link at its solved pose with mass and principal inertia, one PhysicsRevoluteJoint / PhysicsPrismaticJoint / PhysicsFixedJoint per mate with limits, UsdPreviewSurface materials, and a meshes/<link>.usda layer per link. Declare actuator gains with options.drives { <mate>: { stiffness, damping } } — none are invented. Planar, cylindrical, pin_slot and ball mates fail closed with export.usd.joint-unsupported.

assembly mate revolute export

Source · run via MCP execute_cookbook with id export-two-link-arm-to-usd-isaac

Export a slicer-ready multi-colour 3MF (parts on the plate, one filament per colour)

You want a model to open in a desktop slicer ready to print — every assembly member a named object with its colour and material, either packed on the bed at Z=0 without overlap or kept together as one multi-colour object (an inlay), each colour on its own filament slot — instead of a bare STL or already-sliced G-code.

manufacturing export printer assembly

Source · run via MCP execute_cookbook with id slicer-ready-3mf

Extrude a gasket from a solid cross-section

You have a 3D part (an imported STEP or a boolean result) and need a 2D profile from its cross-section to extrude a gasket, spacer, or shim — or to re-dimension the section. sectionSketch returns a real Sketch whose arcs stay exact, with holes as inner loops, so one extrude reproduces the cross-section.

sketch extrude hole boolean plate subtract

Source · run via MCP execute_cookbook with id section-sketch-gasket

FDM print fit clearance by fit type (press/snap/slip/running) checked by dfmSpec

Two printed parts must fit together (lid lip in a box, pin in a hole, slider in a slot, snap-fit catch). Pick the per-side clearance from the fit type as a param, size the female feature with it (hole diameter + 2c, lip width - 2c), and declare `dfmSpec({ process: 'fdm', printer, minWall, minClearance })` so every evaluate measures the real gap and the bed fit. Do not hard-code an unexplained 0.2.

tolerance printer manufacturing choice-param hole assembly print-orientation

Source · run via MCP execute_cookbook with id fdm-fit-clearance-by-fit-type

Fillet a face by name on a translated primitive

You translated a primitive and now want to fillet one of its canonical faces by name (canonical face refs survive translate).

fillet translate face-ref edge-features

Source · run via MCP execute_cookbook with id fillet-translated-shape

Fillet only the rim of a hole after subtract

After subtracting a hole or pocket, you want to round only the rim of the resulting opening — not every edge in the part.

fillet subtract face-ref edge-features

Source · run via MCP execute_cookbook with id fillet-face-after-subtract

Find out what material changed between revisions of a model

You edited a script and need to know what physically changed, not just that something did. A signed volume delta is ambiguous — a boss that grew and a pocket that deepened report the same magnitude, and a body that only moved reports zero. Call diff_geometry({ baseFile, params }) to re-lower the SAME script with different param() values, or diff_geometry({ baseFile, file }) to compare separate scripts. Per matched body you get addedMm3 = volume(revised-base), removedMm3 = volume(base-revised), commonMm3, exact bbox/face/edge/hole-count deltas, a surface deviation, and a verdict — identical | moved | resized | topology-changed. Branch on the verdict; quote the numbers. Author the model with named params and named features (as below) so both the override form and the report read cleanly. Reach for this when diff_scripts sets deeperDiffAvailable, instead of re-rendering and eyeballing.

diff compare revision

Source · run via MCP execute_cookbook with id diff-two-model-versions-by-material

Flat-pack tab-and-slot joint — flush tab, clearance on the slot

You are joining flat stock (laser/CNC plywood, acrylic, sheet) with an interlocking tab-and-slot. The through-tab must span the full mating wall thickness — flush or slightly proud, never recessed — and the fit clearance belongs on the slot, not on the tab.

joinery subtract union plate pocket parameter

Source · run via MCP execute_cookbook with id tab-slot-flush-joint

G2-blend adjacent spines then sweep a weld along a surface intersection

You need a curvature-continuous blend between adjacent 3D curves, or the exact intersection curve of crossing faces (a weld seam, a trim spine) as a Curve3D you can sweep.

sketch primitive intersect

Source · run via MCP execute_cookbook with id g2-bridge-and-intersection-curve

Gate a branch edit before merging a multi-agent assembly change

You edited a shared assembly on a branch or worktree and need to know whether it still merges with head and keeps every requirement that passed at head green, before opening or merging a PR.

collaboration merge gate requirement cli assembly

Source · run via MCP execute_cookbook with id collab-local-gate

Gate a collaborative edit on the shared requirements ledger

Two agents edit different parts of one assembly and a shared interface requirement must stay green. Merge on feature id, evaluate only the merged candidate, and reject the submitter whose edit breaks the requirement instead of silently landing it.

collaboration merge gate requirement assembly

Source · run via MCP execute_cookbook with id collab-gate

Gridfinity bin with base profile, magnets, dividers and stacking lip

You need a Gridfinity-compatible storage bin: X × Y grid units on the 42 mm pitch (0.5 mm clearance), height in 7 mm units, one profiled foot per cell (0.8 / 1.8 / 2.15 mm = 4.75 mm), optional Ø6 × 2 mm magnet holes at ±13 mm, optional dividers, and a stacking lip (0.7 / 1.8 / 1.9 mm). The script throws a clear error when magnets do not fit the foot or the floor, or when the bin is too shallow for a cavity under the lip.

parameter stacking hole manufacturing extrude chamfer

Source · run via MCP execute_cookbook with id gridfinity-bin

Ground a photo trace before building geometry from it

You want geometry from a photo or picture. Call MCP `trace_from_image` (do not type polygon points by eye), then use this when you want to know which returned waypoints are directly measured vs guessed before you feed them into path().spline() — and how to lock down a real-world scale before committing geometry. `referenceImage(path, { plane, scale })` only overlays the photo in Studio for visual checks; it does not trace.

reference-image scale-anchor assumption-ledger

Source · run via MCP execute_cookbook with id resolve-photo-trace-assumptions

GT2 timing-belt drive with pitch-diameter pulleys

You need a GT2 timing-belt drive: two toothed pulleys at a center distance, with belt length computed from pitch diameters and center distance then rounded to a real GT2 tooth count (2 mm pitch).

belt pulley drive extrude sketch assembly parameter

Source · run via MCP execute_cookbook with id gt2-timing-belt-drive

Heat-set threaded insert pilot holes for FDM prints (M2.5/M3/M4)

A printed part takes brass heat-set (melt-in) threaded inserts. Cut the pilot with `hole()` / `holes()` (blind, insert length + 1 mm deep, with a small countersink lead-in), sized from the insert maker's table — not the screw's tap drill and not a subtracted cylinder. Keep >= 1.6 mm of wall around the pilot.

hole fastener thread manufacturing printer choice-param plate

Source · run via MCP execute_cookbook with id heat-set-insert-pilot

Hex nut trap pocket with bolt clearance hole (M3-M6, FDM clearance)

A printed or machined part needs a captive hex nut under a bolt. Cut the through clearance hole with `hole()` and the hexagonal pocket with `cutout(hexPath, { face: 'bottom', depth })`, sized from the nut's across-flats (AF) + 2 x clearance and nut height + clearance. Do not subtract a cylinder or a hand-placed prism.

hole cutout hex fastener bolt pocket manufacturing choice-param

Source · run via MCP execute_cookbook with id hex-nut-trap-bolt-clearance

Involute spur gear mesh at module pitch

You need a meshing involute spur gear pair (module, tooth counts, 20° pressure angle, face width, bore, backlash). Use the `spurGear(...)` primitive: it generates true involute flanks, a trochoid root fillet and correct undercut as ONE manifold solid. Center distance is m(z1+z2)/2.

gear involute extrude parameter assembly

Source · run via MCP execute_cookbook with id involute-spur-gear-pair

ISO metric hex fastener with helical thread

You need an ISO metric hex bolt threaded into its hex nut (M3–M12) whose pitch, hex across-flats, and head height come from a params table. The bolt thread is a real 60° V profile swept with sweep(helix(...), { spine: 'helix' }); the nut's internal thread is the thread option of its bore (pitch, modeled, play), seated in phase so the two parts never interfere. A cosmetic thread (modeled: false) keeps only the minor-diameter bore for speed.

fastener helix sweep hex thread parameter assembly

Source · run via MCP execute_cookbook with id iso-metric-bolt-and-nut

Linear shaft seated in a deep-groove ball bearing via cylindrical mate

Prompt asks for a shaft in a bearing, bearing seat with shaft, or rotating shaft on a deep-groove ball bearing. Prefer catalog `lib.fetchPart('shaft-d8-l50')` + `lib.standard.bearing608()` when the parts catalog is available; this snippet uses BREP stand-ins so evaluate stays offline/CI-green. Mate with the 4-arg form `arm.mate(name, 'shaft.axis', 'bearing.inner-bore', 'cylindrical')` — do not Boolean-union them into one solid.

assembly mate connector catalog shaft bearing parameter

Source · run via MCP execute_cookbook with id shaft-and-bearing-cylindrical-mate

Loft a stylized body shell from polyline cross-section profiles

Stylized / mechanism-demo shell ONLY — recognizable printable boxy loft from polyline stations (toy car, boat hull demo, fuselage blockout). NOT for sports-car / organic automotive bodies. For organic car bodies use automotive-body-envelope instead (lookup_cookbook("automotive body envelope")).

shell sketch symmetry mirror

Source · run via MCP execute_cookbook with id loft-body-shell-from-profiles

Multi-feature machined housing with bosses, pockets, bearing seats, fillets

Prompt asks for a real / production / complex mechanical housing, bearing housing, gearbox-ish enclosure, or multi-feature machined part with walls, fillets, bosses, pockets, and hole patterns. Prefer this over union-of-stacked-primitives — Adam-level bar requires manufacturing-intent BREP, not a toy stack of boxes.

shell hole pocket fillet plate parameter manufacturing subtract primitive

Source · run via MCP execute_cookbook with id multi-feature-machined-housing

Named engineering material presets driving mass

You want engineering material presets by grade name (mild-steel, aluminum-6061, pla, petg, abs, nylon) to drive the mass, default finish and recorded material of identical geometry. One registry serves arm.part({ material }), inspect({ of: 'mass', material }), feaStudy({ material }) and .finish(), so the grade name works everywhere; steel / aluminum / pet are aliases for the same grades.

material mass density assembly

Source · run via MCP execute_cookbook with id engineering-material-presets-mass

NEMA plate, motor, shaft, bearing, and spur pair as one drive stack

Prompt asks for one manufacturable drive stack: a NEMA-style mounting plate, a motor stand-in, two shafts in bearing seats, and an involute spur pair under the plate. Prefer catalog nema17 and bearing608 when those parts are available; this script uses BREP stand-ins so evaluate stays offline. Spur flanks are a static geometric mesh at m(z1+z2)/2 — not tooth-contact dynamics, not coupleMates, not a gear-pair transmission. Do not animate the pair. Do not export USD Isaac: the cylindrical drive-shaft mate fails with export.usd.joint-unsupported. The idler shaft is fastened. Only one of the four bolt-hole frames is mated — four fastened mates on that pair plus the cylindrical mate are a loop the solver refuses. After a full evaluate_script, inspect BOM and export a PDF or SVG drawing. Datums are annotation, not a certification. Report FEA UNVERIFIED unless CalculiX and gmsh are present. Prefer design_loop until green.

plate hole assembly mate connector motor nema shaft bearing gear involute material manufacturing datum

Source · run via MCP execute_cookbook with id nema-shaft-spur-drive-stack

NEMA-17 style mounting plate with four-bolt pattern and fastened motor

Prompt asks for a NEMA mounting plate, stepper motor mount, or motor flange plate with the standard four-bolt pattern (±15.5 mm, Ø3.2 clearance). Prefer catalog `lib.standard.nema17()` when the parts catalog is available; this snippet uses a BREP stand-in motor so evaluate stays offline/CI-green. `.holes()` promotes `bolt-holes-N` onto the plate; the explicit `plate.connector` calls replace those frames with numeric origins. Mate with the 4-arg form.

plate hole assembly mate connector catalog fasteners motor nema parameter

Source · run via MCP execute_cookbook with id nema-motor-mounting-plate

Network-style body via multi-patch sew (not >2 loft rails)

You need a network-style organic body / multi-guide fairing and loft accepts at most 2 rails. Do NOT pass >2 rails to Sketch.loft — panel with surfaceFromCurves / surfaceFromBoundary, sew closed, thicken, then G2 fillet. Pair with automotive-body-envelope for car proportions.

shell continuity sweep fillet

Source · run via MCP execute_cookbook with id network-body-panels-via-sew

Open-chain multi-body mechanism with real machine-element proportions

Prompt asks for a real / complex robot arm, cobot, open-chain mechanism, or multi-body machine with joints. Bodies must read as plates, towers, yokes — not stick figures. Reuse supported-arm lessons: connectors + revolute mates with limits, jointSupport / mechanicalJoint intent, grounded base-frame, and a tendon or mechanicalJoint so gravity-hold passes. If you add animationView, its tracks must name live param() declarations in the same script — do not drop those param() calls when rewriting (animation.param.unknown). Prefer design_loop until review is green.

assembly connector mate revolute joint kinematic plate parameter

Source · run via MCP execute_cookbook with id multi-body-mechanism-real-proportions

Organic 2D outline via path().spline() N-waypoint B-spline

You need a freeform 2D outline (eyewear brow, ergonomic grip silhouette, sneaker midsole) authored as a sequence of measured waypoints, and arc primitives + smoothSpline are too rigid. Drop a single .spline([...]) call into the path() chain after moveTo; the path interpolates through every waypoint at degree 3.

primitive sketch extrude

Source · run via MCP execute_cookbook with id path-spline-organic-outline

Parametric bolt-hole skeleton

You want a compact bolt-hole part with an editable bolt-diameter parameter that can be changed later.

parameter bolt hole subtract

Source · run via MCP execute_cookbook with id parametric-bolt-pattern-skeleton

Parametric cradle and retention rail for a hole-less PCB

A rectangular development board has no mounting holes and needs removable edge retention. Creates a perimeter floor frame with an open pin field, two longitudinal edge rails with inward lips and supported overhanging catches, clearance below the board for header pins, and a through-opening at one selected connector face. Set `connectorOffsetMm` to slide the opening along that edge (`0` keeps it centered); the board layout rotates with the selected face. All dimensions are millimetres; the cradle bottom is at Z=0 so it can sit on an enclosure floor. Confirm connector and component keep-outs against the real board before manufacture.

parameter choice-param plate cutout manufacturing

Source · run via MCP execute_cookbook with id holeless-board-cradle

Planetary stage with sun, planets, and internalSpurGear ring

You need a coaxial planetary gear stage (sun + planet(s) + internal ring) with true involute teeth, not cylinders. Use `spurGear` for the sun and planets, `internalSpurGear` (aliases `ringGear` / `internalGear`) for the annulus, and `planetaryToothCompatibility({ sunTeeth, planetTeeth, ringTeeth })` so Zring = Zsun + 2·Zplanet. Carrier pins sit at centre distance m(Zsun+Zplanet)/2.

gear involute planetary assembly parameter

Source · run via MCP execute_cookbook with id planetary-stage-internal-ring

Plate with a through-hole and a filleted top rim around the hole

You want a parametric plate, drill a through-hole, and round the rim where the hole meets the top face.

fillet subtract hole plate parameter

Source · run via MCP execute_cookbook with id subtract-then-fillet-rim

Plate with rounded corners via extrudeRoundedRect

You want a flat plate with rounded corners; use the dedicated rounded-rect extrude rather than building corners by hand.

extrude plate primitive

Source · run via MCP execute_cookbook with id extrude-rounded-rect-plate

Printable engineering drawing as a PDF on a standard sheet, in one export call

You need a drawing to send to a shop or publish — a vector PDF on an ISO A0–A4 or ANSI A–E sheet with orthographic views, hidden lines, the automatic dimensions, hole callouts and GD&T, and a title block carrying title, part name, material, scale, units, projection, sheet size, date and revision. Export format pdf-drawing; the sheet content is the svg-drawing sheet.

drawing dimension gdt tolerance datum

Source · run via MCP execute_cookbook with id drawing-pdf-sheet

Production 4-DOF robot arm — bridged yokes, clearances, mechanicalJoint chain, reach animation

Prompt asks for a production multi-body robot arm with at least 4 revolute DOF (base yaw, shoulder, elbow, wrist), seated servos, mechanicalJoint chain, mechanism=real, optional gravity/actuator check, and animationView reach cycle. CRITICAL: fuse every yoke / servo-shelf / cheek into its parent link with .union() so each part is ONE solid load path — floating yoke fragments fail design_loop / review_cad (floating-body geometry gate + attachment-plausibility). Pitch joints are joint.clevis with the link tube seated in the tongue and the parent collar stopped just short of that disk. Yaw is a spigot in a bored collar (sub-millimetre running fit, no shared volume). Prefer design_loop until green. See also multi-body-mechanism-real-proportions and examples/robot-arm/compact- supported-arm.kcad.ts.

assembly connector mate revolute joint kinematic plate parameter actuator

Source · run via MCP execute_cookbook with id multi-dof-robot-arm-4axis

Quintic Hermite G2 bridge between NURBS curve flanks

You have a pair of existing NURBS curves whose tangents and curvatures match at the join point and you want a G2-continuous compound spine (so a downstream variableSweep does not kink at the join). Author the flanks via nurbsCurve, then drop a hermiteG2 between them with matching endpoint tangents and curvatures.

primitive

Source · run via MCP execute_cookbook with id hermite-g2-blend

Real car body from measured station sections (ported open hatchback)

You need a car / van / fairing body that reads as a REAL vehicle, not a child-like extruded side outline with a box roof. Copy this ported hatchback (station tables measured from an open CC-BY model) and re-param it; for a different car, measure its stations from an open reference instead of free-handing. Degree-3 nurbsSegment sections lofted in short runs, greenhouse as a second loft, glass/lamps as thin separate skins, wheels in arches.

shell sketch continuity sweep assembly reference-image

Source · run via MCP execute_cookbook with id automotive-body-envelope

Rebuild an editable model from an engineering drawing PDF

You were handed a vector PDF of an engineering drawing (orthographic views, lettered dimensions, a title block) and need an editable model, not a trace of a picture. Call drawing_to_cad({ path, out }): it reads the linework and dimension text, identifies the views by projection alignment, lets stated dimensions win over drawn lengths, extrudes the silhouette of the one non-rectangular view (or revolves a turned shaft), cuts ⌀ callouts along the axis of the view they are drawn in, and writes a script like the one below plus a ledger. Branch on fidelity.verdict, then settle the open ledger facts (mirrored positions, measured values, disagreements) with resolve_assumptions before relying on the model. A scanned page fails with reference.drawing.raster-only; use trace_from_image for that.

drawing dimension assumption-ledger

Source · run via MCP execute_cookbook with id rebuild-model-from-drawing-pdf

Rebuild an editable model from an STL, OBJ or 3MF mesh

You were handed an STL, OBJ or 3MF of a mostly prismatic mechanical component and need named params and real features, not the faceted solid lib.fromSTL gives you. Call mesh_to_features({ file, out }) (CLI: kernelcad reconstruct scan.stl -o rebuilt.kcad.ts). It measures the mesh, emits a script like the one below — a revolve or extruded profile, drilled and counterbored bores placed on face queries relative to the entry face centroid — then evaluates that script and compares it with the mesh. Rely on the dimensions only when fidelity.verdict is faithful; otherwise read unmatchedRegions and the ledger. Snapped values are ledger facts whose ids are the param names, so resolve_assumptions turns a correction straight into set_param overrides.

mesh reverse-engineering parameter

Source · run via MCP execute_cookbook with id rebuild-editable-model-from-mesh

Repair a degenerate 90-degree draft angle

evaluate_script reported feature.draft.failed because the draft angle was geometrically degenerate (typically 90 degrees) and you want a mould-release angle derived from the lowerer, not a guess.

draft

Source · run via MCP execute_cookbook with id repair-draft-angle

Repair a failing fillet whose radius is larger than the edges

evaluate_script reported feature.edge-feature.short-edges-skipped (every target edge is shorter than twice the radius) and you want a bounded fix instead of guessing a new radius.

fillet chamfer edge-features

Source · run via MCP execute_cookbook with id repair-oversized-fillet

Repair a revolve profile that crossed the rotation axis

evaluate_script reported feature.revolve.crosses-axis (a path x-coordinate was negative) and you want the profile clamped onto x >= 0 instead of rewriting the sketch by hand.

revolve sketch

Source · run via MCP execute_cookbook with id repair-revolve-crosses-axis

Repair a shell thicker than half the solid

evaluate_script reported feature.kernel-failed on a .shell() whose wall is thicker than half the thinnest bounding-box dimension, and you want a feasible thickness derived from that bbox.

shell

Source · run via MCP execute_cookbook with id repair-shell-too-thick

Repair a tangentCircle whose radius cannot sit outside existing circles

evaluate_script reported sketch.tangency.no-solution because a tangentCircle radius was smaller than (centre-distance - r1 - r2) / 2 between existing circles, and you want the radius derived from that gap.

tangency sketch

Source · run via MCP execute_cookbook with id repair-tangency-radius

Repair an emboss whose glyphs sit over a void

evaluate_script reported feature.emboss-text.boolean-noop because the glyph prism was parked over a void and you want the UV anchor moved onto remaining solid.

emboss

Source · run via MCP execute_cookbook with id repair-emboss-over-hole

Revolute joint knuckle (clevis + tongue + pin) that never collides

You are building the physical hinge of a revolute joint (robot-arm elbow, lid, gripper finger). Knuckles built as boxes that straddle the pivot collide at every angle. Split the pivot along the ROTATION AXIS instead: the parent's clevis cheeks and the child's tongue occupy disjoint axial ranges (a gap between them), both are round about the pivot, and a pin on the child runs through clearance bores in the cheeks. Then no angle can make them overlap, and the mechanism gates pass at every limit.

assembly connector mate revolute hinge joint

Source · run via MCP execute_cookbook with id revolute-joint-knuckle

Ring band with a swelling crown (variableSweep on a closed spine)

You need a smooth organic loop whose thickness changes around it: a finger ring with a thicker crown, a loop handle, a bangle, a torus-like grip. Build a closed spline3d spine, sweep circular (or any closed) profiles that grow and shrink along it with variableSweep, then cut any functional surface — here a true round bore — with a boolean. On a closed spine t = 1 is the seam and reuses the t = 0 profile. The add_variable_sweep MCP tool authors the same sweep from spine_points + spine_closed + per-section radius.

sweep ring subtract

Source · run via MCP execute_cookbook with id variable-sweep-ring-band

Scissor-lift table — open-chain lift DOF + mid-pose X-links (production pattern)

Prompt asks for a scissor-lift / scissor-jack table with base, platform, X-pattern links, mechanism=real, and animationView raising the platform. This is the production table pattern. A true closed-loop scissor (crossed links + base/platform sliders, the lift angle driven, both sliders solved) is supported by the loop-closure solver — see the kernelcad-kinematic cookbook 04-scissor-jack-swept for that mechanism. Do NOT invent joint.scissorLift(...). For the table, use this open-chain pattern: one prismatic platform DOF (+ mechanicalJoint) driven by platformZ, industrial X-links fused into base-frame at a representative mid pose, animationView raising the platform. Keep the actuator-mount fastener on solid (center pad under the actuator) so evaluate_script mechanism=real — dry-run / cookbook:evaluate alone miss joint-mesh-gap. Prefer design_loop until green. Gallery examples/gallery/scissor-lift.kcad.ts is fastened pose-only (not mechanism-driven).

assembly connector mate prismatic joint kinematic plate parameter scissor lift

Source · run via MCP execute_cookbook with id scissor-lift-closed-loop

Share-ready hero image and 360° turntable of a finished design

The design is done and you need pictures to share it — a gallery tile, a README image, a social post or a product page — not an engineering review. Colour every part (or give it a material) in the script, then call render_preview({ file, preset: 'publish' }) for ONE studio 'hero' PNG (3/4 front-right, soft contact shadow, white backdrop, 1600×1200; width and height up to 2048; background: 'transparent' for a PNG with alpha, or 'light' / 'dark' / '#rrggbb'). For a seamless 360° loop call capture_animation({ file, turntable: true, output_path: 'x.gif' }) (or .mp4; frames_dir keeps alpha). The camera centres and frames the silhouette itself, so do not add setCameraTarget for these shots. The output is deterministic: re-rendering the same file gives the same pixels. Use the default preset (no preset) while you still iterate on geometry.

render turntable assembly

Source · run via MCP execute_cookbook with id publish-hero-render-and-turntable

Sheet-metal L-bracket from flat blank with one 90-degree bend

Prompt asks for a folded sheet-metal L-bracket, U-channel, flange, or service panel from a flat blank. Use `sheetMetal(profile, { thickness, kFactor })` then `.bend(...)` — not a solid union of two plates — when fabrication intent is sheet + folds. After evaluate/lower, recover the blank with `flattenPattern()` (MCP `flatten_pattern` / inspect bend-table) for laser/CNC.

sheet-metal bend bracket plate parameter manufacturing

Source · run via MCP execute_cookbook with id sheet-metal-l-bracket-bend

Shop-release planetary gearbox — ring, carrier, machined housing, cover

Prompt asks for a shop-release planetary gearbox, not a bare gear set: a machined housing with a ring pocket, floor, mounting holes and a fillet; a carrier with planet pins; a sun shaft; a cover; named materials. Teeth stay true involutes placed so the pitch circles meet. That is a static assembled pose — not tooth-contact dynamics, backlash simulation, or torque through the flanks. Do not coupleMates, do not declare a gear-pair transmission, and do not animate rotation; the kernel will not keep teeth in mesh. Every mate in this script is fastened so usd-isaac is not blocked by a cylindrical joint. After a full evaluate_script, inspect BOM and export a PDF or SVG drawing. Datums are annotation, not a certification. Report FEA UNVERIFIED unless CalculiX and gmsh are present. Prefer design_loop until green.

gear involute planetary assembly connector mate material manufacturing fillet hole bom datum

Source · run via MCP execute_cookbook with id planetary-gearbox-shop-release

SO-ARM100 follower arm — vendor link meshes, STEP jaw, passive horn

The prompt asks for the real SO-ARM100 / SO-100 follower arm, the kernelcad.com hero arm, or a gripper with the vendor moving jaw — not a tube-and-clevis sketch. execute_cookbook({ id: 'so-arm100' }) evaluates examples/robot-arm/so100/so100-arm.kcad.ts (Apache-2.0 link STLs, the Moving_Jaw STEP solid, and the passive horn on the wrist). One-liner: kernelcad evaluate examples/robot-arm/so100/so100-arm.kcad.ts. Do not redraw it as floating cylinders or the primitive 4-DOF cookbook arm.

assembly connector mate revolute joint kinematic parameter actuator

Source · run via MCP execute_cookbook with id so-arm100

Standard hole/fillet/chamfer callouts and a position tolerance on a svg-drawing sheet

You exported a svg-drawing sheet and need standard fabrication callouts — ⌀ hole diameters with THRU/blind/counterbore/countersink, a pattern count, a fillet radius, a chamfer size, a datum letter, and a feature-control-frame tolerance — instead of only the automatic bounding-box dimensions.

hole plate bolt drawing dimension gdt tolerance

Source · run via MCP execute_cookbook with id drawing-hole-and-gdt-callouts

Sweep a param across a tolerance range and re-check the standard gates

A design has a param() whose real-world value varies (a printed hole that comes out oversized, a clearance gap that shrinks under tolerance) and you need to know whether the mechanism stays buildable across that range, not just at the nominal value. Call kinematic.sweepTolerance({ code|file, params, gates }) with one or more param names as { values: [...] } or { min, max, steps }; it re-evaluates the script per cartesian-product combo (capped at 64) and runs the interference / mounting-hole / joint-axis gates (default on) plus reachability when declared, returning a pass/fail table and the first failing combo per gate.

assembly connector mate revolute hinge joint sweep-tolerance tolerance parameter kinematic

Source · run via MCP execute_cookbook with id sweep-tolerance-envelope-check

Sweep a param-driven bore diameter through the mounting-hole gate

A fastened pair of parts has a param()-driven bore diameter and you need to know at which value the mounting-hole gate flips from pass to fail, rather than only checking the nominal.

sweep-tolerance kinematic tolerance

Source · run via MCP execute_cookbook with id sweep-tolerance-hole-diameter

Swept tube along 3D waypoints with corner bend radius

You need a pipe or tube that follows 3D waypoints, with a specified bend radius at each corner, by sweeping a circular profile along a rail whose sharp corners are replaced by sampled arcs of that radius.

sweep tube route sketch

Source · run via MCP execute_cookbook with id pipe-route-swept-tube

T-slot frame corner — two rails, gusset, cap screws, named materials

Prompt asks for a T-slot frame corner as a manufacturable stack: two rails, a gusset on the slot faces, and cap screws with named materials so a BOM has mass. Screws are cylinder-head stand-ins with clearance shanks, not a swept ISO V-thread — use the metric bolt snippet when the prompt needs that thread. T-nuts are not modeled; each shank stops in the slot void. After a full evaluate_script, inspect BOM and export a PDF or SVG drawing. Report FEA UNVERIFIED unless CalculiX and gmsh are present.

extrusion tslot assembly connector mate material bom fastener manufacturing hole

Source · run via MCP execute_cookbook with id tslot-frame-fastener-bom

Tendon-driven finger — motor flexor and extensor straps routed through pulley loops

Prompt asks for a tendon-driven or cable-driven finger, hand or articulated limb where a motor pulls a cable (flexor) and a second cable or a joint spring returns it. Shows arm.tendon with via points on several parts, wrap entries over knuckle cylinders, actuator for an inextensible driven cable (ctrl >= 0 is tension), flat ribbon profile with an albedo texture, and revolute joint torsion springs preloaded with springRefDeg. Pulley loops stand 2 mm off the phalanx face; clevis joints from joint.clevis keep every hinge visible.

assembly mate revolute joint kinematic actuator material

Source · run via MCP execute_cookbook with id tendon-driven-finger-strap-routing

Threaded (tapped) M3/M4/M5/M6 hole with the ISO tap drill via hole({ thread })

The request names a metric screw size (M3, M4, M5, M6...) or says threaded, tapped, tap drill or internal thread. Use `shape.hole(face, { diameter: <nominal>, thread: { pitch } })` / `holes(...)`: the kernel drills the ISO 68-1 minor diameter (d - 1.0825*P, the tap drill) and records the thread for drawings and BOM. Do NOT subtract a plain cylinder of a guessed tap size. `modeled: true` cuts the real helical groove (slow; for printed threads).

hole thread fastener bolt bracket plate choice-param manufacturing

Source · run via MCP execute_cookbook with id threaded-hole-tap-drill

Through-hole sized for a bolt with clearance

You need a through-hole sized for a bolt with a small clearance margin. Use `hole(face, { diameter, depth: 'through' })` (or `holes` for a pattern), not a subtracted cylinder; for a tapped hole see `threaded-hole-tap-drill`.

subtract hole bolt plate parameter

Source · run via MCP execute_cookbook with id clearance-hole-through-plate

Tube bend table, cut length, mass and pressure drop

You need the data a tube bender or a weight and flow estimate works from: corner points, length / rotation / angle rows, cut length, mass and a pressure-drop estimate. Give the tube a density (or a known material) and a flow, evaluate, and read tubes.lines in the result; export bend-table writes one CSV per tube. The ends here are plain points in free space; an end that sits on an assembly part also names it, { point, axis, part }.

tube-routing

Source · run via MCP execute_cookbook with id tube-bend-table-line-report

Tube that branches off another tube (90 degree tee)

One line has to feed two places: two tubes from the same port overlap and fail tube.clearance.overlap. Route one tube from the port (the trunk) and start the second on it with from: { tube, at, axis }. at is the distance along the trunk centreline from its from end, through straights and bends; axis is square to the trunk leg. The branch is cut to the trunk wall and the trunk is not drilled.

tube-routing

Source · run via MCP execute_cookbook with id tube-branch-off-another-tube

Twisted, tapered thin-wall vase (hollow by boolean, not shell)

You need a hollow, open-top vessel whose cross-section twists and tapers with height (a twisted hex vase, a faceted planter, a lamp shade) with an even wall. Build the outer body with variableSweep through per-station profiles, then hollow it by subtracting the same sweep built from profiles inset by the wall thickness — a boolean hollow that works where shell() cannot close the offset (curved faces that meet at sharp edges: multi-station sweeps, ruled lofts, unions of stacked lofts).

sweep shell subtract

Source · run via MCP execute_cookbook with id twisted-tapered-thin-wall-vase

Two fluid lines with a clearance rule between their systems

Two or more tubes of different fluid systems run close together and the systems must keep a set distance apart (fuel from hydraulic, fuel from bleed air). Name the system on each port, declare the distance in tubeSpec({ clearance: { pairs } }), and run the lines side by side at a pitch that keeps the gap. The gate measures surface to surface and names both lines when the gap is too small.

tube-routing

Source · run via MCP execute_cookbook with id tube-clearance-between-fluid-lines

Welded tube frame with a sheet on top — butt-jointed members in one union

A frame, rack, tray, table base or weldment built from tube / bar members, optionally with a sheet or deck on top. Members are cut to fit BETWEEN each other (butt joints) so they touch but never overlap, and the sheet sits on the tubes. Use one union() when the frame is one welded body; use assembly().part() per member when members are separate BOM lines.

union tube plate parameter material manufacturing

Source · run via MCP execute_cookbook with id welded-tube-frame-tray

Wood dado, rabbet, and mortise-and-tenon with fit clearance

You are cutting a dado groove, a rabbet rebate, and a mortise-and-tenon in lumber, with a named fit-clearance param widening the receiving cuts (groove, rebate, mortise) while the male tenon stays nominal.

joinery dado rabbet mortise tenon wood subtract assembly parameter

Source · run via MCP execute_cookbook with id wood-joinery-dado-rabbet-mortise

Wrap a bitmap texture around a cylinder

You need a bitmap texture (label, decal, logo) wrapped onto a cylinder without hand-authoring UVs. Call `shape.wrapTexture(imageRef, { type: 'cylinder', axis })` so UVs are projected from final world-space vertices; `{ type: 'flat' | 'sphere' | 'box' }` cover planar and other wraps.

texture wrap

Source · run via MCP execute_cookbook with id wrap-texture-can-label