MakerSketch Docs
Colour scheme
Light or dark

Appendix

Ask's tools

The tools Ask can call while it works on your part, grouped as Ask sees them (catalogue P18-20261031-tool-cut).

Understand

inspect

Read current Part features, profiles, planar faces and Bodies with signed IDs and saved RGB/opacity; report "bom", "project" or "cut_sheets" reads that instead.

measure

Measure each solid piece, material inside a world-space box (min/max XYZ in mm), or material along a ray (from, dir, optional length).

Argument Type Required Meaning
box BoxArgs no Measure the solid inside this box; omit box and from for each piece's bbox and volume
from [Double] no A ray's start, [x, y, z] in mm, e.g. a hole's mouth; give with dir instead of box
dir [Double] no The ray's direction, [dx, dy, dz], e.g. [0, 0, -1] down a hole from the top
length Double no How far along the ray in mm; default right through the Part
passage String no Development: exact Cut Loft feature representing the fluid volume; omit ray/box fields. Checks actual saved assembly obstructions and bounded connectivity
passageIndex Int no Development: zero-based Cut Loft feature index; overrides passage name
flowLMin Double no Optional assumed steady incompressible flow, 0–10,000 L/min. Mean section speed only; not delivered flow, pressure loss or CFD
stack [StackLinkArgs] no A tolerance stack-up instead of geometry: the sizes in one chain to a gap between mated parts; give on its own
minimum_gap_mm Double no With stack: the smallest gap the fit needs in mm; default 0, no clash

look

Capture the Part as labelled home, top, front or right images on image-capable routes.

Argument Type Required Meaning
section_plane String no Optional section plane for seeing the internal passage/interfaces; pair with section_offset in world mm. Restored after capture
section_offset Double no
isolate [String] no Optional exact printed Body names to isolate for these images; original visibility is restored
representative_corner Bool no true captures a finished representative part/subassembly before repetition: top, side and oblique views. In a new reply assess silhouette, sections, roots, bores and physical interfaces with check {skeleton: {reviewed_parts, form_findings}}. Images alone do not approve form or engineering.
views [String] no Views to see, up to 4 of home, top, front, right; default home and front
presentation Bool no Final review after all edits: true captures assembled views and an opened stack together, then restores the assembled view. Requires saved assembly placement. Read the images in a new reply before finish.

reference

Look up known product dimensions and mounting-hole coordinates from MakerSketch's bounded reference library.

Argument Type Required Meaning
part String yes The product to look up, e.g. "arduino uno", "half breadboard", "raspberry pi 5", "m3 screw", "18650"; or "list" for every part MakerSketch knows

find_reference_images

Search for up to four visual examples using a short query on a search-enabled image-capable route.

Argument Type Required Meaning
query String yes A few words for the object, e.g. "arduino uno test bench" or "headphone stand"

project_state

Read the guided project's current step, purpose, measured goals and verdict.

check

Check the design in one call: components (placed parts, screws and inserts against each other and the Bodies), skeleton (walls, clearance, access, required_parts and reviewed_parts), motion (the declared mechanism over its driver range), reducer (a saved cycloidal stage), printInPlace (printed Bodies meant to move after printing) and print (walls, overhangs, bridges, support and the best way up of every printed Body).

check_reducer

Check the saved balanced cycloidal stage against its actual Bodies over a full repeat cycle and evaluate only declared engineering evidence.

Argument Type Required Meaning
stepsPerInputRevolution Int no Actual-solid samples per input revolution, 8 to 720; default 24

check_print_in_place

Check printed Bodies meant to move after printing, where they are modelled with Z 0 as the bed: a piece with nothing to print on, faces that touch or overlap and fuse, gaps under 0.3 mm, and an underside printed on the Body it moves against.

check_print

Check every printed Body as Make prints it, the same check as Make's Print check: wall thickness, overhangs, bridges, support and the best way up, against the process's design limits.

Argument Type Required Meaning
process String no fdm (the default) or sls
material String no Instead of process: pla, abs, pc, peek, pa12 or tpu-sls; its process follows

catalog

Search and inspect verified purchased components, standard hardware, their lightweight envelopes and named mechanical interfaces.

Argument Type Required Meaning
geometry Bool no With id: include reference geometry/polygons only when needed; dimensions and interfaces are always included
query String no Plain-language component search, such as NEMA 17, MGN12H, 608 bearing or M3 screw; omit when inspecting an id
family String no Optional exact family filter
id String no Stable catalog id returned by search: its size, interfaces with kinds, required parameters and compatibility (what placing needs)
ids [String] no Several stable catalog ids (up to 16) read in one call, each as id gives it
detail String no With id or ids: full adds sourced dimensions, provenance and accuracy; default short
stack_mm Double no With a sized screw id: the thickness it passes through before its thread mates, in mm; checks its length and names the next stock length
into String no With stack_mm: the catalog id of the nut or heat-set insert the screw ends in, or tap

component_check

Check exact frozen component envelopes against other components and manufacturing Bodies, including sourced bounded MGN12 carriage travel, and check every placed metric screw as a fastened joint.

Argument Type Required Meaning
scope_id String no Optional exact assembly occurrence UUID. Checks that subtree against neighbours outside it too; omit for whole assembly.
select String no Optional exact finding id returned by a previous check; highlights that issue in the 3D view
clear_selection Bool no Clear the current analysis highlight; defaults false
stack [StackLinkArgs] no Optional tolerance stack-up for a mated pair: the sizes in one chain to the gap between them; reported as stack_up
minimum_gap_mm Double no With stack: the smallest gap the fit needs in mm; default 0, no clash

bom

Read the bill of materials derived directly from placed purchased and standardized component instances.

design_recipe

Search and inspect an offline mechanical construction library and pinned licensed hardware dimensional tables.

