CADPilot
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_documentA | Create a new FreeCAD document. |
| cadA | Run one CAD modeling operation; the unified mutation entry point. |
| execute_code_asyncA | Run Python on a background thread and return a task_id; poll the result with get_task_result. |
| get_task_resultA | Poll the status and captured output of one execute_code_async task. |
| execute_codeA | Run Python in FreeCAD's GUI thread (FreeCAD/App, FreeCADGui, Part pre-imported); print() output is returned. |
| get_viewA | Capture one document's view and return the saved PNG's path. |
| get_objectsA | List a document's objects, or read one object's full properties. |
| list_documentsB | List the open FreeCAD documents. |
| sessionA | A modeling session bound to a document; cad() mutations become transaction-backed steps you can roll back or redo. |
| step_planA | Submit a modeling plan to the document's step journal without executing it. |
| step_controlB | Review, run and undo the steps of a document's step journal. |
| get_addon_logA | Read the addon's ring-buffer debug log (newest last) while FreeCAD is wedged or a call misbehaves. |
| diagnoseA | Find out why CADPilot cannot reach FreeCAD; works while FreeCAD is down. |
| save_patternA | Store a reusable modeling pattern for later recall; call this after a non-trivial approach worked. |
| recall_patternsA | Search the pattern memory for workflows or code like your task; do this before trial and error when your knowledge may not cover it. |
| operation_helpA | Full parameter reference for a cad() operation or another topic. Call it with an operation name such as "sketch", or with no argument for the topic list. |
| inspect_freecadA | Inspect the live FreeCAD Python API; the last resort when your own knowledge and recall_patterns are insufficient. |
| measure_geometryA | Measure an object's Shape (the object must have one) to verify a design target numerically. |
| get_topologyA | List an object's topology for selection: faces by area, edges by length, vertices by distance, largest first. The names (Face1, Edge3, ...) feed fillet, boolean, sketch-on-face and friends. |
| check_interferenceA | Check two objects for interference: the distance between them and their common volume. Use it to verify clearance or detect collisions. |
| get_positioning_infoA | One face, edge or vertex in global coordinates: center, normal, axis, radius, endpoints; the Placement is already applied. Prefer it over get_topology for precise positioning before alignment or assembly. |
| align_shapesA | Move an object so the chosen element aligns with an element of the target. |
| get_anchorsA | List an object's assembly anchors in GLOBAL coordinates. Auto-derived ones (bbox_center/min/max, com, axis_mid/start/end for the dominant cylindrical face, face0..2_center for the largest planar faces) merge with set_anchors ones, and explicit wins. Call it before placing parts and plan mates from the returned numbers; never guess coordinates. |
| set_anchorsA | Define named anchors on an object. They persist with the document, move with its Placement, and the write becomes a modeling-session step. |
| assembleA | Snap parts together by matching named anchors in one transaction. For persistent joints use assembly_session. |
| verify_assemblyA | Audit a document's spatial health, read-only: floating parts, interferences, and anchor-pair distances. Hidden objects are skipped. Trust these numbers over a screenshot. |
| assembly_sessionA | Persistent-joint assembly on FreeCAD's Assembly workbench; prefer it over the one-shot assemble when joints must survive later moves. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| asset_creation_strategy |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| operation-index | Every cad() operation and tool topic served by operation_help. |
| pattern-memory | Stored reusable modeling patterns (id, name, description, tags). |
TDQS
Scored across 27 tools
Most tools have distinct roles: cad vs execute_code, execute_code vs execute_code_async, and assemble vs assembly_session are clearly differentiated by scope and persistence. Some overlap remains among session, step_plan, step_control, and rollback-related operations, but descriptions provide enough guidance to select correctly.
The surface is predominantly snake_case, but conventions are mixed: many tools use verb_noun (create_document, get_topology), while several use bare nouns or vague labels (session, cad, step_plan, assembly_session). It remains readable, but there is no single predictable pattern.
At 27 tools the set is heavy for the rubric's 3-15 sweet spot, with multiple clusters covering overlapping concerns (sessions/step journals, code execution, assembly workflows). Several capabilities could likely be consolidated, so the count exceeds what feels well-scoped.
Coverage is broad: document creation/listing, modeling via cad, code execution, step planning/control, diagnostics, measurement, topology, alignment, anchors, and both one-shot and persistent assembly. Minor lifecycle gaps exist (e.g., explicit document close/delete or general import/export), but agents can work around them.