cadkit
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ONSHAPE_ACCESS_KEY | No | Onshape API access key | |
| ONSHAPE_SECRET_KEY | No | Onshape API secret key |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cad_document_createC | Create a document and return documentId + the Main workspaceId. |
| cad_part_studio_createC | Create a Part Studio; returns elementId. |
| cad_sketch_beginA | Open a sketch session on a standard plane (Front/Top/Right) OR an existing face (pass its deterministic id from cad_find_faces as |
| cad_sketch_lineB | Add a line; returns its entityId (points are .start / .end). |
| cad_sketch_circleC | Add a circle; returns entityId. construction=true for a reference circle. |
| cad_sketch_arcA | Add a center-point arc swept counterclockwise from |
| cad_sketch_filletA | Round the corner where two lines meet with a tangent arc of |
| cad_sketch_mirrorA | Mirror sketch lines across an existing line entity (the axis — e.g. a construction line). Emits the reflected copies and a MIRROR constraint tying each copy to its original. Lines only for now. Returns {originalId: copyId}. |
| cad_sketch_patternA | Repeat sketch lines/circles as geometric copies. kind=linear needs direction=[dx,dy] + spacing (inches between instances); kind=circular needs center=[cx,cy] + angle (degrees between instances). count is the total incl. the original. Copies are geometric (not a live-linked pattern). Returns {originalId: [copyIds...]}. |
| cad_sketch_rectangleB | Add a constrained rectangle; returns {bottom,right,top,left} line ids. |
| cad_sketch_slotA | Add an obround (rounded slot) between two centre points, given width — a rectangle + a circle at each end; extruding unions them into a clean slot. Returns {sides, caps} ids. |
| cad_sketch_polylineA | Add a chain of lines through points. Auto coincident-joins them; closed=True closes the loop; auto_hv applies horizontal/vertical to axis-aligned segments; ground_first grounds the first point to the origin if it is at (0,0). Returns the line ids. |
| cad_sketch_constrainA | Add a geometric constraint. type one of: coincident, horizontal, vertical, parallel, perpendicular, tangent, equal, concentric, pierce, midpoint, symmetric, fix, ground_origin. 'a'/'b'(/'c' for symmetry line) are entity/point ids like 'ln1' or 'ln1.start'. ground_origin grounds point 'a' to the part-studio origin. |
| cad_sketch_dimensionA | Add a driving dimension. kind: length (line), radius/diameter (circle), distance (entity+entity2), angle (line+line, value in degrees). value is inches (number) or an expression/#variable (e.g. '#base_len', '60 mm'). |
| cad_sketch_closeA | Post the sketch as one feature; returns its featureId plus diagnostics (grounded, dimensions, wellFormed). Set require_well_formed=true to refuse (without posting) a sketch that is ungrounded or has no driving dimensions. |
| cad_set_variableA | Set a part-studio variable (assignVariable), update-or-create: re-setting the same name updates it in place instead of adding a duplicate. expression e.g. '2.4 in' or '#other*2'. |
| cad_extrudeC | Extrude a sketch region. operation: NEW/ADD/REMOVE/INTERSECT. depth is inches (number) or an expression/#variable. |
| cad_filletC | Fillet edges (deterministic ids from cad_find_edges). radius is inches (number) or an expression/#variable. |
| cad_find_edgesA | Find edges by geometry. kind: circular (radius+tol), concave/convex (inner/outer corners — concave is ideal for fillets), linear (axis X/Y/Z and/or through point), extreme (ALL edges furthest along axis — e.g. axis=Z max=false for the bottom edges, to fillet at once), on_plane (all edges lying in the plane axis=coordinate, e.g. axis=Z coordinate=0). Returns deterministic ids. |
| cad_find_facesC | Find faces by geometry. kind: planar_by_normal (normal=[x,y,z]), cylindrical (radius+tol), largest/smallest (by area — e.g. the big flat face to sketch on), extreme (the face furthest along axis — axis=Z max=true is the top face), adjacent_to_extreme (the faces bordering that extreme face), on_plane (the planar face lying in axis=coordinate, e.g. axis=Z coordinate=0). Returns deterministic ids. |
| cad_chamferB | Equal-distance chamfer on edges (deterministic ids from cad_find_edges). distance is inches (number) or an expression/#variable. |
| cad_holeA | Hole(s) at the given centers on a plane/face. diameter/depth accept numbers or #variables. plane is Front/Top/Right OR a face id (from cad_find_faces). style: 'simple' (default) | 'counterbore' (needs cboreDiameter + cboreDepth) | 'countersink' (needs csinkDiameter; csinkAngle default 90) — counterbore/countersink use the native Hole feature (proper callouts). Set up=true if the hole reports 'none intersected' (flips the drill direction). through=true for a through-all hole. |
| cad_revolveB | Revolve a sketch region about an axis edge. angle in degrees (number/#var); omit angle for a full 360 revolve. operation: NEW/ADD/REMOVE/INTERSECT. |
| cad_shellC | Hollow the solid by removing the given faces and leaving a wall. thickness is inches (number) or #variable; wall is inward. |
| cad_mirrorB | Mirror whole features across a plane. featureIds = the features to repeat (e.g. an extrude/hole featureId); planeId = Front/Top/Right or a face/plane id. operation matches the seed feature: NEW (default) for an additive boss, REMOVE when mirroring a hole/cut so the copy cuts. |
| cad_patternA | Pattern whole features. kind=linear needs directionId (an edge) + spacing (number/#var) + count; kind=circular needs axisId (an edge) + count, evenly spaced over angle (default 360). featureIds = the features to repeat. operation matches the seed feature: NEW (default) for an additive boss, REMOVE when patterning a hole/cut so each copy cuts (NEW leaks a stray body for a cut). |
| cad_measureB | Measure the part studio's solids in ONE FeatureScript eval: solid count, total volume (in^3), and the combined bounding box (min/max/size in inches). Quota-frugal. |
| cad_get_variablesA | List the cadkit variables in this part studio (name + authored expression, e.g. '#leg' = '2 in'). Reads the assignVariable features; one API call. |
| cad_delete_featureC | Delete a feature by featureId. |
| cad_suppressA | Suppress (suppressed=true) or unsuppress (false) a feature by featureId, leaving it in the tree. |
| cad_edit_featureB | Edit one stored parameter of an existing feature. Give parameterId (e.g. 'depth','radius','length') plus expression (number/#var for a quantity) OR value (enum/bool/string). Retarget a dimension to a #variable without rebuilding. |
| cad_exportC | Export the part studio to a file format. format: STL/STEP/PARASOLID/GLTF/OBJ (default STEP). Optional partId to export a single part. Returns the translation result. |
| cad_api_callsA | Report how many SUCCESSFUL Onshape API calls (2xx/3xx — the ones that count against the 2,500/user/yr budget) cadkit has made this session. Costs no API call. Check it before/after live work to keep quota spend visible. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/saltyeg/cadkit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server