catia-v5-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CATIA_MCP_HOME | No | State: log, lessons, lock, trace | %APPDATA%\catia-mcp |
| CATIA_MCP_LOCK | No | Cross-process lock so several agents queue instead of interleaving | 0 |
| CATIA_MCP_SAFETY | No | Safety tier: read, write or dangerous | dangerous |
| CATIA_MCP_OFFLINE | No | Never attach to or start CATIA (tests, CI, unlicensed machines) | |
| CATIA_MCP_PROFILE | No | Append to every call the split of its time (snapshot, execute, checks, naming) | 0 |
| CATIA_MCP_TOOLSETS | No | Advertised groups or presets: part, assembly, surface, review, or a list of groups | full |
| CATIA_MCP_WATCHDOG | No | Popup watchdog | 1 |
| CATIA_MCP_AUTOTRACE | No | CSV line + screenshot after every feature tool | 0 |
| CATIA_MCP_HANG_KILL | No | Set to 1 to also kill CATIA when a call blocks longer than CATIA_MCP_HANG_SECONDS | |
| CATIA_MCP_HANG_SECONDS | No | Log a call that blocks longer than this | 0 |
| CATIA_MCP_DESIGNATION_CACHE | No | Cache face/axis/edge designations per (file, modification time, point) | 1 |
| CATIA_MCP_CLEANUP_ON_FAILURE | No | Remove the objects a failed creation tool left in the tree | 1 |
| CATIA_MCP_DESIGNATION_CACHE_DISK | No | Keep that cache on disk between sessions | 1 |
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 |
|---|---|
| catia_connectA | Connect to CATIA V5. Attaches to a running instance or launches a new one. Must be called before any other CATIA tool. |
| catia_disconnectA | Disconnect from CATIA V5 (does not close CATIA). |
| catia_new_partA | Create a new empty Part document in CATIA V5. A Part is used for single-body 3D modeling (sketches + features). |
| catia_new_productA | Create a new empty Product (assembly) document in CATIA V5. A Product is used to assemble multiple Parts together. |
| catia_open_documentB | Open an existing CATIA document from a file path (.CATPart, .CATProduct, .CATDrawing). |
| catia_save_documentA | Save the active CATIA document. Optionally save to a new path (Save As). |
| catia_close_documentC | Close the active CATIA document. |
| catia_close_allA | Close EVERY open document without saving (fresh session). Use it before starting a new piece/assembly: stale documents from earlier work (duplicate parts, old copies) make Save As fail and confuse which file a product uses. Unsaved work is lost — save first. |
| catia_list_documentsA | List all open documents in CATIA V5 with their types and paths. |
| catia_get_active_document_infoB | Get detailed info about the active CATIA document: name, type, path, part bodies, features, etc. |
| catia_create_sketchA | Create a new 2D sketch (in the active body) and open it for editing. Support, in priority order: face_point (the planar face of the solid that passes through this 3D point, e.g. 'the top face of the boss'), else plane + offset (a named offset plane is inserted in the tree), else the origin plane. The sketch axes are aligned on the origin plane parallel to the support (xy: H=X,V=Y; yz: H=Y,V=Z; zx: H=Z,V=X) with its origin on the projection of (0,0,0), so 2D coordinates stay the ones read on the drawing's view. Close with catia_close_sketch. |
| catia_close_sketchA | Close the active sketch and return to Part Design. Must be called after finishing sketch geometry before applying 3D features. |
| catia_sketch_lineA | Draw a line in the active sketch from (x1, y1) to (x2, y2). Coordinates in mm. Set is_axis=true to make it the sketch's axis (Sketch.CenterLine), REQUIRED before catia_shaft/catia_groove: without it CATIA has no revolution axis and the feature fails at update (confirmed live 2026-09-28). The axis is excluded from the profile, so draw the closed profile entirely on one side of it. |
| catia_sketch_rectangleA | Draw a rectangle in the active sketch defined by two opposite corners. Creates 4 lines forming a closed profile. Coordinates in mm. |
| catia_sketch_centered_rectangleB | Draw a rectangle centered at (cx, cy) with given width and height. Coordinates and dimensions in mm. |
| catia_sketch_circleB | Draw a circle in the active sketch. Coordinates and radius in mm. |
| catia_sketch_profileA | Draw a connected chain of lines and arcs whose ends are SHARED sketch points (a real closed contour, unlike separate lines/arcs whose ends only nearly meet). The tool of choice for any non-trivial Pad/Pocket profile and for half-profiles of revolution (Shaft/Groove: add the axis with catia_sketch_line(is_axis=true) or use axis='h'/'v'). Arcs are given by center + end point (radius = distance center-start; the end must be at the same distance). |
| catia_sketch_two_circle_contourC | Closed outer contour of two circles joined by their external tangent lines (connecting rod, lever, tow bar, arm). Tangent points are computed exactly and all ends are shared points. |
| catia_sketch_arcA | Draw a circular arc defined by center, radius, and start/end angles (degrees). Angles are measured counter-clockwise from the positive X axis. |
| catia_sketch_splineB | Draw a spline through a list of control points. Each point is [x, y] in mm. |
| catia_sketch_pointA | Create a point in the active sketch. Coordinates in mm. |
| catia_sketch_constraintB | Add a dimensional constraint to the active sketch. Supported types: distance, radius, angle, coincidence, tangent, perpendicular, parallel, horizontal, vertical, fix. |
| catia_sketch_get_geometryA | List all geometry elements in the active sketch with their indices and types. |
| catia_padB | Create a Pad (extrusion) from the last sketch. Extrudes a 2D profile into a 3D solid along the normal to the sketch plane. |
| catia_pocketA | Create a Pocket (cut extrusion) from the last sketch. With direction='auto' (default) the tool checks that material was really removed and flips the direction if not (CATIA's default side is unreliable — proven live). Limits: fixed depth, 'up_to_next' (Jusqu'à la suivante) or 'up_to_last' (through). |
| catia_shaftA | Create a Shaft (revolution) from the last sketch. The revolution axis is the sketch axis: either a line drawn with catia_sketch_line(is_axis=true) (axis='sketch_line', default), or the sketch's own H or V axis (axis='h'/'v', e.g. 'the X axis available in the sketch' on an XY sketch). The closed profile must lie entirely on one side of the axis. |
| catia_grooveA | Create a Groove (revolution cut). Same axis rules as catia_shaft. Works as the FIRST feature of an empty body (it then holds the removed volume; assemble that body into the main one to cut it — the 'Machined' body pattern). |
| catia_filletA | Constant-radius edge fillet on one or more edges, as ONE fillet feature (like selecting several edges in the Congé d'arête dialog). Edges are designated by a 3D point lying on each of them (e.g. the midpoint of the edge read on the drawing); searched in the active body. Tangent edges are propagated automatically. Use catia_list_edges to see edge endpoints if unsure. |
| catia_chamferA | Chamfer one or more edges as ONE feature. Edges designated by a 3D point on each (same as catia_fillet). Mode length+angle (default 45°) or two lengths. |
| catia_holeA | Create a Hole (Trou) at a 3D point on a planar face, drilled along the face normal into the material. The face is the one through 'point' (active body first, then other bodies — a hole in a 'Machined' body on a face of the 'Rough' body works). Types: simple, tapered (conique, taper_angle), counterbored (lamé, head_diameter + head_depth), countersunk (fraisé, head_diameter + head_angle). Limit: fixed 'depth', or 'up_to_point' = a point inside the plane/face where the hole must stop (Jusqu'au plan). |
| catia_rect_patternB | Rectangular Pattern (Répétition rectangulaire) of a feature along two global axes. |
| catia_circ_patternA | Circular Pattern (Répétition circulaire) of a feature around an axis: the normal of an origin plane through the origin (axis_plane, e.g. 'zx' = around Y), or the axis of the cylindrical face through axis_face_point. count instances including the original; default spacing 360/count = complete crown. |
| catia_mirrorB | Symmetry of the whole active body's current solid about a plane (Symétrie): the result is the body plus its mirror image. Plane = an origin plane, or the planar face through plane_face_point. |
| catia_shellB | Shell (Coque): hollow the solid, keeping walls of 'thickness' mm inside (outer_thickness adds material outside). The faces through open_face_points are removed (openings). Verified live. |
| catia_draftC | Draft (Dépouille) of the faces through face_points by 'angle' degrees, about the neutral face through neutral_face_point (or an origin plane neutral_plane), pulling along 'direction'. Verified live. |
| catia_thicknessC | Thickness (Épaisseur): offset the faces through face_points by 'offset' mm (negative removes). Verified live. |
| catia_threadA | Thread / tap (Filetage / Taraudage, cosmetic as in the GUI) on a cylindrical face, starting from a planar limit face. Faces designated by a 3D point on each (lateral_face_point on the cylinder, limit_face_point on the end face where the thread starts). E.g. M100x4 over 47 mm: diameter=100, pitch=4, depth=47. Verified live. |
| catia_rename_featureA | Rename a feature or sketch in the active Part Body. Sets the .Name COM property directly (CATIA V5 exposes Feature.Name and Sketch.Name as read/write) — no macro/VBA bridge required. Use this right after creating a feature (catia_pad, catia_pocket, ...) instead of asking the user to rename it by hand in the GUI. |
| catia_delete_featureA | Delete a feature or sketch from the active Body (right-click > Delete in the GUI). Use this to clean up after a failed/wrong operation instead of closing and recreating the whole document — e.g. a Shaft/Groove that raised an UpdateObject error can still leave a broken feature behind in the tree; delete it, fix the sketch, and retry. |
| catia_list_featuresA | List all features in the active Part Body with their names and types. |
| catia_list_edgesA | List the edges of a body's current solid with length and start/middle/end points (mm) — pick an edge's middle point to pass to catia_fillet / catia_chamfer edge_points. |
| catia_list_facesA | List the faces of a body's current solid: type, area, centre of gravity; planar faces: plane, parallel origin plane (xy/yz/zx + offset) and an inside_point guaranteed ON the face (the COG of a holed face is in the hole) — use it as face_point; cylinders/cones: radius and axis — any point on them works as axis_point. |
| catia_new_bodyA | Insert a new Body in the active Part (Insertion > Corps in the French UI). This is the entry point of the multi-corps method: create one Body per functional zone of the piece, then combine them later with catia_boolean_operation. The new body is NOT made active automatically; call catia_activate_body next. |
| catia_rename_bodyB | Rename a Body (in Part.Bodies) via the .Name COM property. |
| catia_activate_bodyA | Set a Body as the active 'in work object' (Part.InWorkObject) — the 'Define In Work Object' right-click action from the CATIA GUI. After calling this, catia_create_sketch/catia_pad/catia_pocket/etc. create their features inside this body instead of MainBody. Call this right after catia_new_body to start working in it. |
| catia_list_bodiesA | List all Bodies in the active Part, their feature counts, and which one is currently active (InWorkObject). |
| catia_get_treeA | Specification tree of the active Part, as a reviewer sees it: every body (including those absorbed by Assemble/Add/Remove...), its sketches, features and planes, plus geometrical sets. Includes a naming AUDIT listing every element still carrying a default name (anything ending in '.N' like 'Extrusion.3'/'Pad.1'/'Esquisse.2', or 'Corps principal'/'PartBody'). Run it after each piece and fix every flagged name before saving. |
| catia_hide_show_bodyB | Show or hide a Body in the 3D view (does not delete it). |
| catia_boolean_operationA | Combine two Bodies with a boolean operation (right-click a body > x.Objet > ... in the GUI). This is how the multi-corps method produces the final solid: model each functional zone in its own Body, then combine them here.
|
| catia_gsd_create_geosetA | Create a new Geometrical Set (HybridBody) in the active Part and make it the active target for subsequent GSD elements. |
| catia_gsd_set_active_geosetA | Select which Geometrical Set receives subsequently created GSD elements. |
| catia_gsd_list_elementsB | List all geometrical sets with their wireframe/surface elements and sketches, plus sketches in solid bodies. Use this to find element names for other GSD tools. |
| catia_gsd_pointB | Create a 3D point at (x, y, z). Coordinates in mm. |
| catia_gsd_lineA | Create a 3D line between two points. Each point is an existing element name or [x, y, z] coordinates. |
| catia_gsd_plane_offsetB | Create a plane offset from a reference plane. Reference is 'xy', 'yz', 'zx', or the name of an existing plane element. |
| catia_gsd_plane_3pointsB | Create a plane through three points (element names or [x,y,z]). |
| catia_gsd_splineB | Create a 3D spline through a list of points. Each point is an existing element name or [x, y, z] coordinates in mm. |
| catia_gsd_circleB | Create a full 3D circle from a center point, a support plane, and a radius. Useful as a section for multi-sections surfaces. |
| catia_gsd_projectB | Project a curve/point onto a support surface or plane. |
| catia_gsd_intersectionB | Create the intersection of two elements (e.g. surface ∩ plane). |
| catia_gsd_multi_section_surfaceA | Create a Multi-sections Surface (loft) through 2+ section curves (sketches, circles, splines...), optionally following guide curves. Sections should be listed in order along the lofting direction. |
| catia_gsd_sweepC | Create a swept surface by sweeping a profile curve along a guide curve (explicit sweep). |
| catia_gsd_extrudeA | Extrude a profile (curve/sketch) into a surface along a direction vector. limit1/limit2 are the extents on each side (mm). |
| catia_gsd_revolveB | Revolve a profile curve around an axis line to create a surface of revolution. Angles in degrees. |
| catia_gsd_fillB | Create a Fill surface bounded by a closed contour of curves (one closed curve or several connected curves). |
| catia_gsd_blendC | Create a Blend surface connecting two curves. |
| catia_gsd_offset_surfaceB | Create a surface offset from an existing surface. |
| catia_gsd_joinC | Join (assemble) two or more curves or surfaces into one element. |
| catia_gsd_splitB | Split an element by a cutting element, keeping one side. Use orientation to flip which side is kept. |
| catia_gsd_trimB | Mutually trim two elements, keeping one side of each. Use reverse flags to flip which sides are kept. |
| catia_gsd_symmetryC | Mirror an element about a plane ('xy', 'yz', 'zx', or plane name). |
| catia_gsd_thick_surfaceA | Turn a surface into a SOLID by adding thickness (Part Design ThickSurface). The solid is created in the active body. |
| catia_gsd_close_surfaceA | Turn a closed (watertight) surface into a SOLID (Part Design CloseSurface). The solid is created in the active body. |
| catia_add_componentA | Insert existing CATPart/CATProduct file(s) into the active assembly (Insérer un composant existant), optionally inside a sub-assembly. Returns the new instance name(s), to use in constraints. |
| catia_add_new_partA | Create a new empty Part inside the assembly (or a sub-assembly), with its part number. It must be modelled and then saved (catia_save_all) before faces can be designated for constraints. |
| catia_add_sub_assemblyA | Create a new sub-assembly (Product) inside the assembly: the way to structure a big assembly (e.g. Wheel / Shaft sub-assemblies). |
| catia_duplicate_componentA | Insert N more instances of an existing component (same reference, like 'Définir une multi-instance'), each shifted by 'step' mm from the previous one. Constrain them afterwards. |
| catia_prepare_geometryA | Resolve ALL the geometry designations an assembly will need in ONE pass, before adding constraints. Designating a face/axis/edge inside a part re-opens that part in CATIA (a window opens, is searched and closes again, the screen reloads), which is the slowest thing an assembly does; done per constraint it costs ~1 s each and flickers the screen. Here every part is opened ONCE and all its points are searched together; the results are cached, so the constraints that follow are instant. Give one item per (component, element) you will use in constraints. Already-cached items are skipped. A wrong point is reported here, with the distance of the closest element, before any constraint exists. Safe to call repeatedly (idempotent). |
| catia_fix_constraintB | Fix a component in space (Fixer). The first/reference component of an assembly must be fixed. |
| catia_coincidence_constraintB | Coincidence (Coïncidence) between two elements of two components: axis/axis (use axis_point on both), plane/plane, face/face, point/axis... |
| catia_contact_constraintC | Surface contact (Contact) between two faces of two components (type verified: catCstTypeSurfContact = 20). |
| catia_offset_constraintB | Offset (Décalage) between two planar faces/planes: signed distance in mm (0 = touching). |
| catia_angle_constraintC | Angle between two planes/faces/axes of two components, in degrees. |
| catia_update_assemblyB | Update the assembly (Mise à jour): solves the constraints and moves the components. |
| catia_move_componentB | Translate/rotate a component (before constraining it, to pre-place it). |
| catia_list_componentsA | Product tree: every component (recursively), its part number, file and position (origin + axes). With no argument: the whole tree as a JSON list (unchanged). On a big assembly do NOT list everything: pass |
| catia_list_constraintsA | Every constraint of the root assembly with its type and status (OK / broken...), plus a naming audit. |
| catia_clash_analysisA | Interference check of the whole assembly (Analyse > Interférence, DMU Space Analysis): lists every CLASH (two components interpenetrate; 'at' = a point of the interference, assembly coordinates) and counts the CONTACTS. A correct assembly has 0 clash (except intended press fits / cosmetic threads). The analysis object is removed afterwards so the product tree stays clean. |
| catia_clean_displayA | Presentation view before screenshots: hide every origin/offset plane, sketch and axis system of every part, and the assembly constraint symbols (green markers). Display only: nothing is saved (call it AFTER saving). |
| catia_save_allA | Save the whole assembly (Gestion des enregistrements): every new or modified part/sub-product is saved into 'folder' as .CATPart/.CATProduct, then the root product as . Documents that already have a file and are unmodified are left untouched. |
| catia_measure_distanceB | Measure the minimum distance between two geometry elements. Returns distance in mm. |
| catia_get_inertiaA | Get inertia properties of the active part: volume, surface area, center of gravity, mass (if density is defined), moments of inertia. |
| catia_get_bounding_boxA | Exact bounding box (mm) of a body's solid, curved shapes included: x/y/z [min, max] and size. Use it to check a piece against its drawing. |
| catia_get_parametersB | List all user-defined and computed parameters of the active part. Includes dimensions, formulas, and design tables. |
| catia_set_parameterB | Set the value of a named parameter in the active part. Useful for parametric design modifications. |
| catia_update_partA | Force update/rebuild of the active part. Recalculates all features. |
| catia_exportA | Export the active document to a file. Supported formats: STEP (.stp), IGES (.igs), STL (.stl), 3DXML (.3dxml), VRML (.wrl), PDF (2D drawings). |
| catia_screenshotA | Capture CATIA. mode='window' (default): the whole CATIA window, specification tree included, as PNG — rendered by CATIA itself, so it is correct even when CATIA is behind other windows (what report screenshots need). mode='viewer': only the 3D view through CATIA's CaptureToFile (JPG/BMP/TIFF; a .png path becomes .jpg). |
| catia_set_viewA | Set the 3D view orientation (Z up, as CATIA's standard views) and reframe. front = looking along +Y; isometric = from (+X+Y+Z) corner; isometric_back/left/right = the three other upper corners. |
| catia_fit_allA | Fit all geometry in the current 3D view (zoom to fit). |
| drawing_extract_geometryA | Extract EXACT geometry from a vector PDF drawing: numbered circles, arcs and line segments with centre, radius R and diameter D in part mm. Dimension values are drawn as vector strokes, not text: read them by eye on drawing_render, then CONFIRM with this measured geometry (they must agree; when they do not, the measurement wins). Workflow: (1) drawing_render the whole page to find the views and title block scale; (2) call this on one view's region WITHOUT origin to find the centre/axis (each entity lists its paper position); (3) call again with origin and scale to get part coordinates to feed the sketch tools. Beware: R vs D, rounded dimensions (a drawn tangent may differ from the written value by a few hundredths), wrong title block scale. |
| drawing_renderA | Render a page or region of a PDF drawing to a PNG and return its path (view it with an image reader). Use it to locate views and to READ the dimension values by eye: they are vectorised, so text search cannot find them. Zoom with region + higher dpi (300-400) for small annotations. With grid (part mm) and origin, a graduated grid in PART millimetres is drawn to help read positions. |
| drawing_overlayA | Draw a CATIA sketch (in part mm) on top of the PDF drawing and return the PNG path: the coloured sketch must follow the black drawing lines everywhere. Do this for every non-trivial profile BEFORE pad/shaft, then LOOK at the image. |
| catia_drawing_createA | Create a new CATDrawing with an ISO 5457 sheet (A0-A4), a main scale (ISO 5455), the projection method (first_angle = Europe/ISO default, third_angle = USA) and the 0.7 mm drawing frame (20 mm left margin, 10 mm elsewhere). Then call catia_drawing_add_view for each view, catia_drawing_title_block, catia_drawing_export_pdf and catia_drawing_check.
sheet='auto' and/or scale='auto' need |
| catia_drawing_add_viewA | Add one view of the 3D source to the drawing and place it. kind: front (the base view, create it first), top/bottom/left/right/rear (orthographic projections of the front view: 'right' = seen from the right of the front view), isometric, section, detail. Placement (position='auto', default): ISO 5456-2 arrangement from the plan of catia_drawing_create (first angle: top view BELOW the front, right view on its LEFT; third angle mirrored), else beside the parent in a free spot. Give position [x, y] (sheet mm, origin bottom-left, view CENTRE) to override. A view that would overlap another one or leave the frame is refused and removed. View coordinates (u, w), used by section/detail/dimensions, are millimetres at MODEL scale with the origin on the projection of the model origin; u to the right, w up. With view_from='-Y': front u=X, w=Z; top u=X, w=Y; right u=Y, w=Z; left u=-Y, w=Z; bottom u=X, w=-Y; rear u=-X, w=Z. section: give parent, cut_direction ('vertical' = cutting line x=cut_at, 'horizontal' = line y=cut_at, in the parent's (u,w)) or cutting_line [[u1,w1],[u2,w2]]; the tool draws the cutting-plane arrows, labels (A-A) and hatching; flip with side=1 if the wrong half is shown. detail: parent, centre [u,w], radius (mm, model scale), scale (default '5:1'). Returns JSON: view name, kind, scale, centre, paper box, origin, and the axes needed by catia_drawing_check. |
| catia_drawing_generate_dimensionsA | Run CATIA's 'Generate Dimensions' on the active sheet: creates the dimensions driven by the 3D constraints of the model (pad lengths, hole diameters...). It does NOT dimension everything (overall sizes and hole positions are usually missing) and CATIA draws them green: complete the drawing with catia_drawing_add_dimension. Returns JSON with every dimension per view (type, value, mm). |
| catia_drawing_add_dimensionA | Add ONE dimension to a view, in view coordinates (u, w) (mm, model scale, see catia_drawing_add_view). type='linear': |
| catia_drawing_add_centerlinesA | Draw centre lines (thin chain lines, ISO 128-2 type 04.1) crossing at each given circle centre of a view, extending extension_mm (paper) beyond the circle. centres: [{u, w, radius}] in view coordinates. Returns the number of lines created. |
| catia_drawing_title_blockA | Draw the ISO 7200:2004 title block (180 mm wide table in the bottom right corner of the frame), the scale, the general tolerance note (ISO 2768) and the projection symbol of ISO 5456-2. fields: legal_owner, identification_number, date_of_issue, sheet_number, title, approval_person, creator, document_type are MANDATORY (missing ones are refused); optional: supplementary_title, revision_index, number_of_sheets, responsible_department, technical_reference, document_status, classification, paper_size. general_tolerance: f, m (default), c or v. Nothing is invented: only what you pass is written. Returns JSON with the block rectangle, rows written and ISO warnings (e.g. too long a title). |
| catia_drawing_export_pdfB | Export the drawing to a vector PDF (DrawingDocument.ExportData). Checks the file exists and, when PyMuPDF is installed, that the PDF page equals the sheet (mm). Returns JSON {path, bytes, page_mm, sheet_mm, page_matches_sheet}. Overwrites an existing file. |
| catia_drawing_closeA | Close ONE drawing (the named one, else the drawing this session last used) without touching any other document; the 3D source stays open. save=false (default) discards changes, save=true saves it first (the drawing must already have a file name: use catia_save_document with a path beforehand). |
| catia_drawing_infoA | Read the drawing back: sheet format, scale, projection, every view (kind, scale, centre, paper box, origin) and every dimension (type, value). Read-only. |
| catia_drawing_checkA | CLOSED-LOOP CHECK: export the drawing to PDF, read it back and compare it with the 3D model. For every orthographic view created by add_view: circles (diameters within 0.02 mm, centres within 0.05 mm, hole pitches), the four sides of the projected outline, the view size on paper vs the 3D bounding box x scale. The 3D side is read from |
| catia_describe_modelA | Reverse-engineer the ACTIVE document without modifying it. CATPart: bodies, features in tree order, sketches with exact geometry (mm, sketch axes) and constraints, parameters, plane frames, volume, bounding box, inertia, plus the source of a replayable PartScript that rebuilds the part in a NEW document. A feature the reader does not understand is listed under 'opaque' (name, type, what is known, why) and the spec says replay.complete=false: nothing is guessed. CATProduct: components, poses, constraints and statuses. Limits: sketch constraints are described, not replayed; patterns, shell, draft, thickness and surfaces are opaque; edges are reproduced by a point on them. Units mm and degrees. Set output_dir to write _spec.json and _replay.py. |
| catia_audit_modelA | Audit the ACTIVE document's tree WITHOUT modifying it. Returns issues ranked error > warning > info, each with a code, where, message and the exact tool calls that fix it ('fix', a list of {tool, args}) or a 'manual' instruction when no tool can. Part: default names, bodies without result or empty, hidden or unmerged bodies, features not up to date or deactivated, sketches unused, open profiles, unsatisfied constraints, order (dress-up before material). Assembly: constraints not OK, default names, components not constrained outside the fixed one, broken links. 'not_checked' says what the API cannot tell (degrees of freedom of a sketch). |
| catia_measure_modelA | Measure each body of the ACTIVE part: volume (mm3), area, centre of gravity, exact bounding box (mm) and inertia (principal moments and matrix at the COG, kg.mm2, and mass at the part density). Read-only. Use it to compare an original with its replay. |
| catia_batchA | Run MANY catia_* tool calls in ONE round trip (10-100x fewer LLM turns). Every step is validated against the tool schemas BEFORE anything runs (unknown tool, misspelt/missing argument, wrong type, bad enum value): a typo in step 31 is reported up front and CATIA is left untouched. Steps then run in order and stop at the first failure (stop_on_error). Use dry_run=true to only validate. Compact per-step report with timings. Not nestable. Prefer it for any sequence you already know (sketch -> pad -> rename -> check), and keep separate calls for steps that depend on a value you must read first (e.g. face points from catia_list_faces). |
| catia_get_safety_stateA | Current safety tier of this session: read (inspect only), write (model and save) or dangerous (may also delete features and close documents), and what each tier allows. |
| catia_set_safetyA | LOWER the safety tier of this session (dangerous -> write -> read), for instance before a review or when handing the session to a less trusted step. It can never be raised from a tool call: raising it needs a human to restart the server with CATIA_MCP_SAFETY. |
| catia_lessonsA | Search the knowledge base of proven CATIA V5 automation pitfalls and rules (each one verified live). Call it BEFORE a risky operation (topology selection, boolean ops, assembly constraints, measurements) or right after an unexplained COM error. With no query it returns the critical rules. |
| catia_add_lessonA | Record a NEW pitfall or rule you discovered so that every future session (yours and other agents') is warned automatically. Use it as soon as you find something that failed, surprised you, or needed a workaround. Give the exact observed error text in error_patterns (regex) so the hint is attached to that error next time, and state how it was proven. Stored in the user's lessons file (not in the package); duplicates are refused. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| model_part_from_drawing | Model one part from a PDF drawing: exact geometry, multi-body, verified. |
| assemble_product | Assemble existing parts with constraints that hold, poses verified. |
| large_assembly | Strategy for an assembly of hundreds or thousands of parts (vehicle, aircraft). |
| audit_model | Audit the active model: tree quality, naming, volume/bbox sanity. |
| reverse_engineer_part | EXPERIMENTAL: describe an existing part and rebuild or document it cleanly. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Golden rules | Condensed rules every session must follow (same text as the server instructions). |
| All verified lessons | Every proven CATIA V5 automation pitfall with cause, rule and proof. |
| Part modelling guide | Multi-body method, naming, feature order, checks, geometry designation by points. |
| Assembly guide | Poses, constraints that hold, pose verification, clash analysis, large assemblies. |
| Reading vector drawings | Exact geometry from PDF drawings, overlays, pitfalls (scale, diameter vs radius). |
TDQS
Scored across 121 tools
Most tools target clearly distinct CAD operations (sketching vs pad vs fillet vs assembly constraint), and descriptions provide strong context. However, with 121 tools there are some overlaps, such as multiple measurement and document-close/save variants, that could cause confusion.
The overwhelming majority of tools use a consistent snake_case verb_noun pattern with a catia_ prefix. The only deviation is the drawing helper tools (drawing_render, drawing_extract_geometry, drawing_overlay) which lack the catia_ prefix used by the rest of the drawing family.
121 tools far exceeds the 50+ threshold for an extreme mismatch, making the set difficult to navigate even for a complex CAD automation domain. Each tool may earn its place individually, but the sheer count creates a heavy cognitive load.
The surface covers the full CATIA V5 lifecycle: connection, document management, sketching, part design features, generative surface design, assembly, drawing, analysis, export, safety, and a lessons knowledge base. No obvious operations are missing for the stated purpose.