Not reviewed
No score, grade or rank. This listing is facts from the official MCP registry and our own checks, and it stays out of the rankings until the panel reviews it.
Agent-first CAD: editable .kcad.ts source, deterministic review, OpenCASCADE kernel.
Facts
- MCP registry
com.kernelcad/kernelcad· 0.11.2- Endpoint
https://mcp.kernelcad.com/mcp- Packages
npmkernelcad stdio- npm / week
- 254
- GitHub stars
- 25
- Registry entry
- updated 2 Jun 2026
From the official MCP registry, the package registries and our own checks. JSON · Markdown
Why it's listed
- It's published in the registry under kernelcad.com, a namespace the registry only gives to whoever proves they control that domain.
Being indexed says nothing about quality, and nobody can pay for it. Is this yours? Ask for a review.
Tools it lists 56 · about 52,615 tokens of context · checked 23 hours ago
| Tool | What it does | Hint |
|---|---|---|
review_paint_peek_latestGet Latest Painted Review Feedback | 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… | read-only |
open_in_studioOpen in Studio | Save the model as a kernelCAD project AND show it: persists a project revision, returns the interactive Studio viewer (MCP Apps / ChatGPT outputTemplate), and includes a PNG preview in the SAME tool result (image… | writes |
get_projectGet Project | 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… | read-only |
get_project_revisionGet Project Revision | 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… | read-only |
get_latest_renderGet Latest Render | Render a project's current model server-side and return it as an inline image so you can SEE what you built. Prefer open_in_studio for the happy path — it already includes an iso PNG preview in the same publish result… | read-only |
get_model_meshGet Model Mesh | 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… | read-only |
request_uploadRequest File Upload | Use this when the user has a photo, PDF drawing, STEP, STL, DXF, SVG or 3MF file on their device and you need it in a kernelCAD tool (trace_from_image, drawing_to_cad, mesh_to_features, inspect of:"step", or… | writes |
lookup_authoring_skillLook Up Authoring Skill | Return the kernelcad-authoring skill — conventions for writing .kcad.ts scripts (API surface, parameters, evaluation contract, common pitfalls) — in sections. Call with NO arguments first: you get the quick-start… | read-only |
mesh_summarySummarize Mesh Geometry | 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… | read-only |
evaluate_scriptEvaluate CAD Script | 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(...) →… | read-only |
diff_scriptsDiff CAD Scripts | 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 }… | read-only |
inspectInspect Model | 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… | read-only |
verifyVerify Design | 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… | read-only |
why_did_this_failExplain Failure | 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… | read-only |
set_paramSet Parameter | 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… | writes |
add_featureAdd Feature | 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… | writes |
add_surfaceAdd Surface | Use this when you need an organic, freeform, or swept shape — a body shell, panel, fairing, ergonomic curve, lens, or sculpted form — authored as a NURBS Surface into the user's .kcad.ts, OR when you need to finish… | writes |
add_curveAdd Curve | Use this when you need a freeform/organic 3D curve — a body feature line, brow, spine rail, or G2 blend between panels — authored as a Curve3D into the user's .kcad.ts immediately before the last top-level return. One… | writes |
add_path_segmentAdd Path Segment | Use this when you need a freeform/organic 2D outline — an eyewear brow, ergonomic grip, sneaker midsole, or body silhouette — by appending a curved segment to an existing PathBuilder chain on the named `chain_anchor`… | writes |
trace_from_imageTrace Outline from Image | 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… | writes |
add_variable_sweepAdd Variable Sweep | Use this when you need an organic swept solid whose cross-section changes along its length — a tapering body, horn, bottle, fairing, or duct — authored as a variable-section sweep along a spine. Insert a… | writes |
add_textAdd Text | 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… | writes |
project_curveProject Curve | Use this when you need to wrap a 2D closed curve onto a 3D face. Insert a `<shape>.projectCurve({ source, face, scaleMode? })` chained call into a kernelCAD script. The `source` is the structured `{ kind:… | writes |
add_pattern_featureAdd Pattern Feature | 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… | writes |
remove_featureRemove Feature | 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… | writes |
queryQuery Geometry | 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… | read-only |
lookup_apiLook Up API | 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),… | read-only |
lookup_diagnosticsLook Up Diagnostics | 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… | read-only |
exportExport | 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 }.… | writes |
lookup_cookbookLook Up Cookbook | 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… | read-only |
find_partFind Part | Search the bundled parts catalog (offline). For a NEMA-17 motor write `await lib.standard.nema17()`; for a 608 bearing write `await lib.standard.bearing608()`. Do not fan out parallel lookups and do not pass… | read-only |
fetch_partFetch Part | Fetch one bundled catalog part. Prefer `await lib.standard.nema17()` and `await lib.standard.bearing608()` — they are offline and do not download remote STEP. A lookup that cannot finish fails within 45s with errorCode… | read-only |
solve_sketchSolve Sketch | 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… | read-only |
add_constraintAdd Constraint | 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. | writes |
add_partAdd Part | 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… | writes |
add_connectorAdd Connector | 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.… | writes |
add_mateAdd Mate | 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? }). -… | writes |
add_workspace_targetAdd Workspace Target | 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… | writes |
set_scene_returnSet Scene Return | 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… | writes |
solve_matesSolve Mates | 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,… | read-only |
review_cadReview CAD Model | 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,… | read-only |
design_loopRun Design Loop | Use this when the goal is complex / production / enclosure / gearbox / robot-arm / multi-body, or when you need evaluate→review/verify→revise until green. PREFERRED over one-shot evaluate_script+open_in_studio for… | writes |
flatten_patternFlatten Sheet-Metal Pattern | 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… | read-only |
evaluate_sdfEvaluate SDF | 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… | read-only |
capture_animationCapture Animation | Use this when you need to render a script's animation timeline to a video, or a 360° turntable of a model for sharing. Capture a kernelCAD script's animationView({...}) timeline to an MP4 (ffmpeg) or a PNG frame… | writes |
render_previewRender Preview | 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… | writes |
resolve_assumptionsResolve Image Assumptions | Use this when you need to confirm or override the open facts in an assumption ledger from trace_from_image (missing scale, inferred/assumed values) before committing geometry built from a reference photo. Reads the… | writes |
run_feaRun Structural FEA | Use this when you need to know whether a part will hold a load. Runs the linear-static structural study a script declares with `shape.feaStudy({ material, fixed, loads, meshSize?, minSafetyFactor? })`: meshes the solid… | writes |
fea_summaryGet FEA Summary | Use this when you need a structural check's context without paying for a solve. Read-only: returns the stored summary of a previous run_fea (pass the same `output_dir`), whether the CalculiX + gmsh toolchain is… | read-only |
send_to_printerSend G-code to Printer | Use this when you need to upload a .gcode file (e.g. written by export with target: "model", format: "gcode") to a real network printer and, by default, start the print. protocol: 'octoprint' (POST /api/files/local with… | writes |
repair_scriptRepair CAD Script | Use this when evaluate_script reported an error and you want the fix applied rather than described. Takes the candidates why_did_this_fail derives for a diagnostic, applies them one at a time, re-evaluates after each,… | writes |
sweep_toleranceSweep Tolerance Range | Use this when you need to check whether a mechanism stays buildable across a tolerance/dimension range, not just at one nominal value. Declares one or more param() names with a { values: [...] } list or a { min, max,… | read-only |
diff_geometryDiff Model Geometry | Use this when you need to know WHAT MATERIAL changed between two versions of a model, not just how much. The deeper sibling of diff_scripts: a volume delta alone is ambiguous (a boss that grew and a pocket that deepened… | read-only |
drawing_to_cadConvert Drawing to CAD | Use this when the reference for a part is a 2D engineering drawing PDF (orthographic views with dimensions), not a photo. Deterministic, no vision model: reads the vector linework (stroke width, dash) and positioned… | writes |
mesh_to_featuresFit Features to Mesh | Use this when you are handed an STL, OBJ or 3MF of a mostly prismatic mechanical part (plate, bracket, spacer, flange, housing block) and need an EDITABLE kernelCAD model of it rather than a faceted lib.fromSTL import.… | read-only |
execute_cookbookExecute Cookbook | Use this when you need evaluate_script (and optionally open_in_studio) for an industry / cookbook demo in ONE step — after lookup_cookbook for industry demos, prefer execute_cookbook when you need evaluate+Studio… | read-only |
What https://mcp.kernelcad.com/mcp answered to tools/list, asked without credentials over MCP 2025-11-25. The token figure is the size of the list as sent, divided by four; a model sees about that much before it calls anything. Full definitions, input schemas included, are in the listing's JSON under mcpTools.
How its tools read to an agent 0 errors · 48 warnings · 0 notes
- warnTC07add_surfacethe description is about 561 tokens
- warnTC07capture_animationthe description is about 640 tokens
- warnTC07exportthe description is about 1,751 tokens
- warnTC07get_latest_renderthe description is about 505 tokens
- warnTC07inspectthe description is about 803 tokens
- warnTC07mesh_to_featuresthe description is about 506 tokens
- warnTC07open_in_studiothe description is about 901 tokens
- warnTC07render_previewthe description is about 879 tokens
- warnTC11add_connector1 parameter without a description: type
- warnTC11add_pattern_feature1 parameter without a description: kind
- warnTC11design_loop1 parameter without a description: assembly
- warnTC11fetch_part5 parameters without a description: category, family, id, query, standard
- warnTC11find_part7 parameters without a description: category, family, limit, query, source, standard and 1 more
- warnTC11flatten_pattern2 parameters without a description: code, featureId
- warnTC11send_to_printer1 parameter without a description: protocol
- warnTC11set_scene_return1 parameter without a description: mode
- warnTC11solve_mates1 parameter without a description: assembly
- warnTC11why_did_this_fail2 parameters without a description: code, feature_id
- warnTC12add_mateno type for pose
- warnTC12inspectno type for edges, faces
- warnTC12queryno type for query
- warnTC12resolve_assumptionsno type for resolutions[].value
- warnTC12trace_from_imageno type for priors[].value
- warnTC12verifyno type for pose
The first 24 of 48; every finding is in the listing's JSON under mcpTools.check.
The checks from /check and anchor check, run each day on the list above: about 52,615 tokens of definitions. Not part of the score yet. Check your own server.