CDT AutoCAD Provider
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CDT_AUTOCAD_BACKEND | No | Backend selection: ezdxf (default) or com | ezdxf |
| CDT_AUTOCAD_AUTH_TOKEN | Yes | Required for every HTTP launch (credentials must be supplied by deployment/runtime configuration) | |
| CDT_AUTOCAD_COM_PROGID | No | COM ProgID; default AutoCAD.Application | AutoCAD.Application |
| CDT_AUTOCAD_UNDO_DEPTH | No | ezdxf snapshot undo depth; default 10; 0 disables undo/redo | 10 |
| CDT_AUTOCAD_COM_TIMEOUT | No | Live COM deadline in seconds; default 60 | 60 |
| CDT_AUTOCAD_CALL_TIMEOUT | No | Ordinary headless deadline in seconds; default 120 | 120 |
| CDT_AUTOCAD_ALLOWED_PATHS | No | Path-list of allowed CAD/PDF roots; defaults to launch directory | launch directory |
| CDT_AUTOCAD_MAX_DXF_BYTES | No | Maximum input CAD file size at the provider boundary; default 50 MiB | 50 MiB |
| CDT_AUTOCAD_RENDER_TIMEOUT | No | Headless render/PDF deadline in seconds; default 300 | 300 |
| CDT_AUTOCAD_ALLOW_REMOTE_HTTP | No | Must be true in addition to auth for non-loopback bind | |
| CDT_AUTOCAD_COM_ATTACH_POLICY | No | COM attach policy: attach_only (default) or attach_or_start | attach_only |
| CDT_AUTOCAD_TRANSACTION_DEPTH | No | Maximum tracked transaction depth; default 8 | 8 |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| helpA | Return provider contract guidance, workflow rules, capability map, and refusal notes. Side-effects: None. Read-only guidance query. Disambiguation: Use help for human/agent operating guidance; use system_capabilities for machine-readable JSON capability flags. |
| system_statusA | Report provider runtime status, AutoCAD version/progid, transport, and generation metadata. Side-effects: None. Read-only status query. Disambiguation: Use system_status to verify CAD connection and process health; use system_capabilities to inspect supported operations. |
| system_capabilitiesA | Return the backend capability map used to plan calls before side effects; this tool has no CAD side effects. Side-effects: None. Read-only capability query. Disambiguation: Use system_capabilities before calling mutations to check supported CAD operations. |
| native_integrity_statusA | Inspect the same-session managed native bridge and the exact active AutoCAD document binding, including persistent document PID and semantic fingerprint. Side-effects: None. Read-only integrity query. Disambiguation: Use native_integrity_status to verify native C# bridge liveness and optimistic lock state; use system_status for overall provider status. |
| native_document_identity_initializeA | Explicitly initialize provider-owned persistent document lineage on the active empty drawing space, returning verified document PID and semantic fingerprint. Side-effects: Writes persistent dictionary lineage to drawing, advances document fingerprint. Disambiguation: Use once on an empty drawing to bootstrap native tracking; refuses non-empty drawings. |
| feature_executeA | Execute one complete generic feature as a feature-local logical transaction bound to caller-supplied document PID and predecessor fingerprint. Side-effects: Mutates active drawing state atomically; rolls back on failure. Disambiguation: Preferred route for multi-step feature creation; rolls back cleanly if any action fails. |
| batch_create_entitiesA | Create 1..10000 generic typed CAD primitives through the managed native bridge using caller-supplied document PID and predecessor fingerprint binding. Side-effects: Creates multiple entities in active space with idle yields. Disambiguation: Use for high-throughput batch primitive creation; for single entities use entity_create_*. |
| batch_insert_blocksA | Insert 1..10000 persistent-PID-bound block references through the managed native bridge only when caller document PID and predecessor fingerprint still match. Side-effects: Inserts block references across the drawing. Disambiguation: Use for bulk component placement; for single placement use block_insert. |
| batch_transform_entitiesA | Transform 1..10000 persistent semantic PIDs with typed translate, rotate-Z, or uniform scale after caller document PID and predecessor fingerprint binding. Side-effects: Mutates entity transforms in active drawing. Disambiguation: Use for bulk updates to existing entities; for single objects use object_move, object_rotate, or object_scale. |
| metadata_getB | Read one schema-agnostic metadata namespace from a persistent semantic PID through the native bridge. Side-effects: None. Read-only metadata query. Disambiguation: Use to retrieve engineering attributes attached to entities. |
| metadata_setA | Set one bounded schema-agnostic JSON metadata namespace only when caller document PID and predecessor fingerprint still match. Side-effects: Attaches XData/extension dictionary metadata to entity. Disambiguation: Use to store engineering properties (part numbers, materials) on entities. |
| metadata_queryA | Query a bounded schema-agnostic metadata namespace across the active native document, optionally matching one dotted JSON path to an exact JSON value. Side-effects: None. Read-only metadata query. Disambiguation: Use to locate entities by engineering metadata rather than visual layers. |
| document_newA | Create a new active CAD document in the current backend session; refuses unsafe transaction state. Side-effects: Changes active document session, creates unsaved drawing. Disambiguation: Use to start a clean drawing; use document_open to load existing DWG/DXF files. |
| document_openA | Open an existing allowed DWG/DXF path as the active document; changes session state. Side-effects: Changes active document session. Disambiguation: Use to load an existing drawing; use document_new to create a blank drawing. |
| document_infoA | Read verified metadata for the active document, including path, units, counts, current space, backend, and detected AutoCAD release when available. Side-effects: None. Read-only document query. Disambiguation: Primary document query tool for inspecting active file state. |
| document_configure_unitsA | Configure drawing insertion units, measurement system, linear format, and precision using a bounded typed schema. Side-effects: Updates drawing system variables (INSUNITS, MEASUREMENT, LUNITS, LUPREC). Disambiguation: Use during drawing setup to guarantee unit consistency (e.g. millimeters). |
| document_dependenciesA | Inspect external-reference dependencies for the active drawing and report contained, resolved, loaded, and completeness state. Side-effects: None. Read-only dependency audit. Disambiguation: Use to audit required file dependencies (XREFs, images) before archiving or sealing. |
| artifact_sealA | Save the active drawing, require a clean persisted state, copy it to a content-addressed accepted artifact, and write a SHA-256 manifest for stable handoff provenance. Side-effects: Saves document, writes artifact file and provenance manifest to disk. Disambiguation: Use at completion of milestone or deliverable handoff. |
| document_saveA | Save the currently bound document to its verified existing path, or delegate to SaveAs when path is supplied; success requires immediate persisted-clean readback. Side-effects: Persists unsaved drawing changes to disk and clears dirty state. Disambiguation: Use document_save to persist changes in-place; use document_save_as to write to a new destination path. |
| document_save_asA | Save the active document to an allowed DWG/DXF destination, verify the same bound path and immediate persisted-clean state, then update its document scope. Side-effects: Writes drawing to new file path, updates document binding. Disambiguation: Use to fork or save drawing under a new name; use document_save for in-place save. |
| document_export_pdfA | Export the active document or selected layout to an allowed PDF path; this writes an artifact and may require live AutoCAD plotting capability. Side-effects: Writes PDF artifact to disk. Disambiguation: Use for vector deliverable export; use view_screenshot for quick raster inspection. |
| drawing_auditA | Run the backend drawing-audit operation on the active document; live AutoCAD AUDIT may repair content and does not expose a machine-readable repair count. Side-effects: Runs AutoCAD AUDIT command, fixes corrupted entity pointers. Disambiguation: Use after heavy edits or imports; use drawing_purge to remove unused definitions. |
| drawing_purgeA | Purge unused drawing resources from the active document; this mutates document state and should be used only when removal is intended. Side-effects: Deletes unreferenced layers, blocks, and styles from document database. Disambiguation: Use to clean up drawing before export; destructive to unused resources. |
| object_listA | List objects from the backend's current supported space with optional type/layer filters and bounded pagination; returned IDs are backend object identifiers. Side-effects: None. Read-only entity query. Disambiguation: Use for sequential browsing of objects; use object_query when spatial filtering or bounding box measurements are needed. |
| object_getA | Read one object by backend object identifier and return normalized type, layer, color, visibility, geometry properties, and current-space metadata. Side-effects: None. Read-only entity query. Disambiguation: Use for single entity inspection; use object_measure for calculated metrics. |
| object_countA | Count objects in the backend's current supported space with optional type and layer filters; no document geometry is modified. Side-effects: None. Read-only entity count query. Disambiguation: Lightweight count check before fetching full object lists. |
| object_queryA | Query a bounded object set by type/layer and optional WCS bounding window, returning normalized objects plus measured bounds so source-registration workflows do not need side-channel DXF export. Side-effects: None. Read-only spatial query. Disambiguation: Preferred spatial query tool to find objects inside a bounding box. |
| object_set_propertiesA | Update selected properties of one object—layer, color, linetype, or visibility—while leaving unspecified properties unchanged. Side-effects: Modifies entity visual properties. Disambiguation: Use to style entities; for spatial changes use object_move, object_rotate, or object_scale. |
| object_deleteA | Delete one object by backend object identifier from the active document; this is destructive and timeout uncertainty must be reconciled before retry. Side-effects: Destructive deletion of entity from active drawing. Disambiguation: Destructive removal; use object_set_properties(visible=False) if temporary hiding is preferred. |
| object_moveA | Move one object by WCS delta dx/dy/dz using drawing units and return the normalized updated entity; this mutates geometry. Side-effects: Shifts entity coordinates in active drawing. Disambiguation: Use for translation; use object_rotate or object_scale for other transforms. |
| object_copyA | Copy one object by WCS delta dx/dy/dz using drawing units and return the new entity identifier without deleting the source. Side-effects: Creates a duplicate entity at the offset location. Disambiguation: Creates new object; use object_move to translate without duplication. |
| object_rotateA | Rotate one object around the supplied WCS base point by angle_deg in degrees; this mutates geometry in the active document. Side-effects: Mutates entity geometry in active drawing. Disambiguation: Rotates geometry counter-clockwise in degrees; use object_scale to resize or object_move to translate. |
| object_scaleA | Scale one object uniformly about the supplied WCS base point by a positive factor; this mutates geometry in the active document. Side-effects: Mutates entity scale in active drawing. Disambiguation: Modifies entity size; use object_move to reposition. |
| entity_create_lineA | Create a LINE from two WCS endpoints in drawing units, optionally on a layer/color, and return the new backend object identifier. Side-effects: Mutates active drawing state, advances document fingerprint. Disambiguation: Use entity_create_line for discrete linear segments in WCS; use entity_create_polyline for joined multi-segment paths. |
| entity_create_circleA | Create a CIRCLE at a WCS center with positive radius in drawing units, optionally on a layer/color, and return the new object identifier. Side-effects: Adds CIRCLE entity to active space. Disambiguation: Use for full 360-degree circles; for circular segments use entity_create_arc. |
| entity_create_arcA | Create an ARC at a WCS center with positive radius; start_angle and end_angle are degrees and the result is a new drawing object. Side-effects: Adds ARC entity to active space. Disambiguation: Use for circular arcs in degrees; for full circles use entity_create_circle. |
| entity_create_polylineA | Create a 2D lightweight polyline from WCS XY points in drawing units, optionally closed/layered/colored, and return the new object identifier. Side-effects: Adds LWPOLYLINE entity to active space. Disambiguation: Use for continuous multi-segment paths, contours, or closed boundaries. |
| entity_create_textA | Create TEXT at a WCS insertion point with drawing-unit height and rotation in degrees, optionally on a layer/color, and return its identifier. Side-effects: Adds TEXT entity to active space. Disambiguation: Use for labels, callouts, and notes. |
| hatch_createA | Create a hatch from a closed WCS XY boundary using pattern, scale, and angle in degrees; invalid or unsupported boundaries are refused. Side-effects: Adds HATCH entity to active space. Disambiguation: Use to fill closed contours; boundary must be closed and coplanar. |
| dimension_linearA | Create a linear dimension from WCS extension points and dimension-line point; rotation is degrees and placement uses drawing units. Side-effects: Adds linear DIMENSION entity. Disambiguation: Use for orthogonal (0 or 90 deg) dimensions; for angled geometry use dimension_aligned. |
| dimension_alignedA | Create an aligned dimension from WCS extension points and a WCS dimension-line point, using the active drawing's dimension style. Side-effects: Adds aligned DIMENSION entity. Disambiguation: Dimension line stays parallel to extension points regardless of angle. |
| dimension_angularA | Create a typed angular dimension from one vertex, two WCS ray points, and a text point; invalid collinear rays are rejected before mutation. Side-effects: Adds angular DIMENSION entity. Disambiguation: Use to dimension angles in degrees; rays must not be collinear. |
| dimension_radialA | Create a typed radial dimension from center/chord geometry and positive leader length using the active drawing dimension style. Side-effects: Adds radial DIMENSION entity. Disambiguation: Displays radius (R); for full circles prefer dimension_diametric. |
| dimension_diametricA | Create a typed diametric dimension from center/chord geometry and positive leader length using the active drawing dimension style. Side-effects: Adds diametric DIMENSION entity. Disambiguation: Displays diameter; for arc radii use dimension_radial. |
| dimension_ordinateA | Create an X- or Y-ordinate dimension from a WCS definition point and leader endpoint with strict axis validation. Side-effects: Adds ordinate DIMENSION entity. Disambiguation: Measures absolute distance from drawing origin or datum. |
| layer_listA | List drawing layers with normalized names, colors, linetypes, visibility/frozen/locked state, and whether each layer is current. Side-effects: None. Read-only layer query. Disambiguation: Use to inspect existing layers before placing entities. |
| layer_createA | Create a new layer with the requested AutoCAD color index; existing names are refused and the active layer is not changed. Side-effects: Adds layer record to drawing layer table. Disambiguation: Refuses if layer already exists; use layer_update_state to modify existing layers. |
| layer_set_currentA | Set an existing layer as the active document layer; this changes session drawing state but does not move existing objects between layers. Side-effects: Changes current working layer for subsequent entity creation. Disambiguation: Does not modify existing entities; only sets active context. |
| layer_update_stateA | Update allowlisted layer state such as on/off, frozen, locked, color, linetype, or lineweight; unsafe changes to the current layer are refused before mutation. Side-effects: Modifies layer table properties. Disambiguation: Use to change layer visibility or styling across all entities on that layer. |
| block_listA | List named block definitions, excluding anonymous blocks, with base point, entity count, attribute-definition count, and xref status. Side-effects: None. Read-only block definition query. Disambiguation: Use to discover available blocks before inserting. |
| block_createA | Create a named block definition by copying the specified existing objects around a WCS base point; source objects remain in their original space. Side-effects: Creates BLOCK definition; original objects remain in space. Disambiguation: Creates reusable definition; does not insert an instance. |
| block_insertA | Insert an existing named block at a WCS point with XY scale and rotation in degrees, optionally assigning the new reference to a layer. Side-effects: Adds INSERT entity to active space. Disambiguation: Inserts instance of existing block; use batch_insert_blocks for bulk placement. |
| xref_listA | List live AutoCAD external references with contained/resolved/loaded state while redacting paths that fall outside configured allowed roots. Side-effects: None. Read-only XREF query. Disambiguation: Use to inspect external DWG attachments. |
| xref_attachA | Attach or overlay one allowed DWG/DXF external reference with a bounded WCS transform and optional layer; source paths are canonicalized before AutoCAD side effects. Side-effects: Attaches external drawing file to active document. Disambiguation: Use to reference external drawings; use block_insert for internal blocks. |
| xref_reloadA | Reload one existing XREF only when its resolved source remains inside configured allowed roots. Side-effects: Updates referenced geometry from disk. Disambiguation: Use when an external file has been updated on disk. |
| xref_unloadA | Unload one existing XREF definition without deleting it, preserving a reversible reference state. Side-effects: Unloads XREF memory representation. Disambiguation: Reversible; use xref_detach for permanent removal. |
| xref_detachA | Detach one existing XREF definition from the active document; this is destructive to reference state. Side-effects: Destructive removal of XREF definition and references. Disambiguation: Destructive; removes dependency from drawing. |
| layout_listA | List document layouts and identify the current layout; this is read-only and does not change active model/paper space. Side-effects: None. Read-only layout query. Disambiguation: Use to discover printable sheets. |
| layout_createA | Create a new paper-space layout by name; duplicate or empty names are refused and existing layouts are preserved. Side-effects: Adds layout to drawing. Disambiguation: Creates blank sheet; viewports must be added separately with viewport_create. |
| layout_set_currentA | Switch the active document to an existing layout; this changes the operator's current model/paper-space context. Side-effects: Changes operator active space context. Disambiguation: Switch between Model and paper layouts. |
| viewport_createA | Create a paper-space viewport on a named layout with center/size in paper units, WCS view target, and positive custom scale. Side-effects: Adds VIEWPORT entity to active layout. Disambiguation: Requires active paper-space layout. |
| viewport_listA | List paper-space viewports for one or all layouts with handle, geometry, target, scale, lock state, and backend-created ownership hint. Side-effects: None. Read-only viewport query. Disambiguation: Inspect viewport handles, scales, and bounding boxes. |
| viewport_set_scaleA | Set a paper-space viewport's positive custom scale by handle and return the verified scale and derived view height. Side-effects: Updates viewport magnification and view height. Disambiguation: Adjusts architectural/engineering scale (e.g. 1:50, 1:100). |
| viewport_lockA | Set or clear DisplayLocked for a paper-space viewport by handle and return the verified lock state. Side-effects: Sets DisplayLocked property on viewport. Disambiguation: Lock viewports to prevent accidental zoom changes during drafting. |
| viewport_deleteA | Delete a paper-space viewport by handle; pre-existing or unknown viewports require force=true because ActiveX cannot reliably identify the main viewport. Side-effects: Destructive deletion of viewport from paper space. Disambiguation: Deletes viewport layout frame; pass force=True for unmanaged or preexisting viewports. |
| view_zoom_extentsA | Zoom the live AutoCAD view to drawing extents; this changes only the operator view and does not modify drawing geometry. Side-effects: Changes current display camera; drawing geometry unmodified. Disambiguation: Frames full drawing; use view_zoom_window to zoom to a specific area. |
| view_zoom_windowA | Zoom the live AutoCAD view to the supplied WCS XY window bounds; zero-area windows are refused and drawing geometry is unchanged. Side-effects: Changes display window; drawing geometry unmodified. Disambiguation: Zooms to specific bounding area. |
| view_screenshotA | Capture the live AutoCAD application window as PNG bytes; this is read-only and requires the live COM screenshot capability. Side-effects: None. Returns raster PNG bytes. Disambiguation: Quick visual verification; use document_export_pdf for vector deliverables. |
| view_set_directionA | Set a normalized 3D model-space view direction from a WCS vector and zoom to extents; this may alter persisted view state even though it does not modify CAD geometry. Side-effects: Rotates 3D viewpoint; drawing geometry unmodified. Disambiguation: Arbitrary 3D view angle; use view_set_preset for standard orthogonal/isometric views. |
| view_set_presetA | Apply an allowlisted orthographic or isometric 3D view preset such as se_isometric using typed direction vectors rather than free-text AutoCAD commands. Side-effects: Changes viewpoint camera to preset angle. Disambiguation: Fast standard view alignment. |
| view_set_visual_styleA | Apply an allowlisted model-space visual style such as shades_of_gray through a bounded internal AutoCAD command mapping; arbitrary command text is never accepted from callers. Side-effects: Modifies viewport rendering mode. Disambiguation: Changes shading and display mode. |
| object_measureA | Measure one object using the active backend's exact supported geometry API and return type-specific metrics plus WCS bounding box for deterministic verification. Side-effects: None. Read-only measurement query. Disambiguation: Returns deterministic type-specific mathematical metrics. |
| drawing_extentsA | Measure the current drawing-space WCS extents using the backend geometry engine without changing document objects. Side-effects: None. Read-only bounding box query. Disambiguation: Returns WCS coordinates [min_x, min_y, max_x, max_y]; does not change view. |
| object_intersectionsA | Compute exact supported intersections between two distinct objects with an explicit extension mode; unsupported solvers fail closed rather than approximate silently. Side-effects: None. Read-only intersection solver. Disambiguation: Computes geometric intersection points with extend options. |
| solid_create_primitiveA | Create a native ACIS BOX, CYLINDER, SPHERE, CONE, TORUS, or WEDGE from typed numeric parameters; the live AutoCAD backend is required and an optional output layer is applied explicitly. Side-effects: Adds 3DSOLID entity to drawing. Disambiguation: Primary tool for baseline solid shapes; use boolean operations to combine. |
| solid_extrudeA | Create an ACIS 3DSOLID by extruding a closed planar profile by non-zero height and bounded taper angle; temporary regions are cleaned deterministically. Side-effects: Creates 3DSOLID from profile; removes temp region. Disambiguation: Linear extrusion; use solid_revolve for rotational solids. |
| solid_sweepA | Create an ACIS 3DSOLID by sweeping a closed profile along a supported typed CAD curve path; unsupported path types are refused before opaque AutoCAD failures. Side-effects: Creates 3DSOLID along trajectory. Disambiguation: Path-driven extrusion for pipes, ducts, rails. |
| solid_revolveA | Create an ACIS 3DSOLID by revolving a closed planar profile around a non-degenerate WCS 3D axis by a non-zero angle within plus/minus 360 degrees. Side-effects: Creates 3DSOLID by rotation. Disambiguation: Use for axisymmetric shapes (shafts, pulleys). |
| solid_booleanA | Apply UNION, SUBTRACT, or INTERSECT between two distinct ACIS 3DSOLIDs and return post-operation volume, centroid, bounding box, and tool-consumption state. Side-effects: Combines or cuts solids; consumes tool body. Disambiguation: Constructive solid geometry operation. |
| solid_transformA | Apply one typed 3D move, rotate, uniform-scale, or mirror operation to an ACIS solid; free-form matrices and arbitrary commands are not accepted. Side-effects: Modifies solid position/orientation. Disambiguation: 3D spatial transformation for ACIS bodies. |
| solid_inspectA | Inspect an ACIS 3DSOLID by handle and return layer, visibility, volume, centroid, and WCS bounding box; face-level topology is reported as unsupported when it cannot be proven through ActiveX. Side-effects: None. Read-only solid inspection. Disambiguation: Physical and spatial verification of solids. |
| solid_exportA | Export selected native ACIS solids to a contained SAT artifact using AutoCAD's typed Export API and return SHA-256 provenance; unsupported STEP/STL requests are refused rather than emulated unsafely. Side-effects: Writes SAT file to disk. Disambiguation: CAD interchange for solid geometry. |
| transaction_beginA | Begin a backend-tracked transaction or undo scope on the bound document; nested depth is limited and document switching is blocked while active. Side-effects: Starts undo group; blocks document switching. Disambiguation: Group multiple modifications into a single undoable unit. |
| transaction_commitA | Commit the current backend-tracked transaction or undo scope for the bound document; refuses when no tracked transaction is active. Side-effects: Finalizes undo group. Disambiguation: Completes transaction started by transaction_begin. |
| transaction_rollbackA | Rollback the current backend-tracked transaction or undo scope for the bound document; this intentionally reverts mutations in that scope. Side-effects: Destructive reversal of mutations within active transaction. Disambiguation: Reverts state back to transaction_begin. |
| undoA | Undo the most recent available backend/document operation according to backend history semantics; refuses when no undoable state is available. Side-effects: Reverts last modification. Disambiguation: Single-step backward history navigation. |
| redoA | Redo the most recent reverted backend/document operation according to backend history semantics; refuses when no redoable state is available. Side-effects: Re-applies reverted modification. Disambiguation: Single-step forward history navigation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 87 tools
Most tools have distinct resource/action scopes, and descriptions include explicit cross-references for close neighbors such as document_save vs document_save_as and xref_unload vs xref_detach. Some overlap remains between generic object transforms, solid_transform, batch_transform_entities, and feature_execute vs transaction tools, so an agent still needs careful selection.
Tools are overwhelmingly snake_case with resource-first naming such as object_move, layer_create, and solid_boolean, which is predictable across major groups. Minor deviations like help/undo/redo and mixed action ordering in names such as native_integrity_status or drawing_extents keep it from perfect consistency.
87 tools is far above the recommended 3-15 range and crosses the 50+ extreme-mismatch threshold. Although the tools are largely non-redundant, the surface is too large for efficient agent selection and would benefit from consolidation into higher-level operations.
The surface covers document lifecycle, layers, blocks, xrefs, layouts, viewports, objects, entity creation, dimensions, solids, metadata, transactions, and undo/redo, so core AutoCAD workflows are well covered. Gaps remain for deleting layers/blocks/layouts, closing documents, block attributes, and several common entity types, but agents can mostly work around them.