Skip to main content
Glama
beiming183-cloud

AutoCAD MCP Server - Codex Edition

AutoCAD-MCP

Reliable AutoCAD automation for AI agents, with checked geometry, native 3D, and delivery evidence.

Tests Version Python License

English | 简体中文

Native AutoCAD 3D rotary actuator generated and rendered by AutoCAD-MCP

AutoCAD-MCP connects Codex, Claude Code, Claude Desktop, Cursor, and any standard MCP client to full AutoCAD, AutoCAD LT, or a headless DXF backend. It is built for agents that must prove what they drew, not merely report that a script ran.

Why AutoCAD-MCP

  • Checked writes: strict inputs, handle readback, requested/actual diffs, and document revisions. Native-worker transactions are atomic; compatibility COM/LISP paths report compensation limits instead of promising rollback they cannot prove.

  • Useful CAD coverage: structured 2D drawing, layers, dimensions, topology DRC, native AutoCAD solids and booleans, bounded product features, motion screening, and fixed-camera review views.

  • Delivery evidence: DWG/DXF/PDF/PNG outputs, exported-DXF re-audit, paper and scale verification, geometry digests, manifests, and SHA-256 hashes.

  • Desktop friendly: AutoCAD stays taskbar-visible but minimized by default, drawing does not steal focus, and preview/PDF viewers are not launched.

  • Client neutral: one stdio server for MCP clients; no Codex-only or Claude-only protocol.

  • Honest limits: unsupported edge selection, shelling, exact continuous motion, and material rendering are reported explicitly instead of being simulated.

Related MCP server: DWG MCP Server

Try It Without AutoCAD

The headless demo creates a mechanical DXF, runs semantic DRC, renders a deterministic PNG, and prints the evidence:

git clone https://github.com/beiming183-cloud/AutoCAD-MCP.git
cd AutoCAD-MCP
uv sync
uv run python examples/headless_demo.py

Expected result: ok: true, six entities, and drc_status: PASS. Outputs are written to demo-output/ unless AUTOCAD_MCP_OUTPUT_ROOT is set.

Native AutoCAD Showcase

With a healthy, manually opened AutoCAD session, reproduce the promotional rotary actuator as editable native solids:

uv run python examples/generate_actuator_promo.py --record --pause 1.0

Recording mode activates AutoCAD once, creates a blank document, frames the planned model before the first write, pauses one second after each completed semantic step, and leaves the final document open. It deliberately skips PNG/PDF rendering and final rotation so no viewer or camera motion interrupts capture.

Choose a Backend

Backend

Runtime

Requires AutoCAD?

Validation feedback

Native worker

Windows Python

Full AutoCAD 2025/2026

Database transactions, revision events, feature IDs, native 2D/3D

File IPC compatibility

Windows Python

Full AutoCAD or AutoCAD LT 2024+

COM/LISP coverage, topology audit, PDF and PNG

ezdxf

Any platform

No (headless)

Structured audit + deterministic PNG

The server exposes 12 consolidated tools (drawing, entity, solid, product, layer, block, annotation, pid, transaction, view, job, system) over standard MCP stdio.

This edition is based on puran-water/autocad-mcp and retains its MIT license. Version 4.0 adds a native transactional worker, client-independent named-pipe protocol, external desktop supervisor, durable idempotency journal, and database-owned document revisions while retaining COM/LISP compatibility.

For startup failures caused by a damaged Python COM environment, an orphaned acad.exe, or Activity Insights permissions, use the Windows AutoCAD recovery runbook. system(operation="preflight") is read-only and does not start AutoCAD.

Prerequisites (File IPC backend)

  • Windows 10/11 (the File IPC backend uses Win32 APIs for focus-free window messaging)

  • Full AutoCAD or AutoCAD LT 2024+ on Windows - AutoLISP support was added to LT in 2024; full AutoCAD also uses the native COM path.

  • Python 3.10+ (Windows native — not WSL Python)

  • uv package manager (install guide)

The ezdxf headless backend works on any platform (Linux, macOS, WSL) for offline DXF generation without AutoCAD installed.

Quick Start

1. Clone and install

git clone https://github.com/beiming183-cloud/AutoCAD-MCP.git
cd AutoCAD-MCP
uv sync

2. Install the signed native worker (full AutoCAD 2025/2026)

The preferred industrial path is the .NET 8 worker under native/. It executes mutations under DocumentLock plus a native database transaction and publishes a current-user named pipe. Build, Authenticode-sign, verify, and install it with:

$env:AUTOCAD_MCP_AUTOCAD_DIR = "D:\cad\AutoCAD 2025"
.\native\scripts\build-plugin.ps1 `
  -AutoCADDir $env:AUTOCAD_MCP_AUTOCAD_DIR `
  -DotNet "D:\Codex\Tools\dotnet-sdk\dotnet.exe" `
  -CertificateThumbprint "YOUR_CODE_SIGNING_CERT_THUMBPRINT" `
  -Install

Installation refuses an unsigned DLL. Keep AutoCAD SECURELOAD enabled. The bundle loads at AutoCAD startup and writes its worker descriptor to %LOCALAPPDATA%\AutoCAD-MCP\workers.

For a stable desktop session, start the user-owned supervisor from an ordinary PowerShell window, not from an MCP client's sandbox:

$env:AUTOCAD_MCP_OUTPUT_ROOT = "D:\Codex\AutoCAD-MCP"
autocad-mcp-supervisor run `
  --acad-exe "D:\cad\AutoCAD 2025\acad.exe" `
  --window-mode quiet_minimized `
  --output-root "D:\Codex\AutoCAD-MCP"

The supervisor leaves AutoCAD visible in the taskbar but minimized, never opens PDF/PNG viewers, and leaves AutoCAD running when supervision stops. Use autocad-mcp-supervisor status from another terminal to inspect PID, HWND, heartbeat, fatal-window state, and native-worker discovery.

3. Load the LISP dispatcher for LT or compatibility fallback

Open AutoCAD or AutoCAD LT and load mcp_dispatch.lsp using APPLOAD:

  1. Type APPLOAD in the AutoCAD command line

  2. Browse to <repo>/lisp-code/mcp_dispatch.lsp

  3. Click Load

  4. You should see: === MCP Dispatch v4.0.0 loaded === and Ready for commands via (c:mcp-dispatch)

Tip: Add the file to your AutoCAD Startup Suite (in the APPLOAD dialog) so it loads automatically with every drawing.

4. Configure your MCP client

Add to your MCP client configuration (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "autocad-mcp": {
      "command": "C:\\path\\to\\autocad-mcp\\.venv\\Scripts\\python.exe",
      "args": ["-m", "autocad_mcp"],
      "env": {
        "AUTOCAD_MCP_BACKEND": "file_ipc",
        "AUTOCAD_MCP_LISP_PATH": "C:\\path\\to\\autocad-mcp\\lisp-code\\mcp_dispatch.lsp"
      }
    }
  }
}

The same server command can be used in Claude Code project-level .mcp.json:

{
  "mcpServers": {
    "autocad": {
      "type": "stdio",
      "command": "C:\\path\\to\\autocad-mcp\\.venv\\Scripts\\python.exe",
      "args": ["-m", "autocad_mcp"],
      "env": {
        "PYTHONPATH": "C:\\path\\to\\autocad-mcp\\src",
        "AUTOCAD_MCP_BACKEND": "file_ipc",
        "AUTOCAD_MCP_NATIVE_PLUGIN": "auto",
        "AUTOCAD_MCP_AUTOSTART": "false",
        "AUTOCAD_MCP_VISIBLE": "true",
         "AUTOCAD_MCP_WINDOW_MODE": "preserve",
        "AUTOCAD_MCP_ACTIVATE_ON_DRAW": "false",
        "AUTOCAD_MCP_OUTPUT_ROOT": "D:/Codex/AutoCAD-MCP",
        "AUTOCAD_MCP_ACTIVITY_INSIGHTS_PATH": "D:/Codex/AutoCAD-MCP/activity-insights"
      }
    }
  }
}

Key points:

  • The command must point to the Windows Python inside the project venv (not WSL python).

  • AUTOCAD_MCP_BACKEND can be auto (tries File IPC, then falls back to ezdxf), file_ipc (recommended for engineering drawings), or ezdxf (headless only).

  • Full AutoCAD prefers the native worker. COM/LISP remains a compatibility path; AutoCAD LT uses LISP/window messaging.

  • AUTOCAD_MCP_NATIVE_PLUGIN=required fails closed when the signed native worker is absent; auto falls back to COM/LISP.

  • Prefer the desktop supervisor over MCP-owned startup. AUTOCAD_MCP_AUTOSTART=true remains available for compatibility.

  • When attaching to a CAD instance opened by a user, startup/profile/window policy is read-only: it does not rewrite Activity Insights variables or change the window unless AUTOCAD_MCP_APPLY_ACTIVITY_POLICY=true or AUTOCAD_MCP_APPLY_WINDOW_POLICY_TO_EXISTING=true is explicitly set.

Running from WSL

If your MCP client runs in WSL (e.g. Claude Code), launch the server through cmd.exe so it runs as a native Windows process:

{
  "mcpServers": {
    "autocad-mcp": {
      "type": "stdio",
      "command": "cmd.exe",
      "args": ["/d", "/s", "/c", "cd /d C:\\path\\to\\autocad-mcp && .venv\\Scripts\\python.exe -m autocad_mcp"],
      "env": { "AUTOCAD_MCP_BACKEND": "auto" }
    }
  }
}

5. Verify

From your MCP client, call:

system(operation="status")

You should see backend: "file_ipc" if AutoCAD is running, or backend: "ezdxf" for headless mode.

Optional industrial design Skill

skills/industrial-product-design is a client-neutral upstream workflow for briefs, concept gates, product architecture, configurations, motion, camera/render evidence, and honest CAD capability checks. Install or reference that folder in any SKILL.md-compatible client, then use mechanical-drafting-gbt downstream for GB/T manufacturing definition and release.

skills/industrial-product-design-gbt is the comprehensive variant. It adds research-source authority, human-factors evidence, form and surface review, backend routing, local reference-library indexing, and deterministic checks for document identity, 2D/3D interfaces, motion states, render viewsets, and revision-bound handoff manifests. Its personal library manifest is intentionally ignored; generate one locally from the included portable schema.

Tools

drawing — File/drawing management

Operation

Description

File IPC

ezdxf

create

Create and activate a new document, optionally at a managed path

Yes

Yes

context

Return active document ID, path, and monotonic revision

Yes

Yes

activate

Activate a doc_id at an exact expected_revision, then verify active-document readback

Yes

Limited

open

Open an existing drawing

Yes

Yes (DXF)

info

Get entity count and layers

Yes

Yes

save

Save current drawing (to path if given)

Yes

Yes

save_as_dxf

Export as DXF without switching the active DWG

Yes

Yes

plot_pdf

Plot to PDF

Yes

No

render_preview

True PNG with DPI, force-overwrite, dimensions, and SHA-256

Yes

Yes

workspace

Create and report the managed output workspace

Yes

Yes

deliver

Validated DWG/DXF/PDF package with manifest and checksums

Yes

No

audit

Compact structured entity audit with change tracking

Yes

Yes

audit_geometry

Geometry/topology DRC including gaps, dangling endpoints, crossings, tangency, equal radii, and projection checks

Yes

Yes

audit_dxf

Parse an existing DXF into normalized JSON

Yes

Yes

setup_mechanical

Configure mm units, dimensions, sheet metadata, and seven GB/T layers

Yes

Yes

purge

Purge unused objects

Yes

Yes

get_variables

Get system variables by name

Yes

Yes

set_variables

Set a bounded whitelist of units/dimension/linetype variables

Yes

Yes

undo

Undo last operation

Yes

No

redo

Redo last undone operation

Yes

No

entity — Entity CRUD + modification

Create: create_line, create_circle, create_polyline, create_rectangle, create_arc, create_tangent_arc, create_ellipse, create_mtext, create_hatch, create_batch

create_batch accepts up to 500 structured entities in one MCP call. It supports line, circle, polyline, rectangle, arc, ellipse, text, mtext, and hatch records. A hatch can use entity_id: "$last" to reference the preceding entity. The native worker and headless backend provide atomic batches; the compatibility COM/LISP path uses an AutoCAD undo group and returns rollback evidence, but callers must treat an unverified compensation as a hard stop. This is the preferred high-throughput path; it does not enable arbitrary AutoLISP.

For ANSI31, pass angle: 0 to retain the pattern's native 45-degree section angle. scale and hatch layer are also explicit parameters. Every HATCH is read back by handle and checked for type, layer, pattern, angle, and scale; a mismatch is erased and returned as E_POSTCONDITION_MISMATCH.

Read: list, count, get

Modify: copy, move, rotate, scale, mirror, offset*, array, fillet*, chamfer*, trim*, extend*, break*, join*, constrain*, erase

* These native editing operations are File IPC only. trim and extend require explicit entity IDs and pick points so AutoCAD never guesses which side to keep.

constrain reports whether the native command was accepted, but currently returns verified: false because the portable ActiveX API does not expose AutoCAD's associative constraint collection. Treat the constraint as review-required rather than release evidence.

solid - Native AutoCAD 3D solids

create_box, create_cylinder, extrude, revolve, sweep, boolean

The solid tool is available on full AutoCAD through the native ActiveX object model. Box placement uses its center; cylinder placement uses the center of its base. Extrude, revolve, and sweep consume a closed profile handle; boolean accepts union, intersection, or subtract. AutoCAD LT and the ezdxf backend report these operations as unsupported. Edge fillets/chamfers and projected drawing views are not advertised yet because their prompt-driven workflows have not reached the same deterministic standard.

system.status includes an industrial_capabilities matrix. It explicitly separates verified features from unavailable stable edge/face selection, shelling, parametric assemblies, motion sweeps, surface analysis, and offscreen material rendering. Clients must not infer those features from basic solid support.

product - Industrial product features and evidence

create_feature supports rounded_box, recessed_panel, module_reservation, port_cutout_usb_a, port_cutout_usb_c, rotary_layer, annular_gap, and detent_ring_placeholder. The rounded box is a real analytic AutoCAD B-rep assembled from intersecting boxes, edge cylinders, and spherical corners; its radius can be queried from the registered feature definition.

USB cutouts are deliberately gated. A production aperture requires module_status: supplier_controlled|measured, matching authority: supplier_drawing|physical_measurement, do_not_dimension_apertures: false, explicit dimensions, and a target solid. Unverified concepts must use module_reservation, which records that the envelope is not manufacturing authority.

Motion operations are set_motion, interference_sample, and clearance_sweep. They report broad-phase AABB or sampled rotated-AABB evidence and always state exact_brep_interference: false; release work still requires an exact native continuous sweep.

render_view accepts front, right, top, bottom, iso, rotated_iso, section, and exploded. Section/exploded views require caller-prepared geometry. The result includes fixed camera data, PNG hash, content bounds, non-background ratio, clipping, framing status, and optional pixel difference. Pass an allow-listed visual_style to request an AutoCAD display style; the response separately reports style readback, restoration verification, and material_render_verified (currently false for the compatibility plot path). This remains a native AutoCAD plot, not an offscreen material renderer.

set_review and review_summary keep appearance_review, ergonomics_review, adapter_clearance_review, cable_management_review, stability_review, and mains_rotation_safety_review separate from geometry/STEP validity. Each is PASS, FAIL, or NOT_EVALUATED; PASS requires evidence.

General fillet_edges and chamfer_edges reject volatile native edge indices with E_STABLE_FEATURE_SELECTION_UNAVAILABLE. Use analytic features now. A future OpenCascade/FreeCAD plugin may provide selector-based general edge operations without weakening the AutoCAD document and transaction contract.

On the COM/LISP compatibility backend, destructive product replacements (recessed_panel, port_cutout_usb_a, and port_cutout_usb_c) fail closed with E_COMPAT_FEATURE_TRANSACTION_UNAVAILABLE because ActiveX cannot prove an atomic replacement. Use the signed native worker; the unsafe compatibility fallback requires an explicit AUTOCAD_MCP_ALLOW_UNVERIFIED_COMPAT_CUTOUTS=true and is unsuitable for release work.

The 3D protocol borrows proven patterns from build123d, build123d-mcp, FreeCAD MCP, and Open CASCADE fillet/chamfer APIs: explicit parameter sources, semantic/property selectors, measure-render-validate loops, and honest kernel capability boundaries.

layer — Layer management

list, create, set_current, set_properties, freeze, thaw, lock, unlock

block — Block operations

Operation

File IPC

ezdxf

list

Yes

Yes

insert

Yes

Yes

insert_with_attributes

Yes

Yes

get_attributes

Yes

Yes

update_attribute

Yes

Yes

define

No

Yes

annotation — Text, dimensions, leaders

create_text, create_dimension_linear, create_dimension_aligned, create_dimension_angular, create_dimension_radius, create_leader

pid — P&ID operations (CTO symbol library)

setup_layers, insert_symbol, list_symbols, draw_process_line, connect_equipment, add_flow_arrow, add_equipment_tag, add_line_number, insert_valve, insert_instrument, insert_pump, insert_tank

P&ID symbol insertion requires the CAD Tools Online (CTO) P&ID Symbol Library installed at C:\PIDv4-CTO\. The ezdxf backend has built-in CTO library support. For the File IPC backend, some P&ID operations require additional LISP helpers — see the P&ID section in the wiki for setup details.

view — Viewport and diagnostic capture

Operation

Description

zoom_extents

Zoom to show all entities

zoom_window

Zoom to a specified window

set_visual_style

Apply an allowlisted built-in style (Conceptual, Realistic, Shaded, etc.) with optional verified entity colors; requires doc_id and expected_revision

get_screenshot

Diagnostic-only capture; returns a managed PNG path, dimensions, and SHA-256 by default. Raw image content requires data.include_image=true plus AUTOCAD_MCP_ALLOW_INLINE_IMAGES=true.

Normal validation is data-first: use drawing.audit after edits and drawing.render_preview at milestones. get_screenshot remains available only for diagnosing AutoCAD UI state. The MCP serializes AutoCAD calls and caps response/call bursts so a parallel screenshot loop cannot exhaust the client context.

transaction - Document-scoped transactions

context, create, execute, plus compatibility begin, commit, rollback

For the native path, call context, then send one strict execute request with a stable idempotency_key. The plugin validates the active document and revision, opens one database transaction, rejects missing layers before creation, and commits all operations or none. A document mismatch returns E_DOCUMENT_ID_MISMATCH; stale revision data returns E_DOCUMENT_REVISION_MISMATCH. Successful idempotent requests can be replayed; failed requests are not cached and remain retryable.

{
  "operation": "execute",
  "doc_id": "acad-...",
  "expected_revision": 12,
  "idempotency_key": "gearbox-stage-01",
  "data": {
    "session_id": "native-...",
    "operations": [
      {
        "type": "solid.box",
        "resultId": "body",
        "featureId": "gearbox-body",
        "center": [0, 0, 20],
        "length": 120,
        "width": 80,
        "height": 40,
        "layer": "0"
      },
      {
        "type": "solid.cylinder",
        "resultId": "bore",
        "baseCenter": [0, 0, -1],
        "radius": 12,
        "height": 42,
        "layer": "0"
      },
      {
        "type": "solid.boolean",
        "resultId": "finished",
        "primaryRef": "body",
        "toolRef": "bore",
        "operation": "subtract",
        "layer": "0"
      }
    ]
  }
}

The older begin/commit/rollback operations remain for AutoCAD LT and compatibility workflows. They use undo marks and do not replace the native database transaction when the plugin is available.

Layer names are preconditions. Creating geometry on an absent layer returns E_LAYER_NOT_FOUND before mutation instead of silently falling back to layer 0.

Data-first validation

edit entities -> drawing.audit -> native render_preview -> audit_dxf for final delivery

drawing.audit returns entity counts by type and layer, drawing bounds, units, a handle-independent geometry digest, geometry DRC, an endpoint topology graph, limited normalized entity geometry, and added/modified/removed handles since the previous audit. In addition to degenerate geometry, rules can check connection gaps, dangling endpoints, interior crossings, explicit tangent pairs, equal-radius groups, and cross-view projection alignment. limit is clamped to 500 so large drawings do not flood model context.

drawing.render_preview always returns a real PNG. Full AutoCAD writes it through the native PNG plot device without capturing the desktop or opening a viewer. The result includes DPI, pixel size, orientation correction, SHA-256, and the source geometry digest. Add visual_style to request a controlled display style; the response reports actual style restoration and whether material rendering was independently verified. drawing.plot_pdf remains the release-quality vector output.

Industrial delivery jobs

drawing.deliver turns the active drawing into a traceable job rather than treating a successful script as a finished drawing. It creates an isolated folder under jobs, records the request under specs, audits the source, applies geometry gates, saves DWG/DXF/PDF, audits the exported DXF, compares type/layer counts, bounds, units and geometry digests, writes reports/validation.json, and records artifact sizes and SHA-256 hashes.

{
  "operation": "deliver",
  "data": {
    "name": "gearbox-output-shaft",
    "metadata": {"drawing_number": "GB-OS-001", "revision": "A"},
    "plot": {
      "paper": "A3",
      "orientation": "landscape",
      "plot_style": "monochrome.ctb",
      "scale_mode": "fixed",
      "scale": "1:1",
      "center": true
    },
    "validation": {
      "min_entities": 20,
      "required_layers": ["OUTLINE", "CENTER", "DIM"],
      "required_types": ["LINE", "CIRCLE", "DIMENSION"],
      "require_geometry_clean": true,
      "geometry_tolerance": 0.000001
    }
  }
}

The job contains specs/request.json, manifest.json, editable DWG and DXF files, a native PDF, audits/drawing-audit.json, and reports/validation.json. Failed validation or export leaves a failed manifest with step-level diagnostics.

Industrial automation roadmap

  • v3.6 reliability (compatibility foundation): self-healing startup, dispatcher version handshake, machine-readable MCP failures, controlled variables, geometry DRC, DXF units/digests, and enforced plot configuration; live AutoCAD profile repairs remain opt-in.

  • v3.7 geometry control (compatibility foundation): topology DRC, bounded batches, safe trim/extend/break/join/constraints, native 3D solids, non-switching DXF export, and verified file/framing checks; COM rollback remains explicitly bounded.

  • v3.8 entity truth (implemented with gates): immutable entity contracts, semantic topology, no-focus desktop behavior, and postcondition readback; unresolved context failures are terminal and require reconciliation.

  • v3.9 document/output reliability (implemented with gates): document identity, transactions, crash classification, offline audits, atomic outputs, plot verification, and viewer suppression; exact guarantees require the native worker.

  • v3.10 product 3D foundation (concept/engineering candidate): analytic rounded products, controlled module envelopes, broad-phase motion screening, fixed-camera evidence, semantic DRC, and independent product reviews; exact assemblies, material rendering, and continuous sweeps remain unsupported.

  • v4.0 hybrid CAD: FreeCAD CLI/MCP as the parameterized 3D and STEP executor, AutoCAD as the visible DWG/2D drafting and release executor, with shared specs and acceptance reports.

system — Server management

status, ensure_ready, health, get_backend, runtime, init, recover, execute_lisp

status is observational and does not start AutoCAD. ensure_ready performs the full discovery/start/document/dispatcher/version/ping sequence and reports the detected AutoCAD product without assuming AutoCAD LT.

Tool failures use MCP isError=true and a stable structure containing code, message, recoverable, and recommended_action.

recover cancels stale AutoCAD command-line state and removes abandoned IPC files without calling the potentially blocked dispatcher. Arbitrary AutoLISP remains disabled unless AUTOCAD_MCP_ALLOW_ARBITRARY_LISP=true is explicitly configured.

execute_lisp is an explicit opt-in escape hatch for trusted local use. Normal automation should use the structured tools and create_batch.

Architecture

MCP Client (Codex / Claude Code / Claude Desktop / Cursor)
    │  stdio (JSON-RPC)
    ▼
Python MCP Server (autocad_mcp)
    │
    ├── File IPC Backend ──► C:/temp/*.json ──► mcp_dispatch.lsp
    │   ├── Full AutoCAD: COM ActiveDocument.SendCommand
    │   └── AutoCAD LT: PostMessageW(WM_CHAR) to MDIClient
    │
    └── ezdxf Backend ──► in-memory DXF (headless, no AutoCAD needed)

The File IPC backend sends (c:mcp-dispatch) to the active drawing. Full AutoCAD uses COM ActiveDocument.SendCommand; AutoCAD LT falls back to PostMessageW(WM_CHAR). Both paths avoid taking over normal mouse input.

Environment Variables

Variable

Default

Description

AUTOCAD_MCP_BACKEND

auto

Backend selection: auto, file_ipc, ezdxf

AUTOCAD_MCP_NATIVE_PLUGIN

auto

Native worker policy: auto, required, or off

AUTOCAD_MCP_NATIVE_WORKER_DIR

%LOCALAPPDATA%/AutoCAD-MCP/workers

Native worker descriptor directory

AUTOCAD_MCP_PLUGIN_TOKEN

empty

Optional shared token required by the current-user native pipe

AUTOCAD_MCP_SUPERVISOR_DIR

%LOCALAPPDATA%/AutoCAD-MCP/supervisor

Desktop supervisor state, stop request, and UTF-8 BOM log directory

AUTOCAD_MCP_IPC_DIR

C:/temp

Directory for IPC command/result JSON files (must match on both Python and LISP sides)

AUTOCAD_MCP_IPC_TIMEOUT

10.0

IPC command timeout in seconds (1-300)

AUTOCAD_MCP_DOCUMENT_TIMEOUT

30.0

Seconds to wait for COM registration and an active document after the window appears (5-120)

AUTOCAD_MCP_ONLY_TEXT

true

Disable automatic screenshot attachments; direct diagnostic capture remains available

AUTOCAD_MCP_ALLOW_INLINE_IMAGES

false

Explicitly allow raw screenshot image content in MCP responses; leave disabled to return path/hash metadata

AUTOCAD_MCP_MAX_INLINE_IMAGE_BYTES

262144

Maximum PNG bytes allowed in an explicitly requested inline image

AUTOCAD_MCP_MAX_RESPONSE_BYTES

524288

Hard response ceiling; oversized lists are replaced by a hash/count evidence envelope

AUTOCAD_MCP_TRANSPORT_WINDOW_BUDGET (alias AUTOCAD_MCP_MAX_CALLS_PER_WINDOW)

120

Sliding-window MCP admission budget; prefer the namespaced variable, while AutoCAD calls remain serialized

AUTOCAD_MCP_TRANSPORT_WINDOW_SECONDS (alias AUTOCAD_MCP_CALL_WINDOW_SECONDS)

60

Sliding-window duration for the MCP admission budget

AUTOCAD_MCP_TRANSPORT_MAX_QUEUE

32

Maximum queued calls waiting for the single AutoCAD lane

AUTOCAD_MCP_TRANSPORT_QUEUE_TIMEOUT (alias AUTOCAD_MCP_REQUEST_QUEUE_TIMEOUT)

30

Maximum time a concurrent request waits for the single AutoCAD queue

AUTOCAD_MCP_AUTOSTART

false

Start AutoCAD automatically when File IPC is requested and no AutoCAD window exists

AUTOCAD_MCP_ACAD_PROFILE

empty

Optional existing profile name or exported .arg path passed through /p; never changes the user's current profile

AUTOCAD_MCP_PROFILE_MODE

existing

existing/explicit; isolated or required fails closed unless an explicit profile/ARG is supplied

AUTOCAD_MCP_ACAD_EXTRA_ARGS

empty

Additional shell-free AutoCAD startup switches, parsed as an argument list

AUTOCAD_MCP_STARTUP_STABILITY_READS

3

Consecutive identical non-fatal HWND observations required before readiness (1-10)

AUTOCAD_MCP_STARTUP_SETTLE

0.75

Seconds to recheck the fatal-dialog state after the stable HWND gate

AUTOCAD_MCP_AUTOSTART_FAILURE_COOLDOWN

900

Seconds to refuse an identical failed autostart signature, preventing retry loops

AUTOCAD_MCP_AUTOSTART_FORCE_RETRY

false

One-shot escape hatch after the profile or installation has been repaired

AUTOCAD_MCP_START_MINIMIZED

true

Launch with a minimize hint so AutoCAD does not jump in front of other work

AUTOCAD_MCP_CER_FILE

empty

Optional explicit Autodesk CER rawdata-t1.pb/rawdata-t2.pb path for offline crash evidence

AUTOCAD_MCP_VISIBLE

true

Keep AutoCAD as a visible desktop application rather than a hidden automation session

AUTOCAD_MCP_WINDOW_MODE

quiet_minimized

preserve for an existing user window, quiet_minimized (backend-owned taskbar window), visible, or explicit recording; legacy aliases remain accepted

AUTOCAD_MCP_ACTIVATE_ON_DRAW

false

Allow per-command activation only when AUTOCAD_MCP_WINDOW_MODE=foreground

AUTOCAD_MCP_APPLY_ACTIVITY_POLICY

false

Permit Activity Insights variable writes after a backend-owned launch

AUTOCAD_MCP_APPLY_WINDOW_POLICY_TO_EXISTING

false

Permit implicit visibility/minimize changes to a user-owned AutoCAD window

AUTOCAD_MCP_COM_MUTEX_TIMEOUT

5

Seconds to wait for another MCP process to release the per-user COM mutex

AUTOCAD_MCP_AUTO_FIT

true

Automatically center and fit drawing extents after geometry changes

AUTOCAD_MCP_OUTPUT_ROOT

~/Documents/AutoCAD-MCP

Unified output root; this workstation should set D:/Codex/AutoCAD-MCP

AUTOCAD_MCP_LOG_PATH

<output-root>/logs/autocad-mcp.log

BOM-prefixed UTF-8 diagnostic log readable by Windows PowerShell

AUTOCAD_MCP_ALLOW_EXTERNAL_OUTPUTS

false

Permit writes outside the managed output root; disabled by default

AUTOCAD_MCP_ACAD_EXE

empty

Full path to acad.exe used by automatic startup

AUTOCAD_MCP_ACAD_SCRIPT

empty

Optional AutoCAD .scr file passed with /b during startup

AUTOCAD_MCP_ACAD_STARTUP_TIMEOUT

75

Seconds to wait for the AutoCAD main window, clamped to 5-180

AUTOCAD_MCP_LISP_PATH

empty

Dispatcher path loaded for the current AutoCAD session only

AUTOCAD_MCP_CAMPAIGN_OPERATION_TIMEOUT

120

Hard timeout for one live-CAD regression operation (5-300)

AUTOCAD_MCP_CAMPAIGN_TIMEOUT

900

Hard timeout for the complete live-CAD regression campaign (30-3600)

The managed regression runners are deliberately fail-closed. A timed-out COM call quarantines its STA worker (E_COM_STA_TIMEOUT) and refuses follow-up requests until the MCP worker is restarted; a timed-out pytest slice attempts to terminate its complete process tree and records any cleanup limitation. This prevents a stalled AutoCAD/COM process from holding an MCP client turn indefinitely.

mcp_dispatch.lsp reads AUTOCAD_MCP_IPC_DIR from the AutoCAD process environment and falls back to C:/temp.

drawing.audit_dxf is an offline operation and does not start AutoCAD, require an active document, or ping the dispatcher. drawing.plot_pdf defaults to A3, landscape, and FIT; the result includes requested settings, actual document/output paths, PDF mediabox dimensions, detected paper/orientation, and field-level differences.

Development

uv sync
uv run pytest tests/ -v

AutoCAD LT AutoLISP Compatibility

AutoLISP was added to AutoCAD LT in the 2024 release (Windows only). AutoCAD LT for Mac does not support AutoLISP.

Supported (LT 2024+ Windows)

Not Supported

.lsp / .fas / .vlx / .dcl

VLIDE (Visual LISP IDE)

All vl-* utility functions

vlax-* (ActiveX/COM)

File I/O (open, read-line, etc.)

Express Tools

Entity access (entget, entmod, etc.)

3D operations

Selection sets

AutoLISP on Mac

The mcp_dispatch.lsp dispatcher is fully compatible with LT 2024+.

What's New in v4.0

  • Native transaction worker - current-user named pipes connect standard MCP clients to a .NET worker using DocumentLock, database transactions, database-event revisions, and stable XData feature IDs.

  • Fail-closed document fencing - native writes require session, document ID, expected revision, and a stable idempotency key; active-document mismatch or stale revision prevents all mutation.

  • Durable replay safety - Python journals accepted/committed/failed jobs; the plugin caches only committed successes and hashes semantic requests without transport IDs or credentials.

  • Desktop supervisor - a user-owned process manages PID/HWND/profile health while keeping AutoCAD taskbar-visible, minimized, focus-safe, and independent of Codex, Claude Code, or another client's sandbox.

  • Signed bundle flow - source builds can Authenticode-sign, verify, and install the AutoCAD bundle without disabling SECURELOAD.

  • Managed test cleanup - CAD artifacts are deleted only inside a confirmed job directory while hashes, manifests, audits, reports, and logs remain.

v3.10

  • Analytic native rounded products - rounded_box creates real radius geometry without relying on volatile native edge indices.

  • Controlled module authority - concept, supplier-controlled, and measured modules carry explicit dimension authority; unverified USB apertures are rejected.

  • Motion evidence - rotation axes, limits, static AABB screening, and sampled rotated-AABB clearance sweeps are machine-readable and explicitly non-exact.

  • Fixed-camera review packets - standard views return camera parameters, PNG hashes, content bounds, margins, clipping, framing status, and optional pixel differences.

  • Semantic DRC - component, design role, view, line class, intentional open end, permitted crossing, and source authority keep overlays out of geometry failures.

  • Independent product review - appearance, ergonomics, adapter clearance, cable management, stability, and mains/rotation safety cannot inherit a PASS from valid geometry.

  • Honest edge capability - general 3D fillet/chamfer calls return E_STABLE_FEATURE_SELECTION_UNAVAILABLE; analytic features remain measurable and safe.

v3.9

  • Document identity and optimistic revisions - create/open/activate/context responses carry document ID, requested/active paths, and monotonic revision; all modifications reject wrong or stale contexts.

  • Public transactions - explicit begin/commit/rollback joins atomic batch rollback and missing-layer preconditions.

  • Crash and system error classification - fatal AutoCAD state, COM failures, file paths, system calls, errno/winerror, and recovery actions use structured error envelopes.

  • Read-only delivery copies - DWG packaging uses Wblock and verifies the active source document and path did not change.

  • Offline DXF audits - DXF parsing does not start AutoCAD or require a dispatcher or active document.

  • Atomic outputs - PDF and PNG publish through validated temporary files; locked destinations return E_OUTPUT_LOCKED without half-written artifacts.

  • Verified paper and orientation - A3 landscape FIT is the PDF default, mediabox settings are read back, and device-rotated PNG output is normalized.

  • No viewer focus theft - a per-output window guard hides and closes only the exact temporary PDF opened by an external viewer, restores the last non-AutoCAD user window, and records suppression evidence.

  • Cold-start stability gate - AutoCAD must return the same active document through consecutive COM reads; dispatcher loading is retried within a fixed bound before readiness is reported.

  • Honest industrial capability reporting - status exposes verified features and names advanced 3D, assembly, analysis, selection, and rendering functions that remain unsupported.

v3.8

  • Immutable entity contracts - strict requests are read back by handle with requested, actual, and diff; mismatches are deleted and fail the atomic batch.

  • Semantic topology - component ownership, line class, and intentional open ends feed stricter dangling-endpoint and crossing audits.

  • No-focus desktop behavior - AutoCAD remains user-visible in the taskbar but minimized by default, drawing calls do not steal focus, and PDF/PNG viewers are never launched.

v3.7

  • Topology-aware DRC - audits expose endpoint connectivity and configurable checks for near misses, dangling endpoints, non-endpoint crossings, tangency, equal-radius groups, and projection alignment.

  • Atomic batches - create_batch opens an AutoCAD undo transaction by default and rolls back the whole batch on failure.

  • Controlled 2D repair - explicit trim, extend, break, join, geometric constraints, and mathematically solved tangent arcs replace blind coordinate patching.

  • Native 3D solids - full AutoCAD supports boxes, cylinders, extrusions, revolutions, sweeps, and boolean operations through a dedicated safe tool.

  • True PNG previews - native AutoCAD plotting is rasterized to a force-overwritable white-background PNG with DPI, dimensions, hashes, and no desktop capture.

  • Non-switching DXF export - save_as_dxf uses AutoCAD's export API and verifies that the active DWG remains unchanged.

  • Richer entity data - arc endpoints, polyline bulges, MText width/attachment, block attributes, bounds, length, area, and object ownership are returned when available.

v3.6

  • Self-healing readiness - system.ensure_ready discovers or starts AutoCAD, ensures an active document, loads the configured or bundled dispatcher, verifies its version, and pings IPC.

  • Structured MCP errors - failures are marked isError=true and use stable error codes such as E_DISPATCHER_NOT_LOADED, E_IPC_TIMEOUT, and E_OUTPUT_PATH_REJECTED.

  • Safe variable updates - drawing.set_variables exposes a validated whitelist; setup_mechanical now applies millimeter and dimension defaults in addition to layers.

  • Geometry DRC - source and exported DXF audits detect zero/short segments, duplicate vertices/endpoints/entities, and polyline self-intersections.

  • Stronger DXF evidence - audits report $INSUNITS and a handle-independent geometry digest; delivery compares types, layers, bounds, units, digest, and DRC.

  • Enforced plotting - plot_pdf and deliver apply and record paper, orientation, plot style, fixed/fit scale, centering, device, media, and paper units.

v3.5

  • Unified managed workspace - output paths default to the portable ~/Documents/AutoCAD-MCP; each client can override it with AUTOCAD_MCP_OUTPUT_ROOT (for example D:/CAD-Automation).

  • Output containment - save/export paths outside the managed root are redirected unless external outputs are explicitly enabled.

  • Validated delivery jobs - drawing.deliver produces DWG, DXF, PDF, request/audit JSON, a step manifest, validation results, file sizes, and SHA-256 checksums.

  • Quality gates - delivery can require minimum/maximum entity counts plus required layers and entity types, and rejects DXF exports whose entity count differs from the source.

v3.4

  • Prompt-free layer management - common center and hidden linetypes are created or loaded without opening an interactive linetype prompt.

  • Mechanical drafting profile - drawing.setup_mechanical creates OUTLINE, THIN, CENTER, HIDDEN, HATCH, DIM, and TEXT with monochrome GB/T lineweights.

  • Structured batch creation - up to 500 whitelisted entities can be submitted in one MCP call without enabling arbitrary AutoLISP.

  • Portable Chinese text - File IPC converts non-ASCII annotation text to AutoCAD \\U+XXXX escapes.

  • Reliable hatching - pattern angle and scale are explicit; ANSI31 defaults to an added angle of zero.

  • Out-of-band recovery - system.recover cancels stuck commands and cleans IPC state without waiting for the dispatcher.

  • Native save path - full AutoCAD saves DWG/DXF through COM first and uses the AutoLISP command path only as a fallback.

  • Automation-session discovery - hidden AutoCAD instances can be found through their COM window handle when no visible main window is available.

  • TEXT audit fix - final DXF audits read TEXT and MTEXT heights through their correct entity-specific attributes.

  • Live visible drawing - AutoCAD is restored before drawing by default; optional foreground activation and view.show_window make automation observable in real time.

  • Startup busy retry - transient COM call rejection during AutoCAD startup is retried briefly before the Win32 fallback is used.

  • Idle-state synchronization - each IPC request waits for AutoCAD to finish unwinding the previous dispatcher before sending the next command.

  • Verified entity creation - rectangles, hatches, and dimensions report an error when no new CAD entity was actually created.

  • Native COM dimensions - full AutoCAD creates linear, aligned, angular, and radial dimensions directly through ActiveX, with AutoLISP retained as the LT fallback.

  • Automatic centered view - geometry changes automatically fit all extents into the viewport; structured batches fit once after completion, and view.fit_drawing can trigger it manually.

v3.3

  • Structured drawing audits - compact counts, layers, bounds, normalized geometry, and change fingerprints.

  • Native preview rendering - full AutoCAD plots PDF through PlotToFile; ezdxf writes deterministic PNG.

  • DXF mathematical audit - parses existing DXF files into bounded normalized JSON instead of returning raw DXF text.

  • Data-first defaults - automatic screenshot feedback is disabled by default; window capture is diagnostic only.

  • Richer AutoLISP entity details - arcs, polylines, text, blocks, and dimensions report useful geometry.

v3.2

  • Full AutoCAD COM transport - sends command expressions through ActiveDocument.SendCommand.

  • Process-based window detection - recognizes localized titles and the AutoCAD Start page by verifying acad.exe.

  • Optional AutoCAD startup - launches a configured acad.exe and waits for its window.

  • Session-scoped dispatcher loading - loads a configured LISP dispatcher without changing persistent trust paths.

v3.1

  • execute_lisp — Run arbitrary AutoLISP code via temp file pattern. Turns the server from a fixed command set into an extensible automation platform.

  • Undo / Redo — Single-step undo and redo via drawing tool.

  • Drawing open — Open existing .dwg files programmatically (FILEDIA suppressed).

  • Drawing create — Now resets current drawing (erase all + purge) instead of _.NEW, preserving the LISP dispatcher namespace.

  • Drawing save with pathsave with a path parameter uses SAVEAS; without path uses QSAVE.

  • get_variables fix — Respects the names parameter; returns requested variables with proper type handling.

  • Polyline/leader fix — Point arrays properly encoded via semicolon-delimited format.

  • ESC prefix — Sends 2x ESC before each dispatch to cancel stale pending commands from prior timeouts.

  • UTF-8/cp1252 fallback — Handles non-ASCII characters in LISP result files (AutoCAD writes Windows-1252).

  • Configurable IPC timeoutAUTOCAD_MCP_IPC_TIMEOUT env var (1–300 seconds, default 10).

  • Thread-safe backend initasyncio.Lock prevents parallel initialization races.

License

MIT

Available Tools

12 tools
annotationA

Annotation: text, dimensions, and leaders.

Operations: create_text — data: {x, y, text, height?, rotation?, layer?} create_dimension_linear — data: {x1, y1, x2, y2, dim_x, dim_y} create_dimension_aligned — data: {x1, y1, x2, y2, offset} create_dimension_angular — data: {cx, cy, x1, y1, x2, y2} create_dimension_radius — data: {cx, cy, radius, angle} create_leader — data: {points: [[x,y],...], text}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo
include_screenshotNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, confirming a write operation. The description adds that it creates various annotation types but does not disclose side effects such as drawing mutations, required permissions, or transaction behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, well-organized as a bulleted list, and every line provides operational detail. The header immediately conveys purpose, and the operation list is scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description effectively covers the various operations and their data shapes, but lacks information about return values, prerequisites, or side effects. Since no output schema is present, return behavior should be clarified. Overall, it is adequate for understanding operations but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates by documenting the operation-specific data fields for each operation (e.g., coordinates, text, dimensions). It also enumerates all allowed operation values, which the schema lacks. However, common parameters like doc_id and lease_token are not explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Annotation: text, dimensions, and leaders' and lists six specific create operations, making the tool's function unambiguous. It clearly differentiates from sibling tools (entity, layer, block) by focusing on annotation objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the operation examples but does not explicitly state when to choose this tool over alternatives like 'entity' or 'drawing'. No exclusions or alternative tool recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

blockA

Block definition, insertion, and attribute management.

Operations: list — List all block definitions. insert — data: {name, x, y, scale?, rotation?, block_id?} insert_with_attributes — data: {name, x, y, scale?, rotation?, attributes: {tag: value}} get_attributes — data: {entity_id} update_attribute — data: {entity_id, tag, value} define — data: {name, entities: [{type, ...}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo
include_screenshotNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only include readOnlyHint=false and a title, so the description must carry behavioral disclosure. It does reveal that operations include reads and writes (list, insert, update_attribute, define), but it does not explain return values, side effects such as overwriting on define, permissions, or error behavior. This is partial but not complete transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact summary followed by a scannable operation list. Each operation is described in one line with its data structure, and there is no filler or redundant prose. The formatting makes the multiple operations easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a multi-operation tool with eight parameters and no output schema, so the description needs to cover a lot. It does provide operation inventory and data payloads, but it omits return behavior, coordinate system/units, how entity_id is used, and the full entity schema for define. These gaps make it incomplete for a complex CAD block tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage and treats data as an opaque object, but the description compensates with operation-specific shapes like insert: {name, x, y, scale?, rotation?, block_id?} and update_attribute: {entity_id, tag, value}. Generic parameters such as doc_id and lease_token remain unexplained, but the most important data parameter is well detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Block definition, insertion, and attribute management,' clearly identifying the resource and core actions. The subsequent operation list (list, insert, get_attributes, update_attribute, define) makes the tool's purpose concrete and distinguishes it from sibling tools like entity or layer. It lacks a single imperative verb but is not vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list implies when the tool is appropriate (e.g., 'list all block definitions' or 'insert_with_attributes'), but there is no explicit guidance on when to use this tool versus alternatives, no exclusions, and no mention of prerequisites. Usage context is only implied by the operation names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drawingA

Drawing file management.

Operations: activate - Activate a known document without changing window focus. data: {doc_id, expected_revision, lease_token?, worker_generation?} create — Create a new empty drawing. data: {name?} open — Open an existing drawing. data: {path} info — Get drawing extents, entity count, layers, blocks. save — Save current drawing. data: {path?} (saves to path if given, else QSAVE) save_as_dxf — Export as DXF. data: {path} plot_pdf — Plot to PDF. data: {path} render_preview — Native deterministic preview. data: {path, paper?, orientation?, plot_style?} Optional visual_style: Conceptual, Realistic, Shaded, or ShadedWithEdges. The style is applied only for the render and restored by default. workspace — Show the managed output workspace and folder layout. deliver — Build a validated DWG/DXF/PDF job with audits and SHA-256 checksums. audit — Structured drawing audit. data: {limit?, include_entities?, changed_only?, layer?, space?} audit_dxf — Parse an existing DXF into normalized JSON. data: {path, limit?, include_entities?} setup_mechanical — Create the seven monochrome GB/T mechanical-drafting layers. purge — Purge unused objects. get_variables — Get system variables. data: {names: [...]} set_variables — Safely set whitelisted system variables. data: {values: {...}} audit_geometry — Run line/polyline geometry DRC and return structured findings. undo — Undo last operation. redo — Redo last undone operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint: false in annotations, the description carries the load and does so well. It discloses specific behaviors such as activate 'without changing window focus', save behavior ('else QSAVE'), and render_preview's style restoration. These details go beyond the annotation and help the agent predict side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-organized, front-loaded list. While lengthy, every line introduces a distinct operation with a brief explanation, avoiding filler or redundancy. The monospaced operation names aid quick scanning, and the overall structure is appropriate for a tool with many sub-functions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and minimal schema/no output schema, the description covers each operation's purpose and most data inputs, which is substantial. It lacks details on return values and doesn't explain concepts like 'managed output workspace', but the operation list is largely sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides no descriptions (0% coverage). The description compensates by specifying data structures for many operations (e.g., activate's doc_id, expected_revision; open's path; audit's filters), and implicitly defines operation values. However, include_screenshot is never mentioned, and not all operations have their data payloads fully specified, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Drawing file management' and then enumerates 17 distinct operations (create, open, save, plot_pdf, etc.), each with a specific verb and resource. This clearly distinguishes the tool from siblings like entity, layer, and product, leaving no ambiguity about its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus sibling tools, nor on how to choose among the many operations. The list of operations is self-explanatory as a menu, but there are no contextual triggers, prerequisites, or exclusions, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entityA

Entity creation, querying, and modification.

Create operations: create_line — x1, y1, x2, y2, layer? create_circle — data: {cx, cy, radius}, layer? create_polyline — points: [[x,y],...], data: {closed?}, layer? create_rectangle — x1, y1, x2, y2, layer? create_arc — data: {cx, cy, radius, start_angle, end_angle}, layer? create_ellipse — data: {cx, cy, major_x, major_y, ratio}, layer? create_mtext — data: {x, y, width, text, height?}, layer? create_hatch — entity_id, data: {pattern?, angle?, scale?, layer?} create_batch — data: {entities: [{type, ...}], continue_on_error?}

Read operations: list — layer? → list entities count — layer? → count entities get — entity_id → entity details

Modify operations: copy — entity_id, data: {dx, dy} move — entity_id, data: {dx, dy} rotate — entity_id, data: {cx, cy, angle} scale — entity_id, data: {cx, cy, factor} mirror — entity_id, x1, y1, x2, y2 offset — entity_id, data: {distance} array — entity_id, data: {rows, cols, row_dist, col_dist} fillet — data: {id1, id2, radius} chamfer — data: {id1, id2, dist1, dist2} erase — entity_id

ParametersJSON Schema
NameRequiredDescriptionDefault
x1No
x2No
y1No
y2No
dataNo
layerNo
doc_idNo
pointsNo
strictNo
entity_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo
include_screenshotNo

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lists mutating operations (erase, move, scale) and readOnlyHint is false, but it adds no behavioral context beyond operation names. It doesn't disclose that erase is destructive, whether modifications require lease_token or expected_revision, or any side effects. The description adds minimal value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured, organized by operation categories (create, read, modify). It front-loads the summary and each line is informative. While lengthy, it avoids fluff and uses a consistent format, making it reasonably concise for the breadth of functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex with 16 parameters and many operations, but the description leaves gaps: no return value formats, no explanation of generic parameters like lease_token, strict, or expected_revision, and no error semantics. It is sufficient for operation selection but not for full understanding of behavior or outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by mapping each operation to its relevant parameters (e.g., create_line: x1, y1, x2, y2, layer; create_circle: data with cx, cy, radius). This is essential for the agent to construct valid calls and adds significant meaning beyond the generic schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Entity creation, querying, and modification' with a specific resource (entities). It lists concrete operations for create, read, and modify, fully distinguishing it from sibling tools like layer or block. The purpose is immediately evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the enumerated operations but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions. For example, it doesn't say 'use layer for layer operations.' It provides context but lacks explicit when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobA

Inspect idempotent operations or clean managed test artifacts.

Operations: journal_status - data: {idempotency_key} cleanup_test_artifacts - data: {job_id, confirm: true}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, and the description adds that cleanup requires confirm:true and targets managed test artifacts, while journal_status is inspect-style. It discloses the destructive confirmation requirement but lacks further side-effect or output details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with a clear summary, and uses a short bullet list for operation details. Every sentence contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and minimal parameter metadata, the description provides enough to invoke both operations with expected data shapes. However, journal_status return values and error behaviors remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and operation has no enum, so the description carries full parameter meaning. It maps each operation to specific data fields like idempotency_key and job_id/confirm, adding value beyond the generic schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool inspects idempotent operations and cleans managed test artifacts, and it lists two concrete operations. This distinguishes it from sibling tools focused on drawing entities and system resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides operation-specific data payloads, implying when to use each operation. However, it does not explicitly state when to prefer this over alternatives or mention exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

layerA

Layer creation and management.

Operations: list — List all layers with properties. create — data: {name, color?, linetype?, lineweight?} set_current — data: {name} set_properties — data: {name, color?, linetype?, lineweight?} freeze — data: {name} thaw — data: {name} lock — data: {name} unlock — data: {name}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo
include_screenshotNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnlyHint: false. The description lists mutating operations (create, freeze, lock) and their data inputs, but does not disclose potential side effects, prerequisites, or failure modes. It adds some transparency beyond the annotation but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-line purpose, followed by a compact, well-organized list of operations. Every line adds value, no filler text, and the structure makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the multiple operations and no output schema, the description covers the main operation semantics and data shapes. However, it does not describe return values, error conditions, or the expected behavior of operations like 'list' beyond 'List all layers with properties.' Some context is missing for a full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by specifying the exact data structure for each operation (e.g., 'create — data: {name, color?, linetype?, lineweight?}'). This gives meaning to the 'operation' and 'data' parameters, though it does not explain other parameters like doc_id or lease_token.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Layer creation and management' and then enumerates 7 specific operations (list, create, set_current, set_properties, freeze, thaw, lock, unlock). This clearly identifies the tool's purpose and differentiates it from sibling tools like entity or block by focusing exclusively on layers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list implies the tool is for layer-related tasks, but there is no explicit guidance on when to use this tool versus alternatives, nor any exclusions. The context is clear but not directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pidB

P&ID drawing with CTO symbol library.

Operations: setup_layers — Create standard P&ID layers. insert_symbol — data: {category, symbol, x, y, scale?, rotation?} list_symbols — data: {category} draw_process_line — data: {x1, y1, x2, y2} connect_equipment — data: {x1, y1, x2, y2} add_flow_arrow — data: {x, y, rotation?} add_equipment_tag — data: {x, y, tag, description?} add_line_number — data: {x, y, line_num, spec} insert_valve — data: {x, y, valve_type, rotation?, attributes?} insert_instrument — data: {x, y, instrument_type, rotation?, tag_id?, range_value?} insert_pump — data: {x, y, pump_type, rotation?, attributes?} insert_tank — data: {x, y, tank_type, scale?, attributes?}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo
include_screenshotNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false, which the description's mutating operations (setup_layers, insert_symbol, etc.) align with; no contradiction. However, the description does not disclose side effects (e.g., whether setup_layers clears existing layers, how insert_symbol interacts with the symbol library, or transaction requirements). It adds little behavioral context beyond the annotation's mutation hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and well-organized: a one-sentence purpose followed by a compact, sorted operation list with required data fields. Each line is necessary for an agent to invoke the tool; there is no redundant prose. The front-loaded purpose is good. The length is justified given the tool's multi-operation nature.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex tool with 8 parameters, no output schema, and a multi-operation dispatch model. The description fails to explain what the tool returns (e.g., whether it returns an entity ID, success status, or screenshot), how doc_id and lease_token affect operations, or which operations require an existing document. These gaps leave an agent without critical operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description compensates effectively by specifying the data payload structure for each operation (e.g., data: {category, symbol, x, y, scale?, rotation?}) and enumerating valid operation values. This adds meaning the input schema entirely lacks. However, it omits semantics for generic top-level parameters like doc_id, lease_token, and idempotency_key, and the operation values are not formal enums.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'P&ID drawing with CTO symbol library' clearly establishes the domain, and the detailed operation list (insert_symbol, draw_process_line, insert_valve, etc.) specifies concrete capabilities. This distinguishes it from sibling tools like generic drawing or layer by focusing on P&ID-specific symbols and workflows. However, it lacks a single, direct statement of what the tool as a whole does, relying instead on the enumerations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives among sibling tools (e.g., drawing, layer, annotation). It does not state exclusions or preferred contexts. The operations imply usage but do not explicitly contrast with other tools, leaving the agent uncertain about the boundary between pid and more generic drawing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

productA

Parametric consumer-product features, motion screening, views, and reviews.

Operations: capabilities - honest verified/unsupported capability matrix create_feature - data: {kind, feature_id, component_id, ...} list_features / get_feature query_edges_by_semantic_role measure_fillet_radius / measure_chamfer_distance fillet_edges / chamfer_edges - structured capability error without stable selection set_motion - axis, angle, limits, clearance interference_sample - static broad-phase AABB screening clearance_sweep - sampled rotated-AABB motion screening render_view - front/right/top/bottom/iso/rotated_iso/section/exploded; data.visual_style requests an allow-listed AutoCAD display style; material rendering is reported only when independently verified by the backend set_review / review_summary

Product review verdicts are independent from geometry and STEP validity. USB cutouts require supplier-controlled or physically measured authority; concept dimensions must use module_reservation instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false, but the description adds substantial behavioral context: honest verified/unsupported capability matrix, structured capability errors without stable selection, material rendering reported only when backend-verified, and review verdicts independent from geometry/STEP validity. These disclosures go far beyond structured metadata and are not contradicted by the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized as a front-loaded summary followed by a compact bullet-style list of operations with inline annotations. Every line adds information and there is no filler or repetition. The length is appropriate for a multi-operation dispatcher.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex dispatcher with 7 parameters, no output schema, and no enums, the description covers the operation inventory, several key data formats, and critical caveats (authority, verification, module_reservation). Remaining gaps include exact return shapes and semantics for operations like query_edges_by_semantic_role and review_summary, but overall it is substantially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by documenting operation names and data payloads for several operations (create_feature data fields, set_motion axis/angle/limits/clearance, render_view orientations and visual_style). However, some operations lack parameter detail, and common fields like doc_id, lease_token, and idempotency_key are not explained, leaving partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the product domain ('Parametric consumer-product features, motion screening, views, and reviews') and enumerates specific operations, distinguishing it from sibling tools by domain. However, it is a multi-operation dispatcher rather than a single verb+resource, so it lacks the precision of a focused tool description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance for specific cases: USB cutouts require supplier-controlled or physically measured authority, and concept dimensions must use module_reservation instead. It does not offer a broad when-to-use/when-not-to-use statement, but the operation list and these exclusions give clear contextual usage signals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solidA

Create and combine native AutoCAD 3D solids through the safe COM API.

Operations: create_box - {center: [x,y,z], length, width, height, layer?} create_cylinder - {base_center: [x,y,z], radius, height, layer?} extrude - {profile_id, height, taper_angle?, erase_profile?, layer?} revolve - {profile_id, axis_point, axis_direction, angle?, erase_profile?, layer?} sweep - {profile_id, path_id, erase_profile?, layer?} boolean - {primary_id, tool_id, operation: union|intersection|subtract} fillet_edges - returns capability error until stable semantic edge selection exists chamfer_edges - returns capability error until stable semantic edge selection exists

General native edge edits never accept volatile edge indices. Use product.rounded_box for analytic radius geometry or a future stable native feature plugin.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
lease_tokenNo
idempotency_keyNo
expected_revisionNo
worker_generationNo
include_screenshotNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=false, so the description adds valuable behavioral context: fillet/chamfer currently error out, and native edge edits reject volatile indices. The 'safe COM API' phrase hints at safer operations, and optional erase_profile? flags suggest deletion behavior. However, it does not disclose side effects like whether boolean subtract destroys inputs or whether extrude consumes the profile, so full behavioral clarity is still missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence summary, then uses a scannable code-style list for each operation. No filler words; the fillet/chamfer warnings are directly relevant to operation selection. It is long but dense and appropriately structured for a multi-operation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-operation CAD mutation tool with no output schema, the description thoroughly documents operation inputs but says nothing about return values or how resulting solids are referenced in subsequent operations (e.g., how primary_id or profile_id values are obtained). It also omits unit conventions or the need for an active drawing context beyond the doc_id parameter. The operation list is comprehensive, but the missing flow/return semantics leave a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage — data is just an arbitrary object/null. The description compensates thoroughly by providing a field-level mini-schema for every operation, e.g., create_box {center, length, width, height, layer?} and boolean {primary_id, tool_id, operation}. This is exactly the meaning the schema lacks, even though generic parameters like doc_id and lease_token are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create and combine native AutoCAD 3D solids through the safe COM API,' which is a specific verb-resource pairing. The enumerated operations (create_box, create_cylinder, extrude, revolve, sweep, boolean) clearly distinguish this from sibling tools like entity or product, making it unambiguous that 'solid' is exclusively for native 3D solid modeling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names product.rounded_box as an alternative for analytic radius geometry and warns that fillet_edges/chamfer_edges return capability errors until stable semantic edge selection exists. It also states that general native edge edits never accept volatile edge indices, providing clear when-not guidance and an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

systemB
Read-only

Server status and management.

Operations: status — Backend info, capabilities, health check. preflight — Check Python/pywin32, acad.exe processes, and Activity Insights without starting AutoCAD. ensure_ready — Discover/start AutoCAD, open a document, load/version-check dispatcher, ping IPC. health — Quick health check (ping backend). get_backend — Return current backend name and capabilities. runtime — Return process/runtime details for spawn diagnostics. supervisor_status — Read the external desktop supervisor heartbeat without starting AutoCAD. init — Re-initialize the backend. execute_lisp — Execute arbitrary AutoLISP code (File IPC only). data: {code} recover — Cancel a stuck AutoCAD command and clear stale IPC state.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

TDQS

B3.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation declares readOnlyHint=true, but the description lists operations such as ensure_ready (starts AutoCAD, opens a document, loads dispatcher) and execute_lisp (executes arbitrary AutoLISP code) which are clearly mutating. This is a direct contradiction between the description and annotations, eroding trust in the tool's safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description uses a compact list format where each operation gets a single informative line. Every sentence earns its place, and there is no filler or repetition. The structure enhances scannability for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex with 11 operations and no output schema, so the description should disclose return values and parameter behavior more thoroughly. It gives short descriptions for each operation, which is a good start, but lacks details on what each operation returns (except runtime which mentions 'details for spawn diagnostics') and does not cover the data and include_screenshot parameters comprehensively. This is a minimum-viable but incomplete specification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the burden of explaining parameters. It does enumerate the valid operation values (adding meaning beyond the raw string type) and documents data:{code} for execute_lisp. However, it does not explain the data parameter for other operations and completely omits include_screenshot, leaving significant gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Server status and management' and enumerates 11 specific operations, making the tool's purpose and scope unmistakable. It clearly distinguishes itself from domain-specific siblings like product, drawing, and layer by focusing on system-level operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context for several operations (e.g., preflight for checking without starting AutoCAD, supervisor_status for reading external heartbeat), but it never explicitly contrasts this tool with sibling tools or states when to avoid using it. There is no direct when-to-use/when-not-to-use guidance, leaving the agent to infer applicability from the operation names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transactionA

Document identity and atomic native AutoCAD transactions.

Operations: context - Read canonical native document/session/revision identity. create - Create a document. data: {name?}; requires idempotency_key. execute - Atomically apply data.operations through the native worker. Requires doc_id, expected_revision, and idempotency_key. begin/commit/rollback - Compatibility undo transaction operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
doc_idNo
operationYes
transaction_idNo
idempotency_keyNo
expected_revisionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses that 'execute' is 'atomic' and goes 'through the native worker', and calls begin/commit/rollback 'Compatibility undo transaction operations'. It does not explain side effects, failure modes, or permission needs. The readOnlyHint=false annotation already signals write behavior, so the description adds moderate extra context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, starts with a one-sentence summary, and uses a bulleted list to efficiently document all five operations. Every line conveys needed information without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has six parameters and five sub-operations, no output schema, and zero schema descriptions. The description covers each operation's purpose and key required parameters, but lacks return-value expectations, transaction_id semantics, and error-handling behavior, making it incomplete for fully autonomous agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description is the only source of parameter meaning. It clarifies that data can carry {name?} for create and 'data.operations' for execute, and lists required parameters (idempotency_key, doc_id, expected_revision). However, it never explains transaction_id and gives only partial detail about the shape of data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool handles 'identity and atomic native AutoCAD transactions' and lists five distinct operations (context, create, execute, begin/commit/rollback). This makes the tool's purpose specific and understandable, though it doesn't explicitly contrast with sibling tools like drawing or entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives operation-level usage hints, e.g., 'create' requires idempotency_key and 'execute' requires doc_id, expected_revision, and idempotency_key. However, it does not state when to prefer this tool over alternatives, nor does it mention exclusions or general use-case scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewA

Viewport control and diagnostic window capture.

Operations: zoom_extents — Zoom to show all entities. fit_drawing — Center and fit all drawing geometry in the viewport. zoom_window — Zoom to window: x1, y1, x2, y2 set_visual_style — Apply a built-in visual style and optional entity colors. data: {visual_style|style, colors?, doc_id, expected_revision, lease_token?, worker_generation?} show_window — Restore and activate the AutoCAD window. get_screenshot — Diagnostic-only window capture. Prefer drawing.render_preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1No
x2No
y1No
y2No
dataNo
operationYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state readOnlyHint=false, so the description carries the transparency burden. It discloses that get_screenshot is diagnostic-only, and the set_visual_style data includes expected_revision and lease_token, hinting at concurrency controls. It does not detail side effects of set_visual_style, but overall it adds meaningful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by a scannable bullet list of operations. Each operation line is concise and informative, with no filler or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool features six distinct operations and a free-form data parameter; the description covers each operation's behavior and points to an alternative for screenshots. It omits return value and error details, but there is no output schema and the descriptions are sufficient for an agent to select and invoke the correct operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by mapping zoom_window to x1,y1,x2,y2 and outlining the data object for set_visual_style. It does not explain the coordinate units or all possible data fields, but it provides enough for an agent to understand the primary parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific statement that the tool handles viewport control and diagnostic window capture, then enumerates distinct operations (zoom_extents, fit_drawing, zoom_window, set_visual_style, show_window, get_screenshot). This clearly distinguishes it from sibling domain tools like drawing or entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for each operation and explicitly recommends drawing.render_preview over get_screenshot for normal use. However, it does not explain when to prefer view over drawing for other viewport tasks, so there is a minor gap in alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv4.0.0
    • First observedannotation
    • First observedblock
    • First observeddrawing
    • First observedentity
    • First observedjob
    • First observedlayer
    • First observedpid
    • First observedproduct
    • First observedsolid
    • First observedsystem
    • First observedtransaction
    • First observedview

TDQS

A3.6/5.0
Disambiguation4/5

The tools are organized by domain (product, drawing, entity, layer, etc.), which gives each a distinct purpose. However, there is some overlap: product.fillet_edges and solid.fillet_edges ostensibly do the same thing, and drawing.render_preview vs view.get_screenshot both produce visual output, which could confuse an agent.

Naming Consistency3/5

Top-level tool names are all single nouns (product, drawing, entity, etc.), an internally consistent pattern. Sub-operation names, however, vary without a strict convention: some are verb_noun (create_line, set_properties), others are bare verbs (list, move), and some are noun phrases (capabilities, review_summary). The grouping helps, but the overall pattern is not uniform.

Tool Count4/5

With 12 top-level tools, each covering a distinct aspect of CAD automation, the count is well within the 3-15 ideal range. Although each tool exposes many sub-operations, the top-level granularity keeps the surface manageable and scoped appropriately for the domain.

Completeness4/5

The set provides broad coverage: drawing file lifecycle, entity CRUD, layers, blocks, annotations, 3D solids, P&ID symbols, transactions, view management, and system health. Some niche operations (e.g., fillet_edges) are stubbed with capability errors, and advanced selection or dimension editing might be missing, but the core workflows are represented.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language control of AutoCAD LT for automation and headless DXF generation, supporting drawing, entity, layer, block, annotation, P&ID, and system operations via an MCP interface.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server for read-only inspection of AutoCAD DWG files, enabling AI agents to open drawings, query objects by handle or filter, and explore properties and references.
    8
    GPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for AutoCAD LT automation and headless DXF generation, exposing tools for drawing, entities, layers, blocks, annotations, P&ID, and view operations via natural language.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables natural-language control of AutoCAD via file IPC or headless DXF generation, with tools for drawing, entities, layers, blocks, annotations, P&ID, views, and system operations.
    MIT

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/beiming183-cloud/AutoCAD-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server