Argument Type Required Meaning
detail String no inspect returns an overview by default; full loads the selected recipe's construction, checks and examples. Dependencies stay summaries and exact dimension records are inspected individually
action String no search finds patterns/data; inspect reads an exact id and normalized lengths_mm; fit calculates one fabrication size without editing geometry; layout places a parallel-shaft gear train in its space
train GearTrainArgs no Layout only: the gear train and the space it must fit
query String no Construction or hardware to find, such as bearing retention, split clamp, M3 socket screw, belt tensioner or ribbed bracket
id String no Exact recipe or dimension-record id returned by search
limit Int no Maximum search matches per category, 1–12; default 8
family String no Search only: exact dimension family, e.g. bearing, capped_bearing, socket_head, clearance, hex_nut, heat_insert, washer. Does not filter recipes
size String no Search only: exact full source size, e.g. M3-0.5 or #4-40. No substitution if absent
standard String no Search only: exact standard or supplier table, e.g. iso4762, din6885 or table_b
parameter String no Fit only: case-sensitive positive length field from inspected lengths_mm; bearing D is OD, d is bore, B is width
allowance_mm Double no Fit only, required: signed allowance in mm; positive enlarges the selected source dimension, negative shrinks it. No automatic process allowance
allowance_basis String no Fit only, required: per_side doubles allowance for opposed faces; total adds it once (diametral allowance or depth change)

checkpoint

Check the assembled skeleton before detail: overlapping pieces, walls and clearance around references, support for magnets/inserts and port/card access. Continue the accepted brief after reviewing the findings.

Argument Type Required Meaning
waterjet WaterjetArgs no A waterjet: retain this layout before solids, then repeat after housing edits. Stations are downstream distances from axis_origin. Checks intake placement and sampled enclosing material, not hydraulic performance.
waterway WaterwayArgs no Waterjet housing refinement: assess the refined water path (may share a call with waterjet; the app takes the section along the shaft axis when none is current). Straight cuts alone are a block-out, not the shaped intake. Edits make it stale.
required_edits [AdditionArgs] no Before additions to a finished Part, retain each new Body or local Add/Cut; rerun checkpoint after building to verify actual material.
required_parts [RequiredPartArgs] no Add the role for the piece you are starting (with its after roles), a piece at a time, never the whole list up front; the ledger names the next piece from what exists, moving train first, casing last. Identical stock quantities are allocated in declaration order. Later calls add roles or substitute references; roles, counts and dependencies stay. No geometry is created.
reviewed_parts [String] no Required Body role names assessed AFTER representative images in a new reply, with form_findings
form_findings [String] no Unresolved silhouette, root/blend, bore and interface issues seen in the representative parts; [] means none seen
reference [String] no Reference Body names or exact placed component instance_id values from inspect; use the catalogue board instance instead of redrawing its PCB
wall_mm Double no The case's intended wall in mm; default 2
object String no enclosure gets the case rules (hollow walls, ports and cards); bracket (screwed to a wall, loaded out from it) gets the wall-screw lever-arm check; stand, mechanism or other neither. Defaults to enclosure only when a reference is a board
up [Double] no Bracket only: the world direction that is up on the wall in this pose, default [0,0,1]; a bracket printed on its side with its leg along +Y is [0,1,0]
access [AccessArgs] no Ports and cards that must be reachable
built String yes One plain sentence: what the skeleton is, piece by piece
next String yes One plain sentence: the detail you'll add next

Sketch

sketch

