Blender integration through the Model Context Protocol
Kernelcad is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Agent-first CAD: editable .kcad.ts source, deterministic review, OpenCASCADE kernel.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http kernelcad-mcp https://mcp.kernelcad.com/mcp
# 2 — ask your agent for something these tools do
# review_paint_peek_latest, open_in_studio, get_project and 42 more
Kernelcad costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, read from the address; if the publisher says otherwise, swap that one word.
claude mcp add --scope user --transport http kernelcad-mcp https://mcp.kernelcad.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
45 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Return the newest brush-painted review packet from a Studio session. After sharing a /p/<slug> link, the user can open it in the browser and paint marks over the 3D viewport to give visual feedback. Call this tool with the slug from that link to see the strokes — screenshot + mask + struck part names plus an optional one-line note and intent tags (e.g. "too thick", "missing", "wrong angle") desc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | Project slug from open_in_studio/get_project/a /p/<slug> link. When given, returns the latest brush packet painted on that project's page — works without OAuth; the slug is the capability. Omit to use |
| freshness_sec | integer | no | Maximum packet age in seconds. Default 1800 (30 min). Use a smaller value for "what did I just paint" or a larger one for "earlier today". |
| paths_only | boolean | no | Controls PNG delivery. Default (omitted or true): return only signed URLs + struck part names — the small, context-friendly response; fetch the bytes via the signed URLs. Set false to also base64-inli |
Use this when the user wants to SEE or share the model — it persists the current kernelCAD model and returns a one-click link that opens it in the kernelCAD Studio web app, where the user can view and share it. Pass the full .kcad source you have been building as code. code is OPTIONAL: if you just called evaluate_script you can omit it and this reuses that last evaluated source automatica
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | no | The full .kcad source of the model to open in Studio (the script you have been editing). Optional: omit to reuse the source from your most recent evaluate_script call. |
| title | string | no | Optional human-readable title for the model (shown in Studio). Defaults to "Model from Claude". |
| parameters | array | no | Optional list of the model's editable parameters, so Studio can render parameter controls. Each item is one control derived from the .kcad params. |
| slug | string | no | Slug returned by a previous open_in_studio call. When given, updates that existing project in place (live-updating the user's open Studio tab) instead of creating a new one. |
| attachments | array | no | Complementary project files referenced by relative path from the .kcad source. |
Use this when you need to reopen a saved project or browse what the user has saved — it fetches a kernelCAD Studio project, or lists the signed-in user's saved projects. Pass slug (from a /p/<slug> link or a prior listing) to fetch that project's full .kcad source and metadata — then edit and open_in_studio with the same slug so the user's open tab updates live. Private projects require their ow
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | The project slug from a listing or a /p/<slug> Studio link. Omit to list the signed-in user's saved projects. |
Fetch the exact immutable .kcad source and parameters captured at a prior open_in_studio version. Use this to read-after-write verify a release: pass the returned slug and version, then hash or inspect the returned source. Public/unlisted projects use the slug as capability; private projects require the owner's OAuth connection.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | Project slug returned by open_in_studio. |
| version | integer | yes | Positive immutable revision version returned by open_in_studio. |
Render a project's current model server-side and return it as an inline image so you can SEE what you built. Use this after open_in_studio (or any /p/<slug> link): call with that slug to inspect whether the build looks right. CRITICAL — the image is rendered from the MODEL on the server; it does NOT reflect the user's Studio camera, zoom, or screen. NEVER ask the user to rotate, zoom, pan, move
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | Project slug from open_in_studio/get_project/a /p/<slug> link. The slug is the capability — public/unlisted projects need no OAuth; private projects require the owner to be signed in. |
| view | string | no | View to render. Default "all" = a labeled contact sheet of every canonical angle (iso/front/back/left/right/top) — best for judging the whole model. Pass a single view name for one large render of tha |
| paths_only | boolean | no | Controls PNG delivery. Default false: base64-inline the rendered PNG so clients that cannot fetch a URL over HTTP (e.g. a sandboxed agent) can still see it. Set true to return only metadata (smaller r |
Return the raw per-feature triangle mesh (positions/indices/normals) of a project's current model, by slug. For the in-chat 3D viewer widget to render geometry; delivered over the MCP Apps bridge. The slug is the capability: public/unlisted need no OAuth; private requires the owner signed in.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | Project slug from open_in_studio/get_project. |
Return the kernelcad-authoring SKILL.md body — conventions for writing .kcad.ts scripts (imports, parameters, evaluation contract, common pitfalls). Use this tool BEFORE generating CAD code if your MCP client does not list resources. Clients that do list resources should instead read kernelcad://skills/authoring directly — the contents are identical. INPUT: none. OUTPUT: { uri, mimeType, text
No parameter schema on file.
Mesh a kernelCAD .kcad.ts source server-side and return a COMPACT geometry summary — overall bounds plus, per feature, its id, kind, triangle count, and bounding box. Use this to INSPECT a model's geometry without a viewer: confirm a part is the size/shape you expect, see how many triangles each feature contributes, or check that every feature produced geometry. This runs the full server-side OCC
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source | string | yes | The .kcad.ts script source to mesh. |
| fileName | string | no | Optional file-name label used in diagnostics (does not affect geometry). |
| params | object | no | Optional map of parameter-name → numeric value, applied as overrides before meshing (stateless slider recompute). |
Use this when you need to run a script and check it compiles. Run a kernelCAD .kcad.ts script and report pass/fail + feature count + diagnostics. When the scene is assembly-built (assembly().part(...) → .model()/.solvedModel()), also returns a parts summary { count, names }. Pass either { file: "<path>" } or { code: "<inline source>" }. Set { dryRun: true } for fast validation while iterating: tra
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | no | Path to a .kcad.ts script file. |
| code | string | no | Inline kernelCAD script source. |
| dryRun | boolean | no | Fast validation only: skip OCCT lowering, DFM gates, and meshing. Does not set or clear the active session. |
Use this when you need to see exactly what changed between two script versions. Structured geometric delta between two versions of a kernelCAD script — a baseline ({ baseFile } or { baseCode }) and a revision ({ file } or { code }). Returns agent-readable JSON: per-part added/removed/renamed/changed (volume mm³ + exact bbox deltas, numbers matching inspect({ of: 'part-stats' })), total interferenc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| baseFile | string | no | Baseline script — path to a .kcad.ts file. |
| baseCode | string | no | Baseline script — inline source. |
| file | string | no | Revised script — path to a .kcad.ts file. |
| code | string | no | Revised script — inline source. |
Use this when you need to read facts about a model. One reader, selected by of: - 'assembly' — physical assembly inventory (parts, bboxes, connectors, mates, disconnected solids). - 'robot' — URDF/SDFormat export preview (links, joints, planning groups, end-effectors, issues). - 'step' — inspect an imported STEP file. - 'shape' — volume / surfaceArea / bbox for one feature ({ feature_id? }). - '
| Parameter | Type | Required | Notes |
|---|---|---|---|
| of | string | yes | Which facts to read. |
| file | string | no | Path to a .kcad.ts script file. |
| code | string | no | Inline kernelCAD script source. |
| assembly | string | no | of:'assembly'|'robot' — assembly name; defaults to the first captured assembly. |
| feature_id | string | no | of:'shape'|'topology'|'edges'|'faces'|'face-edges'|'face-labels' — FeatureId; defaults to the last returned shape. |
| face_name | string | no | of:'face-edges' — canonical face name (required for that subject). |
| query | object | no | of:'edges'|'faces' — optional EdgeQuery/FaceQuery filter. |
| category | string | no | of:'part-families' — optional top-level category to filter families by. |
Use this when you need to check a design against a rule set. One verifier, selected by check: - 'assembly' — mate-aware assembly validator on the active session (run evaluate_script first). - 'urdf' — structural validity of a .urdf file ({ urdf_path }). - 'dfm' — print-readiness gates declared by dfmSpec() ({ file | code }). - 'dfm-preflight' — sheet-metal flat pattern vs a job-shop's ordering r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| check | string | yes | Which verification to run. |
| file | string | no | Path to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity). |
| code | string | no | Inline kernelCAD script source (same checks as file). |
| assembly | string | no | Assembly name; defaults to the first captured assembly. |
| urdf_path | string | no | check:'urdf' — path to the .urdf file. |
| dxf | string | no | check:'dfm-preflight' — path to a DXF file. |
| featureId | string | no | check:'dfm-preflight' — FeatureId to scope to. |
| vendor | string | no | check:'dfm-preflight' — vendor SKU (required for that check). |
| material | string | no | check:'dfm-preflight' — material SKU (required for that check). |
| thicknessIn | number | no | check:'dfm-preflight' — material thickness in inches. |
| thicknessMm | number | no | check:'dfm-preflight' — material thickness in millimeters. |
| service | string | no | check:'dfm-preflight' — service. |
| refreshCatalog | boolean | no | check:'dfm-preflight' — force vendor catalog refresh. |
| joint | string | no | check:'swept-collision' — joint to sweep; omit to sweep every declared joint. |
| range | array | no | check:'swept-collision' — [lower, upper, step] in joint-native units. |
| collision_tolerance_mm3 | number | no | check:'swept-collision' — BREP intersection volume tolerance (mm^3). |
| tip_link | string | no | check:'reachable' — end-effector part name (required for that check). |
| target_position | array | no | check:'reachable' — target [x, y, z] mm (world frame). |
| target_orientation | array | no | check:'reachable' — target XYZ Euler angles in radians. |
| position_tolerance_mm | number | no | check:'reachable' — position tolerance in mm. |
Use this when you need to trace why a feature failed. Walk the upstream chain of a failing feature. Returns the diagnostics of the requested feature plus the diagnostics of every upstream feature in topological order (the requested feature is the last entry). Per-code hints are inline on every diagnostic — call lookup_diagnostics for the full catalogue. Pass { file?, code?, feature_id? }.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | no | — |
| code | string | no | — |
| feature_id | string | no | — |
Use this when you need to edit a param() default value in a kernelCAD script. Returns the modified code as text plus diagnostics from re-evaluating the result. Caller persists the new code via standard file-write tools (this tool has no side effects).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| param_name | string | yes | The string literal name of the param (first arg to param()). |
| new_value | yes | The new default value. Either a number for a numeric param (e.g. 12.5), or a string expression evaluated in the script (e.g. "width/2 + 3"). |
Use this when you need to insert a new feature line into a script. Insert a new feature line into a kernelCAD script before the last top-level return statement. Returns the modified code as text plus diagnostics from re-evaluating the result. Side-effect-free. Primitives that accept faceLabels (box, cylinder, extrudeRect, extrudeCircle, extrudePolygon, extrudeRoundedRect) can receive `opts.faceLab
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| feature_code | string | yes | Single-statement source line to insert (e.g. const hole = cylinder(5, 2).translate(10, 10, -1);). |
Use this when you need to author a NURBS Surface into the user's .kcad.ts. One authoring path, selected by kind: - 'nurbs' — insert a nurbsSurface(...) / surfaceFromCurves(...) call. Pass either { controls, degree, weights?, knots?, periodic? } for direct construction, OR { section_sketch_ids } for skinning. Slice-1 limitation: weights are accepted but currently ignored (TColStd_Array2OfReal not
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Which surface-construction path to use. |
| code | string | yes | Current .kcad.ts source. |
| controls | array | no | kind:'nurbs' — control-point grid for direct construction (controls[u][v] = [x, y, z], mm). |
| weights | array | no | kind:'nurbs' — optional rational weights, same grid shape as controls. Ignored in slice-1. |
| degree | object | no | kind:'nurbs' — degrees in U and V; each in [1, nU-1] / [1, nV-1]. |
| knots | object | no | kind:'nurbs' — optional explicit knot vectors; missing => clamped uniform inferred. |
| periodic | object | no | kind:'nurbs' — optional periodic flags per parametric direction. |
| section_sketch_ids | array | no | kind:'nurbs' — existing sketch FeatureIds (2 or more) to skin a surface through, in order. |
| curve_bindings | array | no | kind:'boundary' — tuple of 4 existing Curve3D variable names (bottom, right, top, left) declared earlier in the source. |
| continuity | no | kind:'boundary' — continuity grade applied to every edge ('C0' | 'C1' | 'C2'), or an array of 4 grades (one per edge, bottom/right/top/left order). Default 'C0'. | |
| sampling | integer | no | kind:'boundary' — OCCT NbPtsOnCur sampling parameter (default 15). |
| binding_name | string | no | JS const name for the new Surface binding (kind:'nurbs' default surface_<N>; kind:'boundary' default _surface_<N>). |
Use this when you need to author a 3D Curve3D into the user's .kcad.ts immediately before the last top-level return. One authoring path, selected by kind: - 'nurbs' — insert a nurbsCurve(controlPoints, opts?) declaration. Pass controlPoints as a Vec3[] (mm, at least 2 points). Optional NURBS knobs: degree (default 3), rational weights, explicit knots, closed. - 'hermite' — insert a `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Which curve-construction path to use. |
| code | string | yes | The .kcad.ts source code. |
| controlPoints | array | no | kind:'nurbs' — control points as Vec3 triples in mm; at least 2 entries. |
| degree | integer | no | kind:'nurbs' — curve degree; default 3 (cubic). |
| weights | array | no | kind:'nurbs' — optional rational weights, one per control point (same length as controlPoints). |
| knots | array | no | kind:'nurbs' — optional explicit knot vector; missing => clamped-uniform inferred. |
| closed | boolean | no | kind:'nurbs' — optional periodic/closed-curve flag. |
| a | object | no | kind:'hermite' — start endpoint. |
| b | object | no | kind:'hermite' — end endpoint. |
| binding_name | string | no | JS const name for the new Curve3D binding (default: _curve_<N>). |
Use this when you need to append a curved segment to an existing PathBuilder chain on the named chain_anchor variable. The call is injected at the END of the chain, immediately before any .close(). One segment kind, selected by kind: - 'spline' — .spline(points, opts?): interpolates through every points waypoint (Vec2[] mm, >= 2 entries; points[0] must match current pen position). Option
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Which path-segment kind to append. |
| code | string | yes | The .kcad.ts source code. |
| chain_anchor | string | yes | JS identifier of an existing PathBuilder binding (e.g. const brow = path().moveTo(0,0)). |
| points | array | no | kind:'spline' — waypoints as Vec2 pairs in mm; at least 2 entries; first must match current pen position. |
| tension | number | no | kind:'spline' — optional Catmull-Rom-style stiffness; forwarded to the underlying B-spline approximation. |
| startTangent | array | no | kind:'spline' — optional [x, y] direction vector at points[0]. Magnitude is normalised internally; direction matters. |
| endTangent | array | no | kind:'spline' — optional [x, y] direction vector at points[N-1]. Magnitude is normalised internally; direction matters. |
| controlPoints | array | no | kind:'nurbs' — control-net vertices as Vec2 pairs in mm; at least degree+1 entries. |
| degree | integer | no | kind:'nurbs' — B-spline degree (default 3). |
| weights | array | no | kind:'nurbs' — optional rational weights (one per control point; strictly positive). |
| knots | array | no | kind:'nurbs' — optional explicit knot vector; length must equal controlPoints.length + degree + 1. |
| a | object | no | kind:'hermite' — start endpoint; point must match current pen position within 1e-6 mm. |
| b | object | no | kind:'hermite' — end endpoint; pen ends at b.point. |
| binding_name | string | no | Reserved for future use; the segment injection mutates the chain anchor in place. |
Use this when you need to trace features from a reference photo into waypoints. Trace pixel-space features from a reference photo into normalized [0..1] waypoints the agent can map to mm via a known scale anchor and feed to path().spline / path().nurbsSegment. Three backends are dispatched behind the scenes: opencv (deterministic; uniform-bg silhouette only), vision-llm (Claude vision; named p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| imageUrl | string | yes | URL or path to the reference image. Supports file://, http(s)://, data:image/...;base64,..., or a bare filesystem path. |
| hint | string | no | Optional free-text hint forwarded to vision-LLM backends (e.g. "a pair of eyewear; trace the upper brow only"). |
| features | array | no | Features to trace. Defaults to a single { label: "silhouette", kind: "silhouette" } when omitted. |
| maxWaypointsPerFeature | integer | no | Cap on waypoints per feature. Defaults to 12 (suitable for medium-inflection outlines). |
| backend | string | no | Force a specific backend; default auto routes by corner-color stddev. |
Use this when you need to author a variable-section sweep along a spine. Insert a variableSweep(spine, sections, opts?) declaration into the user's .kcad.ts immediately before the last top-level return. The result is a Shape — chain .translate(...), .union(...), etc. via add_feature. spine_binding references an existing variable (Curve3D / Sketch / Vec3[]) in the source; each `sections[i
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| spine_binding | string | yes | Existing variable name for a Curve3D / Sketch / Vec3[] declared earlier in the source. |
| sections | array | yes | Varying cross-sections along the spine; at least 2 entries, strictly increasing in t, first t=0, last t=1. |
| closed | boolean | no | Optional closed-sweep flag. |
| continuity | string | no | Inter-section continuity; default 'C1'. |
| binding_name | string | no | JS const name for the new Shape binding (default: _sweep_<N>). |
Use this when you need to author text into a kernelCAD script before the last top-level return. One authoring path, selected by mode: - 'sketch' — insert a sketch.text(...) call. The emitted sketch is chainable: pair with subsequent .extrude(...) / cut(...) edits to land an engraved or raised text feature. - 'emboss' — insert a <shape>.embossText({...}) chained call onto an existing Shape `tar
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | yes | Which text-authoring path to use. |
| code | string | yes | The .kcad.ts source code. |
| content | string | no | mode:'sketch' — text content (UTF-8, non-empty, non-whitespace). |
| size | number | no | mode:'sketch'|'emboss' — glyph cap height in mm (positive finite). |
| font | string | no | mode:'sketch' — optional logical font name or .ttf file path; defaults to bundled Liberation Sans. |
| align | string | no | mode:'sketch' — horizontal alignment relative to position (default left); mode:'emboss' — relative to the UV anchor (default center). |
| position | array | no | mode:'sketch' — [x, y] anchor in mm. Default [0, 0]. |
| rotation | number | no | mode:'sketch' — CCW rotation in degrees around position (default 0); mode:'emboss' — CCW rotation in the face tangent plane (default 0). |
| bindAs | string | no | mode:'sketch' — emits const <bindAs> = sketch.text(...); mode:'emboss' — emits const <bindAs> = <target>.embossText(...);. |
| target | string | no | mode:'emboss' — variable name of the Shape to chain onto (inserted verbatim). |
| textContent | string | no | mode:'emboss' — text content (UTF-8, non-empty, non-whitespace). |
| depth | number | no | mode:'emboss' — signed extrusion depth in mm: positive emboss out, negative engrave in. Must be non-zero. |
| face | string | no | mode:'emboss' — target face — canonical name ('top'/'bottom'/'left'/'right'/'front'/'back') or label. |
| fontFamily | string | no | mode:'emboss' — optional logical font name or .ttf file path; defaults to bundled Liberation Sans. |
| anchorU | number | no | mode:'emboss' — U anchor in [0, 1] face-local (0=umin, 0.5=centre, 1=umax). Default 0.5. |
| anchorV | number | no | mode:'emboss' — V anchor in [0, 1] face-local. Default 0.5. |
| scaleMode | string | no | mode:'emboss' — Drawing.sketchOnFace scaling mode. Default original. |
Use this when you need to wrap a 2D curve onto a 3D face. Insert a <shape>.projectCurve({ curve, face, scaleMode?, asEdge? }) chained call into a kernelCAD script. Wraps a 2D closed curve onto a 3D face along the face normal; pair with .extrude(d) / .cut(...) for engraved logos or label inserts on curved bodies. asEdge: true is captured but currently deferred at lower time (BRepProj_Projec
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| target | string | yes | Variable name of the Shape to chain onto. |
| curveExpression | string | yes | JS expression returning a closed sketch (e.g. path().moveTo(0,0).lineTo(2,0).lineTo(2,2).close().build()). Inserted verbatim as the curve: field. |
| face | string | yes | Target face — canonical name or label. |
| scaleMode | string | no | Drawing.sketchOnFace scaling mode. Default original. |
| asEdge | boolean | no | Project as an open edge instead of a closed face-bound sketch. Currently deferred. |
| bindAs | string | no | Optional local variable name; emits const <bindAs> = <target>.projectCurve(...);. |
Use this when you need to repeat a feature in a pattern. Insert a Shape.patternLinear / .patternCircular / .patternGrid call into a kernelCAD script before the last top-level return. Pass structured args (kind + the matching spec object). Returns the modified code plus diagnostics from re-evaluating. Side-effect-free. The pattern feature is a single editable unit; pattern-instance face refs resolv
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| target | string | yes | Variable name of the Shape to pattern (inserted verbatim as the LHS receiver). |
| kind | string | yes | — |
| linear | object | no | Required when kind=linear. |
| circular | object | no | Required when kind=circular. |
| grid | object | no | Required when kind=grid. |
| assign_to | string | no | Optional const-binding name; emits const <assign_to> = <target>.patternX(...);. Omit for statement form. |
Use this when you need to remove a feature line from a script. Remove a single line from a kernelCAD script identified by a substring match. Returns the modified code plus diagnostics from re-evaluating. Refuses to remove the line containing the return statement. Side-effect-free.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| match | string | yes | A substring that uniquely identifies the line to remove (e.g. const hole = cylinder(5,). |
Use this when you need to resolve or inspect topology against a script's lowered geometry. Selected by mode (default 'evaluate'): - 'evaluate' — inspect a Query (@kc[...] ref, @kcq[...] DSL, or { ast }); returns matched entities. Pass expect:'unique' to assert exactly-one. - 'resolve' — resolve a single @kc[...] / @kcq[...] ref to one entity ({ ref }). - 'lineage' — walk the HistoryMap for a nam
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Resolution mode (default 'evaluate'). |
| file | string | no | Path to a .kcad.ts script file. |
| code | string | no | Inline kernelCAD script source. |
| query | no | mode:'evaluate' — Query input: @kc[...] / @kcq[...] string or { ast } object. | |
| ref | string | no | mode:'resolve'|'lineage' — topology ref string. |
| expect | string | no | mode:'evaluate' — 'unique' asserts exactly-one. |
| feature_id | string | no | Optional FeatureId; defaults to the last lowered shape (use "auto" for lineage). |
Use this when you need to list the kernelCAD script-runtime surface: global functions (box, path, selectEdges, helix, etc), Shape methods (fillet, sweep, lower, etc), Sketch methods (extrude, revolve, sweep), PathBuilder methods, EdgeQuery/FaceQuery key sets, and featureKindFaceLabels (which globals accept opts.faceLabels and valid value shapes). Use this to discover what is callable from a .kcad.
No parameter schema on file.
Use this when you need the kernelCAD 26-code diagnostic catalogue with hint templates. Tiny one-shot call; useful for an agent that wants to pre-populate retry strategies. Hints are also inline on every emitted diagnostic — this tool just gives you the canonical list up front.
No parameter schema on file.
Use this when you need to export geometry to a file. One exporter, selected by target: - target:'model' — export the script geometry to one file. Pass { file | code }, a required { output_path }, and { format }. Supported formats: stl (binary STL mesh), step (BREP CAD interchange), dxf (planar laser/waterjet profile from a Region or planar face), 3mf (slicer-friendly mesh with per-part colors),
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target | string | yes | Which exporter to run: 'model' (whole-script geometry to one file) or 'part' (per-part STLs from a solved assembly). |
| file | string | no | Path to a .kcad.ts script file. |
| code | string | no | Inline kernelCAD script source. |
| output_path | string | no | Destination path. target:'model' — the export file (required). target:'part' — single-part .stl path. |
| format | string | no | target:'model' — output file format (required for that target). |
| feature_id | string | no | target:'model' — optional FeatureId to export; defaults to last. |
| options | object | no | target:'model' — optional per-format options bag. Discriminator options.format must equal top-level format. dxf: { layers?, unit?: "mm"|"cm"|"in", tolerance? }. 3mf: { printUnit?: "mm"|"cm"|"in", embe |
| part | string | no | target:'part' — part name for single-part export, or 'all'. |
| output_dir | string | no | target:'part' — destination directory (all-parts mode); files are <dir>/<part>.stl. |
| no_verify | boolean | no | Skip the STL watertight verify gate. |
Use this when you need a canonical pattern snippet for a CAD task. Search the kernelCAD cookbook for canonical pattern snippets. Returns top-k snippets matching the natural-language query, ranked by BM25 over title/tags/keywords/trigger. Use when you need a canonical pattern for fillet-after-subtract, non-overlapping booleans, sketch-to-extrude flows, etc. Returns empty if no snippet scores above
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural-language description of what you want to do (e.g. "round the rim of a hole", "build an L-bracket"). |
| k | number | no | Max snippets to return. Default 3, max 5. |
Use this when you need to find a part in the catalog. Discover bundled (and optionally remote) part-catalog records by fuzzy query and faceted filters. Tokens AND-combine; cross-facet filters AND-combine. Pass partsBaseUrl (or set KERNELCAD_PARTS_BASE_URL) to enable the remote tier; otherwise results are bundled-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | — |
| category | string | no | — |
| family | string | no | — |
| standard | string | no | — |
| tag | string | no | — |
| limit | number | no | — |
| source | string | no | — |
| partsBaseUrl | string | no | Opt-in remote endpoint; no default value ships with kernelCAD. |
Use this when you need to download a catalog part as a STEP file. Resolve an id (or single-match query) to a part record and write its STEP file to the local cache. Bundled ids resolve offline; non-bundled ids require partsBaseUrl (or KERNELCAD_PARTS_BASE_URL). Returns the cache path plus a sha256 fingerprint.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | — |
| query | string | no | — |
| category | string | no | — |
| family | string | no | — |
| standard | string | no | — |
| partsBaseUrl | string | no | Opt-in remote endpoint; no default value ships with kernelCAD. |
Use this when you need to solve a 2D sketch constraint set. Solve a 2D sketch constraint set. Side-effect-free: pass { entities, constraints } and receive solved entities plus the original constraints. Entities are POINT, LINE, and CIRCLE records; constraints use the kernelCAD constraint vocabulary.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entities | array | yes | Sketch entities to solve. Lines reference point ids; circles reference a center point id. |
| constraints | array | yes | Constraints to apply to the entities. |
Use this when you need to add a sketch constraint to a list. Append one validated sketch constraint to a constraint list. Side-effect-free: pass { constraints, constraint } and receive the updated list.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| constraints | array | no | Existing constraint list to append to (omit for an empty list). |
| constraint | object | yes | The constraint to append. |
Use this when you need to add a part to an assembly. Durably insert const <binding> = <assembly>.part(partName, shapeExpression, opts?) before the final top-level return in a kernelCAD source string. Returns modified source plus diagnostics from re-evaluating it. Side-effect-free: caller persists the returned source.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| assembly_binding | string | yes | JS identifier bound to assembly(...), e.g. "arm". |
| part_name | string | yes | Assembly-unique part name. |
| shape_expression | string | yes | JS expression for the Shape to pass to assembly.part, inserted verbatim. |
| binding_name | string | no | Optional JS const name for the returned AssemblyPartRef. Defaults to a part-name-derived identifier. |
| at | array | no | Optional [x, y, z] assembly placement. |
Use this when you need to add a mate connector to a part. Durably insert <partBinding>.connector(name, { type, origin, axis?, normal? }) before the final top-level return. Use the part binding returned by add_part. Returns modified source plus diagnostics from re-evaluation. Side-effect-free.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| part_binding | string | yes | JS identifier bound to an AssemblyPartRef, e.g. "basePart". |
| name | string | yes | Connector name unique within the part. |
| type | string | yes | — |
| origin | yes | Origin as [x, y, z] shorthand, or a structured ConnectorOrigin. | |
| axis | array | no | Optional [x, y, z] axis. |
| normal | array | no | Optional [x, y, z] normal. |
Use this when you need to author a mate-graph relationship into the source, selected by relation (default 'mate'): - 'mate' — a typed mate between two connectors ({ name, a, b, type, pose?, limitsDeg?, limitsMm? }). - 'coupling' — couple a driven mate to a source mate by ratio ({ driven, source, ratio, offset? }). - 'transmission' — a physical drive path across mates ({ name, kind, sourceMate, d
| Parameter | Type | Required | Notes |
|---|---|---|---|
| relation | string | no | Which relationship to author (default 'mate'). |
| code | string | yes | The .kcad.ts source code. |
| assembly_binding | string | yes | JS identifier bound to assembly(...). |
| name | string | no | relation:'mate'|'transmission' — name unique within the assembly. |
| a | string | no | relation:'mate' — connector ref "<partName>.<connectorName>". |
| b | string | no | relation:'mate' — connector ref "<partName>.<connectorName>". |
| type | string | no | relation:'mate' — mate type. |
| pose | no | relation:'mate' — optional mate pose. | |
| limitsDeg | array | no | relation:'mate' — optional [minDeg, maxDeg]. |
| limitsMm | array | no | relation:'mate' — optional [minMm, maxMm]. |
| driven | string | no | relation:'coupling' — driven mate name. |
| source | string | no | relation:'coupling' — source mate name. |
| ratio | number | no | relation:'coupling' — driven pose = source pose * ratio + offset. |
| offset | number | no | relation:'coupling' — optional pose offset. |
| kind | string | no | relation:'transmission' — transmission kind. |
| sourceMate | string | no | relation:'transmission' — source mate name. |
| drivenMates | array | no | relation:'transmission' — driven mate names. |
| actuator | string | no | relation:'transmission' — optional actuator. |
| input | string | no | relation:'transmission' — optional input. |
| output | string | no | relation:'transmission' — optional output. |
Use this when you need to declare a reachability target for a connector. Durably insert <assembly>.workspace(connectorRef, { reachable, toleranceMm? }) before the final top-level return. Workspace targets are checked by solvedModel validation/review pose-envelope gates. Returns modified source plus diagnostics from re-evaluation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| assembly_binding | string | yes | JS identifier bound to assembly(...). |
| connector_ref | string | yes | Connector ref "<partName>.<connectorName>". |
| reachable | array | yes | World-frame Vec3 targets the connector must be able to reach. |
| toleranceMm | number | no | Optional non-negative tolerance in mm. |
Use this when you need to set how the script returns its assembly. Replace the final top-level return statement with return <assembly>.model(); or return <assembly>.solvedModel(poses, options?);. Use solvedModel for mate-authored mechanisms so FK and validation run. Returns modified source plus diagnostics from re-evaluation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | The .kcad.ts source code. |
| assembly_binding | string | yes | JS identifier bound to assembly(...). |
| mode | string | yes | — |
| poses | object | no | Optional solvedModel pose overrides keyed by mate name. Defaults to {}. |
| options | object | no | Optional solvedModel options such as { validate: 'warn', posesGate: 'envelope' }. |
Use this when you need to solve the mate graph and get part poses. Run the v0.6 mate-graph solver on the active assembly. Returns { status, poses, iterations? } where each pose is a serialized Transform ({ translation, rotateAxis, rotateDeg }). Optional poses overrides mate pose values by mate name.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| assembly | string | no | — |
| poses | object | no | Optional numeric pose overrides keyed by mate name. |
Use this when you need to review a mechanism for fitness and repair mode. Run the deterministic CAD review loop: evaluate the script, validate the assembly/mate graph, check mate connectors touch modeled material, sample declared mate limits, optionally check interferences at sampled poses, report connector workspace bounds, and return a mechanism fitness verdict for agent self-review. Fitness inc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | no | Path to a .kcad.ts script file. |
| code | string | no | Inline kernelCAD script source. |
| assembly | string | no | Assembly name; defaults to the first captured assembly. |
| designGoal | string | no | Original user design prompt or goal. Included in suggestedRepairPrompt so topology-redesign repairs restart from the intended physical design instead of local coordinate nudges. |
| preserveInterfaces | array | no | External mates, connector refs, part names, or behavioral interfaces the repair agent must preserve during redesign. |
| includePoseEnvelope | boolean | no | Whether to sample declared mate limits. Default true. |
| includeInterference | boolean | no | Whether sampled poses run BREP interference checks. Default true. |
| samplesPerMate | integer | no | Pose-envelope samples per declared-limit mate. 1 (default) = corners only; >=3 adds uniform interior points between min and max. Total samples per non-locked mate = samplesPerMate. |
| combinatorial | boolean | no | Sample all 2^N limit-corner combinations across mates with declared limits. Capped at 8 mates with limits; combine with samplesPerMate for both interior coverage and worst-pose detection. Default fals |
| epsilonMm3 | number | no | Interference volume threshold in mm^3. Default 0.01. |
| trackConnectors | array | no | Optional connector refs such as ["gripper-plate.tool-tip"] to limit connector workspace reporting. |
| gripperAperture | object | no | Optional fingertip connector refs for gripper aperture travel reporting. |
Use this when you need to run a CAD design loop over multiple attempts. Run an agent CAD design loop over one or more attempt scripts: review each attempt with review_cad, continue past functional attempts that still have unresolved review warnings, return structured repair prompts, and optionally write a Studio-compatible build record JSON for visual replay.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| goal | string | yes | Original user design goal. Fed into every review_cad repair prompt. |
| attempts | array | yes | Ordered design attempts. Each item is { id?, title?, file? OR code?, visualReview? } — provide file or code (at least one). File attempts can be replayed by Studio build records. |
| assembly | string | no | — |
| preserveInterfaces | array | no | External mates, connector refs, part names, or behavioral interfaces the agent must preserve between attempts. |
| includePoseEnvelope | boolean | no | Forwarded to review_cad. Default true. |
| includeInterference | boolean | no | Forwarded to review_cad. Default true. |
| samplesPerMate | integer | no | Pose-envelope samples per declared-limit mate. 1 (default) = corners only; >=3 adds uniform interior points between min and max. Total samples per non-locked mate = samplesPerMate. |
| combinatorial | boolean | no | Sample all 2^N limit-corner combinations across mates with declared limits. Capped at 8 mates with limits; combine with samplesPerMate for both interior coverage and worst-pose detection. Default fals |
| epsilonMm3 | number | no | Forwarded to review_cad. |
| trackConnectors | array | no | Connector refs to track across sampled poses. |
| gripperAperture | object | no | Optional gripper aperture request forwarded to review_cad. |
| stopOnPass | boolean | no | Stop after the first attempt that is functional and passes the quality gate. Default true. |
| requireVisualReview | boolean | no | Require screenshot-backed visualReview with structured checks before accepting an attempt. Default true; set false only for explicit non-visual batch checks. |
| allowReviewWarnings | array | no | Warning diagnostic codes the original prompt explicitly allows. Other review warnings keep the loop iterating even if review_cad is functionally ok. |
| outputRecordPath | string | no | Optional JSON path to write a Studio-compatible build record. |
| recordTitle | string | no | Optional title for the build record. |
Use this when you need the unfolded flat pattern of a bent sheet-metal part. Return the unfolded 2D flat-pattern of a bent sheet-metal Shape as a Region (outer polyline + holes + bend lines + sketch plane). Slice 1: at most 2 bends. Pass { file } or { code }; optional { featureId } to pick a specific Shape.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | no | — |
| code | string | no | — |
| featureId | string | no | — |
Use this when you need to sample a signed-distance field at a point. Sample the signed distance from an in-script sdf.* field at a 3D point. Returns { distance, inside, aabb, kind }. Distance is in mm; negative = inside the surface, 0 = exactly on the surface, positive = outside. Use this to verify SDF composition before calling sdf.materialize (which is the expensive step). The script must bind t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | no | Path to a .kcad.ts script file. |
| code | string | no | Inline kernelCAD script source. |
| fieldName | string | yes | sdf.bind binding name holding the SdfField. |
| point | array | yes | Sample point [x, y, z] in mm. |
Use this when you need to render a script's animation timeline to a video. Capture a kernelCAD script's animationView({...}) timeline to an MP4 (ffmpeg) or a PNG frame sequence, verifying the sampled poses for part interference. FILE ONLY: pass { file } (a .kcad.ts path) — there is no { code } mode, because the capture engine renders from a file on disk (its relative lib.fromSTEP imports resolve a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | yes | Path to a .kcad.ts script with an animationView({...}) record. Required (no inline { code } mode). |
| output_path | string | no | MP4 output path; default <scriptDir>/<basename>-animation.mp4. Mutually exclusive with frames_dir. |
| frames_dir | string | no | PNG-sequence mode directory: write frame-0000.png... and skip ffmpeg. Mutually exclusive with output_path. |
| fps | number | no | Override the animationView record's fps. |
| no_verify | boolean | no | Skip the animation-pose interference verification (default: verify on). |
| verify_every | integer | no | Additionally verify at every n-th frame time of the fps schedule (unioned with the keyframe sample set). |
| focus | array | no | Show only matching feature ids / assembly part names in the rendered frames. Mutually exclusive with hide. Render-only; does not affect pose verification. |
| hide | array | no | Hide matching feature ids / assembly part names in the rendered frames. Mutually exclusive with focus. Render-only; does not affect pose verification. |
Use this when you need to LOOK at a kernelCAD model — render its script to deterministic PNG views for visual self-check (the visual half of the evaluate → render → inspect → fix loop), with NO studio or dev server required. Pass { code } (inline source) or { file } (a .kcad.ts path), exactly one. Renders the canonical engineering views (front, right, top, iso — pass { views } for a subset, e.g. [
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | no | Inline kernelCAD script source. Mutually exclusive with file. Relative imports resolve against a temp dir — use file for scripts with relative lib.fromSTEP(...) imports. |
| file | string | no | Path to a .kcad.ts script on disk. Mutually exclusive with code. |
| views | array | no | Canonical views to render as an array, e.g. ["iso"] or ["front","top"] (default: all four). Fewer views = faster. |
| pose | string | no | Extra arbitrary camera pose '<az>,<el>' in degrees, e.g. '30,20'. |
| focus | array | no | Show only matching feature ids / assembly part names. Mutually exclusive with hide. |
| hide | array | no | Hide matching feature ids / assembly part names. Mutually exclusive with focus. |
| out_dir | string | no | Directory for the PNGs (created if missing). Default: a fresh temp session dir. |
| width | integer | no | Per-view tile width in px (default 768). |
| height | integer | no | Per-view tile height in px (default 768). |
| environment | string | no | HDRI environment override: preset ('studio', 'softbox', 'neutral', 'outdoor', 'warehouse'), a URL, or 'none' for the default three-light rig. |
| no_watermark | boolean | no | Suppress the kernelCAD version watermark. |
| no_mechanism_check | boolean | no | Skip the mechanism-truth probe for fast iteration on large assemblies; the preview reports mechanism: 'unverified'. Ignored under KERNELCAD_RENDER_STRICT=1. |
| base_url | string | no | Advanced: force a specific render server (e.g. a running studio dev server) instead of the bundled static player. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Kernelcad or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Kernelcad can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.