Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

com.kernelcad/kernelcad

REMOTE · MCP.KERNELCAD.COM · 2 COMPONENTS · SCANNED AUG 3

Agent-first CAD: editable .kcad.ts source, deterministic review, OpenCASCADE kernel.

+4 this week 65 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability69
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 14270 tokens (~310/item across 46 items; 45 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 92% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.kernelcad.com

# add to Claude Code
claude mcp add --transport http com-kernelcad-kernelcad https://mcp.kernelcad.com/mcp
# ~/.codex/config.toml
[mcp_servers.com-kernelcad-kernelcad]
url = "https://mcp.kernelcad.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-kernelcad-kernelcad": {
      "type": "remote",
      "url": "https://mcp.kernelcad.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-kernelcad-kernelcad --url https://mcp.kernelcad.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-kernelcad-kernelcad:
    url: "https://mcp.kernelcad.com/mcp"
// mcp.json
{
  "mcpServers": {
    "com-kernelcad-kernelcad": {
      "type": "http",
      "url": "https://mcp.kernelcad.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 +1
    • Stability: unverified → 0.03 functional
  • 27 Jul 26 +61
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 0

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.kernelcad.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.kernelcad.com CN=YE1,O=Let's Encrypt,C=US 26 Jul 2026 24 Oct 2026 ECDSA 256 ECDSA-SHA384 5e5d3aabdb49efa184dbe49fa8809532505
SANs: api.kernelcad.com, mcp.kernelcad.com
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of mcp.kernelcad.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
kernelcad.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.kernelcad.com/mcp Verified 200
http (plaintext) http://mcp.kernelcad.com/mcp HTTPS enforced 301 https://mcp.kernelcad.com/mcp
MCP tools — 45 exposed · ~14,247 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
remove_feature ~107

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.

NameTypeReqDescription
codestringyesThe .kcad.ts source code.
matchstringyesA substring that uniquely identifies the line to remove (e.g. `const hole = cylinder(5,`).
NameTypeReqDescription
binding_namestringJS const name bound to the new construct (when one was created).
diagnosticsarrayDiagnostics from re-evaluating the modified source.
errorstringFailure message (present when ok is false).
new_codestringModified .kcad.ts source (present on success). Caller persists it.
okbooleanyesWhether the edit applied and re-evaluated cleanly.

No examples provided.

render_preview ~809

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. ["iso"] for fastest iteration) plus an optional { pose: "<az>,<el>" } arbitrary camera angle (degrees; az=0,el=0 is front, +az rotates CCW around +Z, +el lifts the camera). NO STUDIO / DEV-SERVER REQUIRED: a prebuilt static player (dist/headless-player) is served from an ephemeral local port automatically; a running studio dev server is used as fallback, and { base_url } forces one. The only environment dependency is playwright chromium (npx playwright install chromium). Pass { focus } or { hide } (arrays of feature ids or assembly part names, mutually exclusive) to isolate parts — same semantics as `kernelcad render --focus/--hide`. PNGs are written to { out_dir } (default: a fresh temp session directory) and returned as absolute paths with per-view camera descriptions (kernelCAD is Z-up). Mechanism truth runs first, same protocol as `kernelcad render`: a broken mechanism still renders but every tile is watermarked MECHANISM BROKEN (KERNELCAD_RENDER_STRICT=1 refuses instead); read { mechanism, mechanism_failure_codes }. The probe runs full BREP interference sweeps and can dominate latency on large assemblies — pass { no_mechanism_check: true } for fast iteration (the preview then reports mechanism: "unverified"; ignored under strict mode). Returns { ok, images: [{ name, path, description }], out_dir, bounds, mechanism, render_source, render_ms, diagnostics }. PATHS ARE LOCAL to the machine running the MCP server — local stdio clients read them directly; hosted/remote clients should use open_in_studio instead.

NameTypeReqDescription
base_urlstringAdvanced: force a specific render server (e.g. a running studio dev server) instead of the bundled static player.
codestringInline kernelCAD script source. Mutually exclusive with file. Relative imports resolve against a temp dir — use file for scripts with relative lib.fromSTEP(...) imports.
environmentstringHDRI environment override: preset ('studio', 'softbox', 'neutral', 'outdoor', 'warehouse'), a URL, or 'none' for the default three-light rig.
filestringPath to a .kcad.ts script on disk. Mutually exclusive with code.
focusarrayShow only matching feature ids / assembly part names. Mutually exclusive with hide.
heightintegerPer-view tile height in px (default 768).
hidearrayHide matching feature ids / assembly part names. Mutually exclusive with focus.
no_mechanism_checkbooleanSkip the mechanism-truth probe for fast iteration on large assemblies; the preview reports mechanism: 'unverified'. Ignored under KERNELCAD_RENDER_STRICT=1.
no_watermarkbooleanSuppress the kernelCAD version watermark.
out_dirstringDirectory for the PNGs (created if missing). Default: a fresh temp session dir.
posestringExtra arbitrary camera pose '<az>,<el>' in degrees, e.g. '30,20'.
viewsarrayCanonical views to render as an array, e.g. ["iso"] or ["front","top"] (default: all four). Fewer views = faster.
widthintegerPer-view tile width in px (default 768).
NameTypeReqDescription
boundsobjectModel AABB in mm { min, max } the camera was fit to (success).
diagnosticsarrayyes
errorstring
errorCodestring
errorHintstring
imagesarrayyesRendered tiles { name, path, description } — absolute local PNG paths with per-view camera orientation (kernelCAD is Z-up).
mechanismstringMechanism-truth verdict: 'real' | 'broken' | 'unverified'.
mechanism_failure_codesarrayDe-duplicated failure codes when mechanism is 'broken'.
okbooleanyesWhether the preview rendered.
out_dirstringDirectory holding the PNGs (session temp dir unless out_dir was given).
render_msnumberWall-clock render time in ms (provisioning + browser + captures).
render_sourcestringLane that served the render: 'static-player' | 'dev-server' | 'explicit'.

No examples provided.

review_cad ~414

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 includes repairMode: none, local-fix, parameter-tune, or topology-redesign.

NameTypeReqDescription
assemblystringAssembly name; defaults to the first captured assembly.
codestringInline kernelCAD script source.
combinatorialbooleanSample 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 fal…
designGoalstringOriginal user design prompt or goal. Included in suggestedRepairPrompt so topology-redesign repairs restart from the intended physical design instead of local coordinate nudges.
epsilonMm3numberInterference volume threshold in mm^3. Default 0.01.
filestringPath to a .kcad.ts script file.
gripperApertureobjectOptional fingertip connector refs for gripper aperture travel reporting.
includeInterferencebooleanWhether sampled poses run BREP interference checks. Default true.
includePoseEnvelopebooleanWhether to sample declared mate limits. Default true.
preserveInterfacesarrayExternal mates, connector refs, part names, or behavioral interfaces the repair agent must preserve during redesign.
samplesPerMateintegerPose-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.
trackConnectorsarrayOptional connector refs such as ["gripper-plate.tool-tip"] to limit connector workspace reporting.
NameTypeReqDescription
assemblystring
connectorWorkspacearrayConnector workspace bounds.
diagnosticsarrayyes
featureCountnumberyes
fitnessobjectMechanism fitness verdict incl. repairMode.
gripperApertureobject
mechanismstring
mechanismFailuresarray
okbooleanyes
poseEnvelopeobjectSampled mate-limit pose envelope.
rawInterferencePairsarray
repairContextobject
suggestedRepairPromptstringStructured repair prompt (failure / repair path).
validatorobjectAssembly/mate-graph validator result.

No examples provided.

review_paint_peek_latest ~382

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") describing WHAT is wrong — and act on the feedback. The slug is the capability: no OAuth required when passing `slug`; private projects require the owner to be signed in. Omit `slug` to fetch your own latest packet from your signed-in account (requires OAuth). By default returns short-lived signed Storage URLs for the screenshot + mask + meta.json plus the struck part names — small and context-friendly. Pass `paths_only: false` to also base64-inline the PNGs for clients that cannot fetch the signed URLs over HTTP.

NameTypeReqDescription
freshness_secintegerMaximum 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_onlybooleanControls 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-inl…
slugstringProject 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 us…

Structured output declared, but exposes no named fields.

No examples provided.

set_param ~141

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).

NameTypeReqDescription
codestringyesThe .kcad.ts source code.
new_valueyesThe 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").
param_namestringyesThe string literal name of the param (first arg to param()).
NameTypeReqDescription
binding_namestringJS const name bound to the new construct (when one was created).
diagnosticsarrayDiagnostics from re-evaluating the modified source.
errorstringFailure message (present when ok is false).
new_codestringModified .kcad.ts source (present on success). Caller persists it.
okbooleanyesWhether the edit applied and re-evaluated cleanly.

No examples provided.

set_scene_return ~161

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.

NameTypeReqDescription
assembly_bindingstringyesJS identifier bound to assembly(...).
codestringyesThe .kcad.ts source code.
modestringyes
optionsobjectOptional solvedModel options such as { validate: 'warn', posesGate: 'envelope' }.
posesobjectOptional solvedModel pose overrides keyed by mate name. Defaults to {}.
NameTypeReqDescription
binding_namestringJS const name bound to the new construct (when one was created).
diagnosticsarrayDiagnostics from re-evaluating the modified source.
errorstringFailure message (present when ok is false).
new_codestringModified .kcad.ts source (present on success). Caller persists it.
okbooleanyesWhether the edit applied and re-evaluated cleanly.

No examples provided.

solve_mates ~96

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.

NameTypeReqDescription
assemblystring
posesobjectOptional numeric pose overrides keyed by mate name.
NameTypeReqDescription
errorstring
errorCodestring
errorHintstring
iterationsnumberSolver iteration count (success).
okbooleanyes
posesobjectSolved part poses keyed by mate; each a serialized Transform (success).
statusstringSolver status (success).

No examples provided.

solve_sketch ~107

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.

NameTypeReqDescription
constraintsarrayyesConstraints to apply to the entities.
entitiesarrayyesSketch entities to solve. Lines reference point ids; circles reference a center point id.
NameTypeReqDescription
constraintsarrayyesThe constraints applied.
entitiesarrayyesSolved sketch entities.
errorsarraySolver errors (present on failure).
okbooleanyes

No examples provided.

trace_from_image ~383

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 points/cluttered backgrounds; caller-supplied ANTHROPIC_API_KEY), and `hybrid` (opencv silhouette + LLM-labeled named points). Default backend is `auto` — the tool picks based on the image's corner-color stddev. Accuracy honesty: opencv contour is geometrically exact; vision-LLM is typically 5–10% off on dense landmarks. Per-feature `confidence` is reported. Caller pays for any vision-LLM API spend via their own ANTHROPIC_API_KEY. Pair with the `kernelcad-trace-from-image` skill for the conversion-to-mm pipeline.

NameTypeReqDescription
backendstringForce a specific backend; default `auto` routes by corner-color stddev.
featuresarrayFeatures to trace. Defaults to a single { label: "silhouette", kind: "silhouette" } when omitted.
hintstringOptional free-text hint forwarded to vision-LLM backends (e.g. "a pair of eyewear; trace the upper brow only").
imageUrlstringyesURL or path to the reference image. Supports file://, http(s)://, data:image/...;base64,..., or a bare filesystem path.
maxWaypointsPerFeatureintegerCap on waypoints per feature. Defaults to 12 (suitable for medium-inflection outlines).
NameTypeReqDescription
diagnosticsarrayyes
featuresarrayyesTraced features with normalized [0..1] waypoints + confidence.
imageDimsarrayyesPixel dimensions [width, height] of the source image.
okbooleanyes

No examples provided.

verify ~876

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 rules ({ vendor, material, thicknessIn|thicknessMm, ... }). - 'swept-collision' — sweep declared joint range(s) and report colliding poses. - 'reachable' — inverse-kinematics reachability for an end-effector ({ tip_link, target_position, ... }). - 'mounting-holes' — fastened mates expose matching hole diameters on both sides. - 'load-capacity' — closed-form Euler-Bernoulli beam stress / safety-factor check ({ loads, materials, ... }). All params except `check` are check-specific and forwarded verbatim; each check fails closed on its own missing required params.

NameTypeReqDescription
assemblystringAssembly name; defaults to the first captured assembly.
checkstringyesWhich verification to run.
codestringInline kernelCAD script source (same checks as `file`).
collision_tolerance_mm3numbercheck:'swept-collision' — BREP intersection volume tolerance (mm^3).
dxfstringcheck:'dfm-preflight' — path to a DXF file.
featureIdstringcheck:'dfm-preflight' — FeatureId to scope to.
filestringPath to a .kcad.ts script (assembly/dfm/dfm-preflight/swept-collision/reachable/mounting-holes/load-capacity).
jointstringcheck:'swept-collision' — joint to sweep; omit to sweep every declared joint.
loadsobjectcheck:'load-capacity' — partName -> { force?: [Fx,Fy,Fz] N, torque?: [Tx,Ty,Tz] N*m }.
materialstringcheck:'dfm-preflight' — material SKU (required for that check).
materialsobjectcheck:'load-capacity' — partName -> material declaration.
max_iterationsnumbercheck:'reachable' — numeric-path iteration cap.
modestringcheck:'load-capacity' — 'beam' (default) or 'stub'.
orientation_tolerance_radnumbercheck:'reachable' — orientation tolerance in radians.
position_tolerance_mmnumbercheck:'reachable' — position tolerance in mm.
prefer_solverstringcheck:'reachable' — force the IK path ('auto' default).
rangearraycheck:'swept-collision' — [lower, upper, step] in joint-native units.
refreshCatalogbooleancheck:'dfm-preflight' — force vendor catalog refresh.
safety_factor_thresholdnumbercheck:'load-capacity' — pass/fail safety-factor floor (default 1.5).
seedobjectcheck:'reachable' — numeric IK seed pose (joint name -> deg/mm).
servicestringcheck:'dfm-preflight' — service.
target_orientationarraycheck:'reachable' — target XYZ Euler angles in radians.
target_positionarraycheck:'reachable' — target [x, y, z] mm (world frame).
thicknessInnumbercheck:'dfm-preflight' — material thickness in inches.
thicknessMmnumbercheck:'dfm-preflight' — material thickness in millimeters.
tip_linkstringcheck:'reachable' — end-effector part name (required for that check).
urdf_pathstringcheck:'urdf' — path to the .urdf file.
vendorstringcheck:'dfm-preflight' — vendor SKU (required for that check).
NameTypeReqDescription
diagnosticsarrayVerifier diagnostics (most checks).
errorstringFailure message (present on failure).
errorCodestring
okbooleanyesWhether the verification ran and passed its gate.

No examples provided.

why_did_this_fail ~110

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? }.

NameTypeReqDescription
codestring
feature_idstring
filestring
NameTypeReqDescription
chainarrayUpstream feature diagnostics in topological order; requested feature last.
errorstring
errorCodestring
feature_idstring
okbooleanyes

No examples provided.