Open Top/XY, Front/XZ or Right/YZ, a parallel planar face at its world position at_mm (Top's z, Front's y, Right's x) with outward, or reopen with edit/editIndex.

Argument Type Required Meaning
plane String yes Origin plane: top (XY), front (XZ) or right (YZ)
at_mm Double no Sketch on a flat face by where it is in the world, in mm: Top's z, Front's y, Right's x (y = 92 is at_mm 92 on Front). Use this, not offset
offset Double no Only to copy an inspect face: distance along the plane's normal, Top +Z, Right +X, Front −Y (Front offset −40 is y = 40)
outward Double no With a face: 1 if the face looks along the plane's +axis, -1 if along -axis
edit String no Reopen an existing sketch instead, by its name ("Sketch 2") from inspect's features; plane is then ignored
editIndex Int no Reopen the sketch at this zero-based index in inspect's features; takes precedence over edit

draw

Execute complete 2D command lines in the open sketch, including closed outlines, circles, text and window/delta stretch.

Argument Type Required Meaning
commands [String] yes AutoCAD-style command lines, every input on one line, e.g. rectang 0,0 40,20, circle 20,10 3, line 0,0 10,0 10,5 c. In a reopened sketch use stretch {"window":[[x0,y0],[x1,y1]],"delta":[dx,dy]} to resize in place. To change lines already in the sketch (reopen it with sketch edit first), never redraw them: offset 5 x,y x,y exit copies the whole joined outline 5 mm away (first point on a line of it, second on the side to copy to); gap x,y x,y 5 makes two lines parallel and exactly 5 mm apart (a point on the line that stays, a point on the line that moves).

outline

Copy a parallel face's actual outer/opening contours into the already open destination sketch, with optional per-side fit and translation.

Argument Type Required Meaning
body String no Name of the source Body's extrusion or generated feature; omit only for one Body
bodyIndex Int no Explicit signed source Body identity from inspect, taking precedence over body
plane String no Source face plane, parallel to the already open destination sketch
offset Double no Source face offset in mm; source and destination may be on different parallel planes
outward Double no Face outward side, 1 or -1; defaults to 1
at [Double] no Optional [x,y] point on face material to select one disconnected coplanar face
loops String no Contours to copy: all by default, outer for plates, openings for a locating lip
fit String no none copies exact loops; press 0.1, snug 0.2, loose 0.4 mm per side
clearance Double no Custom clearance per side in mm, overrides fit
direction String no inward shrinks each chosen contour, outward grows it
translation [Double] no Explicit in-plane [dx,dy] translation in mm; default [0,0] preserves world alignment
feature String no Edit only fit by name while copied entities remain unchanged; give fit/clearance/direction and omit all source, contour and placement fields
index Int no Zero-based feature index for editing fit; takes precedence over name

Solid

part

Build one whole part (one Body, named by its role) from a short feature script in one call: the normal way to build a part, gears included; a hole or boss named after a planned port binds it.

Argument Type Required Meaning
role String yes The part's name, from the design's roles: Housing tube, Nozzle, Servo mount
features [PartFeatureArgs] yes 1 to 64 steps run in order in the part's own frame; the first extrude or revolve (op new) makes its Body, later steps add to, cut or round it
mate PartMateArgs no Place the part in the same call: one of its ports (a hole's name, bore, base, axis) on a partner's port, as the mate tool does

mate

Place a part by aligning one of its ports to a partner's port: the only way to place anything but the ground. The partner's port may be named, or given inline as to_point [x,y,z] and to_axis in assembled mm (a brief's axis or seat centre): it becomes the partner's snap point and moves with it, so no datum edit or anchor is needed first.

Argument Type Required Meaning
part String yes The part to place: a Body's name, a placed part's instance id (component-1) or catalogue id
port String no Its port: a catalogue interface (mounting_face, shaft_axis) or a realised port (hub_bore); leave it out and the engine picks the port whose kind fits
to_part String yes The partner: a Body, a placed part, or a construction role with no Body (the ground)
to_port String no The partner's port: a catalogue interface, a realised or planned port (motor_mount), or a ground datum (transom); leave it out and the engine picks the pair that sits clear
to_point [Double] no Instead of to_port: where this part's port sits on the partner, [x,y,z] in assembled mm (a gear's axis point, a bearing seat's centre). No datum or snap point needed first
to_axis [Double] no With to_point: the direction the port faces there, [x,y,z]; default [0,0,1]
at String no A port or datum on the partner to place nearest, when the ports are left out
offset_mm Double no Distance along the partner port's axis in mm, a dimension from the brief (a 1 mm gasket); default 0
along String no With to_port, instead of offset_mm: how far along its axis the port sits, mm or an expression of the plan's parameters (impeller_len + 2); the reply gives each part's span on the axis, the gaps and what is left before each datum
angle_deg Double no Turn about the partner port's axis in degrees; default 0
flip Bool no true turns the part round: faces and splines already meet face to face, shafts already enter bores
joint String no turns: it turns on the partner about the port's axis (a gear on its axle, a carrier in its bearings, a planet on its pin); fixed: held to it (a gear keyed to its shaft, a cap on its carrier). Say it for every gear, carrier and shaft; left out, the ports' kinds decide
travel_deg [Double] no For a mated servo, on its own with part and to_part: its Travel limit [low, high] in degrees about centre, within the catalogue's travel; moves nothing

fit_around

Derive a housing round the parts placed on an axis, or on a gear train's parallel axes: the tube or lobed case that clears them, keeping the material its planned ports need (seats, bosses, flanges, duct sections), as the role's Body.

Argument Type Required Meaning
role String yes The housing's planned role (Housing): its planned ports give the seats, bosses, flanges and duct sections
axis String yes The stack's axis: one of the role's ports of kind axis (jet_axis), origin at the open end, or a datum
axes [String] no A gear train's other shaft axes, parallel to axis (ports of kind axis or datums): the housing wraps every gear in a lobe
split Bool no true parts the housing into two located halves along the shafts, at the plane through axis and the last of axes (input and output), so the gears go in
split_through [String] no Two of the train's axes the parting plane runs through instead of the first and last; implies split
wall_mm Double yes The printed wall in mm
obstacles [String] no Body names or placed-part instance ids to fit around instead of everything on the axis; omit for the default
intake String no A Body (the curved passage loft) joined to the tube, its cut lofts opened into it

extrude

Extrude specified open profiles by distance in mm as New, Add or Cut, optionally symmetric, optionally with a draft in degrees (walls lean in going away from the sketch; negative leans out); name names it in the same Undo step.

Argument Type Required Meaning
distance Double yes Distance in mm
profiles [Int] no Open profile indices to extrude together; default the newest
op String no new for the first solid; add or cut only once a solid exists (cut makes holes in it)
symmetric Bool no Half the distance each side of the sketch
draft Double no Draft in degrees: the walls lean in this much as they go away from the sketch (negative leans out; holes lean the other way). 0 or omitted: straight walls
body String no Target Body name from inspect for Add/Cut, such as Base or Lid piece; otherwise inferred from the sketched face. Omit for New
bodyIndex Int no Explicit signed Body identity; overrides body name
name String no Name for a New Body, such as Base or Lid; same Undo step

revolve

Turn one open profile by degrees about an axis line in its sketch (default the sketch's vertical axis through its origin), using New/Add/Cut; name names it in the same Undo step.

Argument Type Required Meaning
degrees Double yes Angle in degrees, 360 for a full turn
profile Int no Open profile index; default the newest
op String no new, add or cut
name String no Name for a New Body, such as Wheel; same Undo step
axis RevolveAxisArgs no The line to turn about, in the profile's sketch coordinates; default the sketch's vertical axis through its origin

loft

Create or replace an editable solid joining 2–32 changing convex sections, straight or around a bend (one arc, or a turn per section); New, targeted Add or Cut.

Argument Type Required Meaning
feature String no Existing Loft feature name to replace; omit for new
index Int no Existing Loft feature index to replace
plane String no Parallel section plane: Top XY/+Z, Front XZ/-Y, Right YZ/+X
sections [LoftSectionArgs] no 2–32 ordered convex sections. Replace the full section list when editing; aligned ellipses are compact for grips, domes and changing forms
op String no new (default), add or cut. Add/Cut require explicit existing bodyIndex; immutable on edit
bodyIndex Int no Explicit signed target Body ID for Add/Cut; omit for New
twist Double no Degrees the sections turn from first to last, -360 to 360, counter-clockwise seen along the normal (twisted blades, augers); needs twistCenter
twistCenter [Double] no [u, v] in mm: the axis twisted sections turn about, such as the hub centre
bend Double no Total centreline bend in degrees: 0 straight, or ±0.1–170; one even arc, or the sum of the sections' turns. Offsets are arc stations; centred matching sections turn normal to the curve. No simultaneous twist
startAngle Double no Degrees the centreline already leans from the plane normal at the first section, toward bendDirection, -170 to 170; sections stay square to the path, so a ramp leaves its plane at a slant
bendDirection Double no Which way the path leans and bends: degrees in the plane from +u toward +v, default 0 (+u); 90 is +v
name String no Name the new feature in the same Undo step

construction

Build an authored, parameter-linked native construction from shared datums and changing sections; no fixed product template.

Argument Type Required Meaning
track_mm Double no Requested wheel-centre track, wheelbase, inner lock and independent suspension travel can be checked in the ideal layout before pending parts are built
wheelbase_mm Double no
steering_lock_deg Double no
wheel_travel_mm Double no
action String yes draft saves/edits without geometry; layout checks ideal joints; inspect/check/preview read only; rebuild_preview validates a complete new draft replacing all native geometry, preserving purchased components, then issues an approval ticket; insert builds one part; update rebuilds built parts; starter lays out a known pattern in an empty Part, as Insert does (its skeleton draft and ground) from parameters by name
starter String no starter only: water_jet takes parameters pump_height (where the pump axis crosses the transom, mm), tilt, ramp (degrees), bend_radius and bore (mm)
plan ConstructionPlanArgs no Supply once to create a draft with roles/datums/joints and empty features. Use instance_id thereafter
instance_id String no Saved construction UUID for subsequent part insertions, inspect/check/update or update preview
part String no Exact body role to build. Insert creates only this part; required for every multi-part plan. Preview may also select one part
parameters [ConstructionParameterArgs] no Named parameter expression changes for update or update preview; already built geometry follows, pending parts remain unbuilt
expected_revision Int no Required for editing an existing draft or an insert with patch; use the last returned revision
datums [ConstructionDatumArgs] no draft only: add named datums; existing ones can be replaced only before any part is built
features [ConstructionShapeArgs] no draft only: replace the complete feature list of one unbuilt part, beginning with its new feature. Other parts stay unchanged
skeleton ConstructionSkeletonArgs no draft only: add or revise joints, before parts are built or while some are still unbuilt, preserving all existing input roles and ranges. A design that moves needs its joints before any part is built
ports [ConstructionPortArgs] no draft only: replace the complete list of planned ports (same fields as plan.ports)
passages [ConstructionPassageArgs] no draft only: replace the complete list of passages (same fields as plan.passages)
zones [ConstructionZoneArgs] no draft only: replace the complete list of zones (same fields as plan.zones)
patch [ConstructionPatchArgs] no draft edit or insert, instead of the whole lists: rows that each add or replace one parameter, datum, port, passage or zone by name, or remove one; every row not named stays as saved. An insert saves them, then builds

shell

Hollow an original upward Top extrusion, Top loft or Gear, opening top or bottom. Wall is a minimum against sides and the closed cap; loft transitions may retain extra material.

Argument Type Required Meaning
wall Double no Minimum wall and closed-cap thickness in mm; loft transitions may retain extra material. Defaults to the project minimum, otherwise 2 mm
open String no Face to leave open; bottom makes a cover with its opening underneath
body String no Name of the original extrusion, Top loft or Gear Body from inspect; omit when the Part has one Body
feature String no Edit this Shell feature by its name from inspect; supply only the values to change
index Int no Edit Shell at this zero-based feature index; takes precedence over feature name
bodyIndex Int no Explicit signed Body identity; takes precedence over body name. Shell before modifiers on an original upward Top extrusion, Top loft or Gear

enclosure

Build a real editable rounded housing and removable lid, or coordinate a saved enclosure's width or depth using assembly_id and exactly one absolute dimension. Preserves one central lid through-hole vent at fixed size and edge offsets; other recipe edits refuse.

Argument Type Required Meaning
assembly_id String no Existing enclosure assembly UUID from inspect. With this, supply exactly one width or depth (absolute mm) to coordinate a saved recipe, optionally with one central lid through-hole vent; omit to create an enclosure
width Double no Outside X width in mm; default 80
depth Double no Outside Y depth in mm; default 50
height Double no Outside housing height excluding the lid plate, in mm; default 28. Assembled height adds lidThickness
wall Double no Uniform housing wall and floor thickness in mm; default 2.4
cornerRadius Double no Rounded main-outline corner radius in mm; default 10
lidThickness Double no Separate lid plate thickness in mm; default 2.4
lipHeight Double no Locating lip height in mm; default 3. The lip has boss clearances and is not a seal
clearance Double no Per-side lip clearance in mm; default 0.3. A fabrication assumption until test printed
screwBosses Bool no Add four wall-fused screw bosses and matching lid holes; default true. Uses the catalogue's M3×3 heat-set inserts, 4.1 mm installation pockets and 3.4 mm lid clearance. Calibrate the explicit 0.1 mm compensation
origin [Double] no Optional housing lower-left print origin [x,y] in nonnegative mm, Z0. Omit to place beside existing solids automatically

heat_insert

Plan, install and recheck a sourced metric heat-set insert with a real editable pocket and purchased reference.

Argument Type Required Meaning
instance String no For replan: exact existing insert component instance. Supply new screw_length_mm and clamped_thickness_mm; preserves fit/process settings and refuses unsafe pocket changes atomically
action String no plan computes sizes; apply cuts/places; replan updates an existing insert for a changed screw/stack atomically; check reviews saved pockets
id String no Exact heatset.* variant ID from catalog; never a generic M3 size
custom_name String no Custom variant only: a standard name such as M3 × 6 heat-set insert, never a brand; omit with id
source_url String no Custom variant only: source drawing URL; supplied dimensions remain unverified
thread_mm Double no
pitch_mm Double no
length_mm Double no
outside_diameter_mm Double no
nominal_hole_mm Double no
minimum_wall_mm Double no
hole_compensation_mm Double no Required explicit diametral compensation added ONCE to nominal installation hole; 0 keeps nominal. Calibrate by coupon
wall_mm Double no Wall from insert knurl envelope; at least manufacturer minimum. Omit to use sourced minimum
floor_mm Double no Material below blind pocket; at least 1.2 mm, default 1.5
screw_length_mm Double no Required screw length under its head, in mm
clamped_thickness_mm Double no Required actual distance from under-head seating plane to insert mouth, including washers and recesses
tip_gap_mm Double no Gap beyond screw tip, minimum 0.5, default 1 mm
tool_diameter_mm Double no Required heated tool maximum diameter over the approach length, at least insert OD
tool_reach_mm Double no Required unobstructed heated-tool approach length
clearance_mm Double no Gap to neighbouring bodies/tool, minimum 0.2, default 0.5 mm
plane String no Apply only: top, front or right
offset Double no
outward Double no Apply only: outward face normal +1 or -1
center [Double] no Apply only: one center [u,v] in face coordinates
bodyIndex Int no Apply only: explicit signed Body identity from inspect

fillet

Round or 45-degree chamfer supported extrusion side/top/base/all edges, optionally scoped to feature names/featureIndices.

Argument Type Required Meaning
edges String yes sides (the vertical edges), top, base or all
radius Double yes Radius (or chamfer size) in mm; clamped to what fits
feature [String] no Only these extrusions' edges, by name from inspect's features ("Extrude 2"); default every extrusion
chamfer Bool no true for a flat 45° chamfer instead of a round
featureIndices [Int] no Only extrusions at these zero-based indices in inspect's features; takes precedence over feature

hole

Create or edit one Holes feature on a planar face using centres or sketch-circle profiles, bore/preset and optional head recess.

Argument Type Required Meaning
feature String no Edit this existing Holes feature by name from inspect, instead of making a new one; only supply the values to change
plane String no Drill on a flat face: top (XY), front (XZ) or right (YZ)
offset Double no Face's distance along the plane normal, in mm
outward Double no Face looks along the plane normal (1) or against it (-1)
centers [[Double]] no Hole centres as pairs of face coordinates in mm; use profiles instead to take circle centres from a sketch
profiles [Int] no Circular sketch profile indices whose centres locate the holes
preset String no M2.5 clearance or M3 clearance. For threaded retention in printed plastic use heat_insert instead of a pilot or hole-only insert preset
diameter Double no Bore diameter in mm; overrides the preset
through Bool no true drills through the target Body, following height edits; false drills to depth
depth Double no Blind depth in mm. Supplying depth selects a blind hole unless through is true
kind String no simple, counterbore (flat head recess) or countersink (conical head recess)
head_diameter Double no Head recess diameter in mm
head_depth Double no Head recess depth in mm; countersink angle follows diameter and depth
body String no Target Body name from inspect, such as Base or Lid piece; otherwise inferred from the first centre's face
bodyIndex Int no Explicit signed Body identity; takes precedence over body name
index Int no Edit the Holes feature at this zero-based index in inspect's features; takes precedence over feature

split

Divide one Body by origin plane, distance below top, or a swept finished face-sketch outline into two independent Bodies.

Argument Type Required Meaning
body String no Body name from inspect's bodies, e.g. Base or Split piece; omit only for a single Body
plane String no Origin plane: top, front or right; defaults top
offset Double no Distance in mm: below top when from_top is true, origin-plane coordinate otherwise; with sketch expands its outline (zero keeps the drawn shape)
from_top Bool no true stores a distance below the Body top and follows height edits; false uses the origin-plane coordinate. Default true for top
sketch String no Name of a finished face sketch with one unused closed outline; sweeps its drawn shape through the Body, keeping inside and outside as two pieces
feature String no Edit an existing Split feature by its History name
index Int no Explicit zero-based feature index to edit; overrides feature name
bodyIndex Int no Explicit signed Body identity; overrides body name
sketchIndex Int no Explicit zero-based face-sketch feature index; overrides sketch name

gear

Create or edit a native external involute spur gear: fixed 20° pressure angle, zero shift, 10–120 teeth, module 0.5–4 mm, Z0.

Argument Type Required Meaning
feature String no Edit an existing Gear feature by name from inspect; omit for a new gear
index Int no Explicit zero-based Gear feature index to edit; overrides feature name
teeth Int no Integer 10–120 teeth; required for a new gear
module Double no Module in mm, 0.5–4; mating gears MUST use the same module; required for new
thickness Double no Axial face width in mm, 0.5–30; bottom always Z0; required for new
bore Double no Round bore DIAMETER in mm, zero for solid; leave at least 1.6 mm material at root
backlash Double no THIS gear's tangential tooth thinning at pitch circle in mm, default 0.05; pair backlash is sum, maximum 0.25*module
center [Double] no Centre [x,y] in mm; each >= module*(teeth/2+1), keeping complete gear positive XY; required for new
phase Double no Tooth-centre phase in degrees CCW from +X, default 0; equal even-tooth pairs mesh with a half-tooth follower offset at standard spacing
name String no Name for a new gear, such as Drive gear; same Undo step

storage

Create or edit a Gridfinity bin, baseplate or receiver cut, or an openGrid board, snap or socket cut: one editable History feature made to the published dimensions.

Argument Type Required Meaning
feature String no Edit an existing storage feature by name from inspect; omit for a new piece
index Int no Explicit zero-based storage feature index to edit; overrides feature name
kind String no What to make; required for a new piece
units_x Int no Cells along X: Gridfinity 42 mm, openGrid 28 mm; 1–8 (openGrid 1–10)
units_y Int no Cells along Y
height_units Int no Gridfinity bin height in 7 mm units, 2–20, lip excluded
lip Bool no Bin stacking lip, default true
magnets Bool no 6 × 2 mm magnet pockets under bin feet, or a magnet baseplate
screws Bool no M3 screw holes up into bin feet
dividers_x Int no Bin divider walls across X, 0–9
dividers_y Int no Bin divider walls across Y, 0–9
lite Bool no openGrid lite: 4 mm board, 3.4 mm snap, 4 mm socket
origin [Double] no Footprint's lower corner [x,y] mm on Z 0; for a receiver or socket [x,y,z] on the Body's top face
body String no Receiver or socket: the Body name to cut into
bodyIndex Int no Receiver or socket: the signed Body identity from inspect
name String no Name for a new piece; same Undo step

cycloidal_stage

Declare or edit the one supported balanced dual-disc, difference-of-one cycloidal reducer stage from existing native Bodies.

Argument Type Required Meaning
id String no Short stable name; omit to keep the saved name or use balanced-stage
housingBody Int no Signed housing/ring Body identity from inspect
inputBody Int no Signed common input/shaft Body identity with both eccentric journals
discABody Int no Signed native Cycloidal Disc A Body identity
discBBody Int no Signed native Cycloidal Disc B Body identity
carrierBody Int no Signed shared output carrier Body identity
center [Double] no Common assembled axis [x,y] in mm
housingCenter [Double] no Housing's saved print-layout axis [x,y] in mm
inputCenter [Double] no Input's saved print-layout axis [x,y] in mm
carrierCenter [Double] no Carrier's saved print-layout axis [x,y] in mm
eccentricBearingDiameter Double no Eccentric bearing/journal diameter in mm
outputPinCount Int no Installed shared output-pin count, at least 3
outputPinCircle Double no Output-pin pitch-circle radius in mm
outputPinDiameter Double no Output-pin diameter in mm
outputHoleDiameter Double no Disc output-hole diameter in mm
maximumProfileClearance Double no Maximum accepted profile clearance in mm
maximumOutputRadialClearance Double no Maximum accepted output radial clearance beyond eccentric travel in mm
discAZMin Double no Disc A assembled lower Z in mm
discBZMin Double no Disc B assembled lower Z in mm
discADensity Double no Disc A material density in a consistent unit
discBDensity Double no Disc B material density in the same unit
maximumBalanceResidual Double no Maximum eccentric mass-moment residual in density-volume-mm units
stackBodies [CycloidalStackBodyArgs] no Every additional stack Body/interface; omit for none
engineering CycloidalEngineeringArgs no Optional declared quasi-static evidence. Missing values remain not-rated
reductionLayout String no Must be single; serial/multi-stage is refused
toothCountDifference Int no Must be 1; other difference counts are unsupported
profileModification String no Must be none; modified profiles are unsupported

component

Place a bought part from one exact catalogue entry where it goes (its mate block, in the same call), move, route a supported open belt, show, hide or remove it.

Argument Type Required Meaning
action String yes Place, move (keeps its instance id, so checks still find it), route or detach an open belt, remove, show or hide a fixed reference component
catalog_id String no Exact stable catalogue id from catalog inspection; required for place
instance String no Placed instance id such as component-1; required for move, remove, show or hide
replaces String no For place: a placed instance id this part replaces (it is removed, its fits pass on and checks that name it follow the new one)
origin [Double] no Fixed placement origin [x,y,z] in millimetres, for the ground only, or move; omit it and mate places the part by its ports
rotation [Double] no Optional intrinsic [roll,pitch,yaw] rotation in degrees; defaults to [0,0,0]
parameters [ComponentParameterArgs] no Required values named by catalogue inspection; one name/value item per parameter
mate PartMateArgs no For place: put it where it goes in the same call, as the mate tool does: its port (a catalogue interface such as shaft_axis or inner_race) on a partner's port, or at to_point on the partner
source_interface String no Named interface on the new component, such as mounting_face, to mate it to a placed part in this call; there is no typed target frame (a position from datums is a mate to that datum)
target_instance String no Placed component instance to mate to; use with target_interface
target_interface String no Named interface on target_instance; use the exact id returned by inspect
offset [Double] no Optional [x,y,z] offset in target-interface coordinates, mm
mate_rotation Double no Optional rotation in degrees around the target interface Z axis
reverse_facing Bool no Flip the source to face the target while preserving a right-handed frame
belt_instance String no For route_belt: placed catalogue belt-stock instance
drive_instance String no For route_belt: placed exact drive-pulley instance
idler_instance String no For route_belt: placed exact toothed-idler instance
clamp_center [Double] no For route_belt: model-space point locating the deliberate gap between the two clamp entries
clamp_gap_mm Double no For route_belt: required gap between clamp entries in mm; must accommodate both straight tails
minimum_clamp_engagement_mm Double no Required route_belt learner design minimum tail engagement, mm; no retention certification
clamp_capacity_each_mm Double no Required route_belt actual capacity of each modeled clamp, mm; two capacities must fit the gap
tangent_clearance_mm Double no Required route_belt learner design clearance between the clamp gap and each pulley tangent, mm

component_feature

Generate an ordinary editable feature from a sourced operation on a placed component interface.

Argument Type Required Meaning
instance String yes Placed component instance from inspect, such as component-1
interface String yes Exact named interface from inspect, such as mounting_face
operation String yes A sourced operation listed by inspect
body String no Target Body name from inspect
bodyIndex Int no Explicit signed target Body identity; takes precedence over body
fabrication_diameter_mm Double no Explicit cutter diameter in mm chosen for the material/process; never inferred from nominal catalog size. Required except for magnet_pocket and screw_hole
fit String no magnet_pocket: press (snug) or glue (looser, deeper). screw_hole: close, normal, loose (ISO 273 clearances), counterbore (socket heads), countersink (countersunk heads) or tap (tap drill); sizes the hole from the placed screw plus the printing allowance
through Bool no true cuts through the Body; defaults true
depth_mm Double no Blind depth in mm; use with through false

Repeat/edit

pattern

Repeat an Extrude, Revolve or Holes source as a linked linear row/grid or circular feature pattern.

Argument Type Required Meaning
source String no Source feature's name from inspect: an Extrude, Revolve, Loft, Holes or Gear feature. Repeats its tool, including subsequent source edits
feature String no Edit an existing Pattern by its name from inspect; supply only changed values
kind String no linear repeats at equal pitch; circular rotates around an axis
count Int no Total instances including the original, 2 to 256
spacing Double no Linear pitch in mm. Circular sweep in degrees: 360 divides the turn evenly; a partial sweep includes both ends
axis String no Positive world axis x, y or z
center [Double] no Circular centre [x,y,z] in mm
rows Int no Linear grid rows including the original row; total instances cannot exceed 256
rowSpacing Double no Linear grid row pitch in mm; second direction is Y, or X when the first axis is Y
sourceIndex Int no Explicit zero-based source feature index; takes precedence over source name
index Int no Explicit zero-based Pattern index to edit; takes precedence over feature name

mirror

Replay a supported source feature across an offset Right/X, Front/Y or Top/Z origin plane as linked symmetry.

Argument Type Required Meaning
source String no Source feature name from inspect: an Extrude, Revolve, Loft, Holes or Gear feature
feature String no Edit an existing Mirror by name from inspect; supply only changed values
plane String no Mirror plane: right (X), front (Y) or top (Z)
offset Double no Plane coordinate in mm along positive X/Y/Z from the origin; choose an offset keeping all copies in positive model space
sourceIndex Int no Explicit zero-based source feature index; takes precedence over source name
index Int no Explicit zero-based Mirror index to edit; takes precedence over feature name

name

Rename a sketch or feature with a meaningful saved History label, addressed by feature or explicit zero-based index.

Argument Type Required Meaning
feature String no The sketch or feature's current name from inspect; use index for a number
name String yes A short, meaningful name, such as Base, Lid lip or Standoffs; up to 80 characters
index Int no The zero-based index in inspect's features; takes precedence over feature

edit

Call any tool that isn't offered by name: tool names it and args is its JSON arguments as one string. With tool alone it returns that tool's rules and argument schema, changing nothing: read them before the first call of a tool.

Argument Type Required Meaning
feature String no The feature's name from inspect's features, e.g. "Extrude 2"
value Double yes Its new number: an extrusion's distance or a fillet's radius in mm, a revolve's angle in degrees
index Int no The zero-based index in inspect's features; takes precedence over feature
chamfer Bool no For an existing fillet/chamfer only: true makes a chamfer, false makes a round. Omit to keep its current kind.

fix

Apply the engine's verified fix for one open finding in the ledger, by its subject.

Argument Type Required Meaning
subject String yes The finding's subject exactly as the ledger's open: line names it (Shaft overlaps component-1)

appearance

Set saved sRGB colour as #RRGGBB, opacity 0…1, or reset true alone, for one Body or for many at once with bodies [{body or bodyIndex, colour, opacity, reset}]; omitted components stay unchanged.

Argument Type Required Meaning
body String no One Body name from inspect's bodies; omit only when there is one Body
bodyIndex Int no Explicit signed Body identity from inspect; overrides body name
colour String no sRGB colour as #RRGGBB, such as #007AFF for blue. Omit to keep the current colour
opacity Double no Display opacity from 0 (invisible) to 1 (solid); 0.4 is translucent. Omit to keep current opacity
reset Bool no true restores the default Body appearance; do not combine with colour or opacity
bodies [BodyAppearanceItem] no Several Bodies in one call and one undo step, each with its own body or bodyIndex and colour, opacity or reset; use alone, without the fields above

undo

Undo one operation, or answer true to revert the previous changed Ask answer's checkpoint.

Argument Type Required Meaning
answer Bool no true to take back everything your previous answer changed (the learner said revert or undo that); omit to undo one step

point

Inspect a numbered pin in this message, then perform only its checked hole, whole-Shell or pinned-edge fillet edit with value in mm.

Argument Type Required Meaning
pin Int yes Number of the learner's pin in this message
action String yes Inspect first. hole changes one bore diameter; shell changes ALL walls and floor and requires the learner's wholeShell scope on the note; otherwise ask first. fillet rounds only the pinned edge.
value Double no New diameter, wall thickness or edge radius in mm; inspect needs no value

assembly

Inspect/edit ownership, anchors, live attachments and frozen reusable modules with immutable occurrence UUIDs and pinned revisions.

Argument Type Required Meaning
manufacturing_kind String no For classify: printed, purchased or reference. A reference Body is a non-printing external fixture but stays in assembly/material checks
action String yes Inspect/group/attach, browse frozen modules, save/place/make unique/publish/unpack, or explicitly preview and accept replacement/repair
between [String] no For fit/unfit: the two pieces, Body names or placed component instance_id values, e.g. ["Back plate", "Base"]
kind String no For fit: the designed contact; checks then accept that overlap or zero gap and flag only material deeper than its allowance
allowance_mm Double no For fit: optional allowance in mm, 0 to 1; defaults press 0.3, thread 0.5, bearing_seat 0.2, cross_pin 0.3, slot_tab 0.3, resting 0.05
id String no Exact occurrence UUID from assembly inspection; omit to inspect root
revision String no Exact frozen revision hash from modules; place/update never follows latest implicitly
ticket_id String no Exact current ticket_id from change preview; stale or foreign tickets are refused
catalog_id String no Replacement source-backed catalog id from catalog inspection
parameters [ComponentParameterArgs] no Replacement parameters, explicit distinct name/value pairs
feature_index Int no Exact feature index from inspection for repair/detach; author may explicitly assign a legacy sketch to the chosen body or shared layout
overwrite_override Bool no Explicit acknowledgement to replace learner-edited Hole centers/plane during repair; current fabrication dimensions remain
scope_id String no For candidates: exact target scope assembly UUID; defaults to root. Coverage is bounded; narrow the scope if truncated.
search_radius_mm Double no For candidates: optional positive nearby radius in millimetres around the moving occurrence. Omit for the whole chosen scope; distant interfaces are not checked.
candidate_id String no For place: exact current candidate_id returned by candidates. Explicitly choose among ambiguous targets. Stale tickets are refused.
occurrences [String] no For group: up to 256 distinct occurrence UUIDs, without overlapping subtrees
name String no For independent: 10–200 character reason the brief requests unrelated items sharing a print layout (not an assembly). For group/rename: group display name, 1 to 100 characters; module_save: module name; module_place: this copy's name, such as Pi sled 2. Bought parts keep their catalogue title and cannot be renamed
parent_id String no For group/reparent: exact destination assembly UUID; group defaults to root
origin [Double] no For move: replacement local origin [x,y,z] mm in parent coordinates. For author new/layout: the ground's world origin; omit for a part that mate will place
rotation [Double] no For move: replacement local [roll,pitch,yaw] degrees, defaults zero
mode String no For view: assembly or fabrication. For author: body (occurrence id), new (planned world origin/rotation), layout (shared skeleton), or finish. Choose before sketching or direct creation
interface String no Exact source interface id, or stable project anchor id for anchor/remove_anchor
target_id String no Exact target occurrence UUID for attach/repair
target_interface String no Exact target interface id from inspection
provenance String no Required for module_publish and anchor (optional for the learner's own module_save and module_unique): authored provenance or design basis in words, e.g. "Pi 5 sled designed in this Part"; never manufacturer certification
offset [Double] no Attachment target-local offset [x,y,z] mm
angle Double no Attachment rotation around target Z in degrees
reverse Bool no Reverse attachment facing
suppressed Bool no Suppress only the relation; physical part stays fixed in ownership, BOM and checks
preview Bool no Return affected descendant preview without changing the document

Clarify

ask_learner

Ask 1–3 material design questions (at most 80 characters each) with 2–4 choices of at most 40 characters, a default list of suggested option indices ([0], or [] for none) and optional multiple selection. When choices are Bodies, pictures gives each option's exact Body name ("" for none) and the app pictures them from the Part.

Argument Type Required Meaning
replacement_ticket String no Exact validated replacement ticket; shows its consequences and asks for approval
questions [QuestionArgs] yes 1 to 3 questions whose answers change the design

plan

Keep the learner's live plan, which they watch while you build: an optional one-line goal, the piece you build now and the next piece, each {text, check} (the check that proves it works), and the assumptions you make [{id, text}]; construction {…} saves the construction spec (roles, parameters, datums, ports, joints, passages and zones) that part, mate and fit_around build from, grown a piece at a time; read its fields with edit {tool: construction} before the first draft.

Argument Type Required Meaning
goal String no The build in one line, only to restate the learner's request
piece PlanPieceArgs no The piece you build now; sending it ticks the piece before
next PlanPieceArgs no The piece after this one, grown from it
steps [PlanStepArgs] no Tick or drop steps already on the plan by id
assumptions [PlanAssumptionArgs] no Only the assumptions that are new or changed

Answer

finish

End the question with the answer's facts as short plain fields: built, deviations, assumed, risk, skipped, unchecked. deviations is every way the build differs from what was asked; it is never cut from the answer.

Argument Type Required Meaning
built String yes One plain sentence: what you made or changed; in a guided project, your coaching
deviations String no Every way the build differs from what the learner asked; leave empty when it does not, never write None; always shown
assumed String yes One plain sentence: any common part or size you assumed; leave empty when there is nothing, never write None
risk String yes One plain sentence: the one key risk; leave empty when there is nothing, never write None
skipped String yes One plain sentence: what you left out; leave empty when there is nothing, never write None
unchecked String yes A short phrase: what you didn't check; leave empty when there is nothing, never write None

Mechanism

mechanism

Declare, replace or clear the Part's mechanism: ground Body, revolute joints between declared bores (flat about Z, or a hinge about any axis, such as a lid on its pin), prismatic slides (rod in bore, along Z or in XY) with travel limits, external gear couplings, a rotary or linear driver, transmissions and grip faces.

Argument Type Required Meaning
preview Bool no true checks this proposed linkage as an unsaved ideal skeleton over its full ranges, before cutting bores or placing hardware. Returns closure, steering and sampled body interference; never physical verification. Add wheelbase_mm and steering_lock_deg for targets
track_mm Double no Required wheel-centre track from the brief, mm; checked against actual geometry within 0.5 mm
wheelbase_mm Double no
steering_lock_deg Double no
wheel_travel_mm Double no Required total wheel-centre suspension travel in mm; each side must reach it independently
clear Bool no true alone removes the saved mechanism
ground_body Int no Signed Body ID that stays fixed
revolute_joints [MechanismJointArgs] no Every revolute joint; the record replaces the saved one whole
prismatic_joints [MechanismSlideArgs] no Every prismatic slide (rod in bore along Z, or in XY); a slide on a rigid follower is a checked guide
gear_couplings [MechanismGearArgs] no Meshing native Gear pairs, one per mesh. With hinges, each Gear turns on a hinge along its shaft (planets on the carrier), all shafts parallel; the case is the ground
driver MechanismDriverArgs no
ball_joints [MechanismBallArgs] no Linkage only: ball joints closing loops, such as a tie rod's two ends
inputs [MechanismDriverArgs] no Linkage only: inputs beside the driver, each a hinge with min_angle and max_angle (suspension at one lower arm, wheel spin); Play gives each its own control
transmissions [MechanismTransmissionArgs] no Optional transmission angles to report
grip_faces [MechanismGripFaceArgs] no A gripper's two opposing material-backed pad bands. Default common contact target 20 × 10 mm throughout travel. XY in saved Body coordinates; Z in assembled stack for planar bores, Body-local Z for a spatial linkage. check motion reports actual overlap and opening
rigid_followers [MechanismFollowerArgs] no Bodies with no joint of their own fixed to a moving leader, such as a bat on a gear's shaft or a pop bumper's ring on its rods (checked as guides); each must be fastened to its leader by a screw, pin or rod in hardware; preserve saved ones when replacing the record
hardware MechanismHardwareArgs no Placed purchased parts carried by Bodies: each mount's frame is the component's frame in its leader Body's print-layout coordinates, so it moves with that Body. Preserve the complete inspected record when replacing

check_motion

Check the declared mechanism over its driver range: bores and rods, one-DOF motion, slide travel and guide engagement, gear meshing, collisions, grip closing and an optional quasi-static holding force.

Argument Type Required Meaning
track_mm Double no Required wheel-centre track from the brief, mm; compared with actual geometry within 0.5 mm
wheel_travel_mm Double no Required total wheel-centre suspension travel in mm; compares measured travel and independent left/right inputs
torque_nmm Double no Driver torque in N·mm; give with friction_coefficient and object_mass_kg, or omit all for motion only
friction_coefficient Double no Jaw-object friction coefficient, such as 0.3 for PLA
object_mass_kg Double no Test object's mass in kg
object_diameters_mm [Double] no Round test object diameters in mm; default [20, 45]
wheelbase_mm Double no A steered car's wheelbase, front to rear axle, in mm: steering compares each lock with Ackermann for it
steering_lock_deg Double no The wheel steer angle the brief asks for, in degrees: steering.lock says whether the inner wheel reaches it both ways

Make

made_by

Set how one Body is made: printed, laser_cut (from a sheet: material, thickness mm, kerf mm; defaults acrylic at the Body's own thickness, 0.15 kerf) or bought.

Argument Type Required Meaning
body String no One Body name from inspect's bodies; omit only when there is one Body
bodyIndex Int no Explicit signed Body identity from inspect; overrides body name
method String yes How the Body is made
material String no laser_cut only: sheet material, such as Acrylic or Plywood; default Acrylic
thickness Double no laser_cut only: sheet thickness in mm, equal to the Body's; default the Body's own
kerf Double no laser_cut only: kerf in mm, the width the laser burns away; default 0.15

cut_sheets

Read the A4 sheets the laser-cut Bodies nest on (5 mm margin, 3 mm gap), per material and thickness, and the SVG/DXF cut files they export.

Set the learner's 3D printer bed (width and depth in mm) so Make's plates start from their printer, in this Part and the next.

Argument Type Required Meaning
width Double yes The printer bed's width (X) in mm, as the learner gave it, such as 256
depth Double no The bed's depth (Y) in mm; omit for a square bed