Skip to main content
Glama
cafedaily

AutoCAD 2024 MCP

by cafedaily

AutoCAD 2024 MCP

面向 AutoCAD 2024(R24.3)的本机 MCP 模块。大模型把自然语言意图转换为有类型的 MCP 工具调用,Node.js 服务通过 Windows 命名管道连接 AutoCAD 进程内 .NET 插件,最终由 ObjectARX .NET API 读取或修改 DWG。

当前版本:0.1.1。

已实现能力

MCP 工具

能力

cad_instances

列出已注册的 AutoCAD 进程、PID 和活动图纸

cad_connect

明确绑定一个 AutoCAD PID,避免多实例误路由

cad_capabilities

返回精确能力矩阵、限制及已验证导出格式

cad_status

连接、版本、活动图纸和当前图层

cad_events

按游标读取命令、实体、文档、MCP 操作和屏幕呈现事件

cad_document

新建、打开、切换、保存、另存、保存副本和关闭 DWG;支持密码保护图纸

cad_inspect

图纸、实体、图层、块、布局、样式、线型、系统变量

cad_draw

二维/三维多段线、样条曲线、构造线、文字、表格、引线、块、填充和完整常用尺寸

cad_electrical_symbol

从内置电气符号目录插入可编辑的原生二维实体,支持缩放、旋转、标注和逐步显示

cad_electrical_sheet

生成 A0-A4 外框、图框、标题栏、会签栏和偶数图幅分区

cad_solid

七类三维基元、拉伸、旋转、扫掠及布尔并集/差集/交集

cad_model_build

用参数化配方批量构建或重建可编辑三维实体,并在失败时补偿回滚

cad_measure

包围盒、长度、面积、体积、质心及密度换算质量

cad_edit

属性、移动、复制、旋转、缩放、镜像和删除

cad_layer

图层创建、修改、改名、删除、当前层、隔离和恢复

cad_text_style

查询、创建、修改、设为当前或批量应用文字样式;提供中文/CJK 字体支持

cad_block

块定义、插入和从 DWG 导入

cad_layout

布局创建、改名、删除、切换和出图设置

cad_export

已验证 DWG、DXF、选定三维实体的 STL,以及队列式 PDF/DWF/SVG/PNG/JPEG

cad_view

范围缩放、窗口缩放、视图恢复和重生成

cad_undo

撤销和重做

cad_command

受白名单保护的 AutoCAD 原生命令兜底

插件还提供 CADMCPDIFFERENTIAL 和 CADMCPDIFFERENTIAL3D 示例生成命令,分别生成差速器二维装配剖视图及可编辑的三维组件装配模型。

精确修改以 AutoCAD Handle 为稳定标识。建议先用 cad_inspect 查询,再把返回的 handle 交给 cad_edit。读取结果同时返回 documentId 和 revision;修改时可传入 expectedDocumentId、expectedRevision,若用户在 AutoCAD 中已经修改图纸,MCP 会返回冲突而不是覆盖新状态。每个 AutoCAD 进程使用独立的 PID 管道;存在多个实例时必须先调用 cad_instances 和 cad_connect。数据库写入仍在 AutoCAD 主线程串行执行,事件读取可在长命令运行期间并行完成。

Related MCP server: AutoCAD MCP Server

实时绘制同步

结构化修改支持三种显示模式:

  • silent:不主动重生成或改变当前选择集,适合后台批处理。

  • batch:默认模式;完成一次 MCP 修改后立即重生成并在 AutoCAD 命令行确认。

  • step:cad_draw 和三维基元创建会逐实体提交、刷新、高亮并显示步骤进度;中途失败会清理本次已经创建的实体。

示例:

{
  "entities": [
    { "type": "line", "start": [0, 0], "end": [100, 0] },
    { "type": "circle", "center": [50, 30], "radius": 15 }
  ],
  "coordinateSystem": "UCS",
  "visualMode": "step",
  "highlightResults": true,
  "zoomToResult": true,
  "expectedDocumentId": "2A5F0C1",
  "expectedRevision": 18
}

调用 cad_events 并把上次返回的 nextSequence 作为新的 afterSequence,即可增量读取用户手工操作和 MCP 操作。事件缓冲区保存最近 4096 条记录;overflowed=true 表示游标过旧,需要重新执行 cad_status 和 cad_inspect 建立状态基线。

环境

  • Windows 10/11 x64

  • AutoCAD 2024,内部版本 R24.3

  • Node.js 20 或更高版本

  • 构建插件时需要 Visual Studio Build Tools 2022 或 .NET SDK(目标为 .NET Framework 4.8)

本机非标准 AutoCAD 安装目录可在构建时传入 AutoCADDir:

dotnet build .\plugin\AutoCAD2024Mcp\AutoCAD2024Mcp.csproj -c Release -p:AutoCADDir="D:\Autodesk\AutoCAD 2024"

安装

在仓库根目录执行:

npm install
npm run check
dotnet build .\plugin\AutoCAD2024Mcp\AutoCAD2024Mcp.csproj -c Release
.\scripts\install-plugin.ps1
.\scripts\register-codex.ps1

如果已经有编译后的 plugin\AutoCAD2024Mcp\bin\Release\AutoCAD2024Mcp.dll,可以跳过插件构建。安装脚本只复制到当前用户的 %APPDATA%\Autodesk\ApplicationPlugins\AutoCAD2024Mcp.bundle。

重启 AutoCAD 2024,命令行执行 CADMCPSTATUS。显示 0.1.1 后可执行 CADMCPSELFTEST;该命令临时创建并清理测试实体,用于验证结构化绘制、三维实体、检查和事件日志。随后重启 Codex 使 MCP 工具目录刷新。也可以把 mcp.example.json 的内容合并到支持 JSON MCP 配置的客户端。

验收

AutoCAD 中至少打开一张图,然后执行:

node .\scripts\smoke-test.mjs

随后可在支持 MCP 的对话中输入:

读取当前图纸所有图层,找到名为 WALL 的闭合多段线,将它向右复制 3000 mm,
在 DIM 图层补一条对齐尺寸,检查结果后另存为 D:\output\revised.dwg。

推荐调用顺序是 cad_status、cad_inspect、cad_edit/cad_draw、再次 cad_inspect、cad_export。

中文文字与字体

MCP 与 AutoCAD 插件之间使用 UTF-8 JSON,TEXT 和 MTEXT 内容按 Unicode 原样传递。绘制包含中文、日文或韩文的文字且没有指定 style 时,插件会自动使用或创建 MCP_CJK 样式;也可以通过 cad_text_style 明确管理工程字体。

推荐先创建样式,再在 cad_draw 中引用:

{
  "action": "create",
  "name": "MCP_CJK",
  "fontFile": "msyh.ttc",
  "bigFontFile": "",
  "xScale": 1
}
{
  "entities": [{
    "type": "mtext",
    "position": [0, 0],
    "text": "车间工艺通风:一号风机运行反馈",
    "height": 5,
    "width": 120,
    "style": "MCP_CJK"
  }]
}

修复现有图纸中的问号或方框时,先调用 cad_inspect,确认返回的 text 字段仍是中文。如果内容仍在,仅需创建中文样式并使用 cad_text_style 的 apply 操作批量应用到 TEXT/MTEXT;如果返回内容已经是真实的 ?,原字符已在更早的非 Unicode 流程中丢失,需要从源文件或备份恢复,字体替换无法还原。

字体文件必须已经安装在运行 AutoCAD 的 Windows 系统中。为保证其他工作站和 PDF 出图一致,项目交付时应统一字体版本;不要依赖接收方不存在的 SHX 大字体。DXF 请通过 cad_export 交给 AutoCAD 原生命令生成,避免用非 Unicode 文本工具重写 DXF。

电气制图资源

MCP 发布下列内置资源:

  • cad://standards/electrical-drawing-sheet:A0-A4 幅面、图框、标题栏、会签栏、图号和图幅分区基线。

  • cad://symbols/electrical/catalog:全部可调用电气符号的目录、类别、别名和端子信息。

  • cad://symbols/electrical/{symbolId}:单个符号的规范化二维几何资源。

cad_electrical_symbol 将目录中的电阻、电容、电感、变压器、电源、接地、开关、按钮、保护、继电器、信号、仪表、电机、半导体和连接类符号展开为原生 LINE、POLYLINE、CIRCLE、ARC、TEXT,后续仍可通过 cad_edit 修改。符号语义按常用 IEC 60617 / GB/T 4728 表达方式对齐;正式出图前仍需按项目采用的标准版本复核。

cad_electrical_sheet 默认 A0-A3 为横向、A4 为纵向;装订边为左侧 25 mm,A0-A2 其他边距为 10 mm,A3-A4 为 5 mm。A3/A4 可通过 extensionModules 按短边模数增加长边。边距、方向、分区数量、图签字段、会签人员、图层和中文文字样式均可覆盖。横向数字与纵向大写字母从标题栏对角的左上角开始,横纵分区数仅接受偶数。

安全边界

  • 仅监听本机命名管道,不开放 TCP 端口。

  • 文件路径必须为绝对本机路径。

  • 结构化修改使用事务;失败自动回滚。

  • 保存通过异步原生 QSAVE/SAVEAS 执行;另存为期间临时禁用 FILEDIA,并在完成、失败或取消后恢复原设置;禁止从 Idle 回调直接调用 AcDbDatabase.saveAs。

  • 新建、打开、激活及关闭图纸通过 AutoCAD 命令上下文执行,避免在 Idle 回调中切换 MDI 文档导致挂起。

  • saveCopy 和 DWG 导出使用异步原生 -WBLOCK,不改变活动图纸的文件名。

  • 插件 DLL 使用版本化文件名部署,不覆盖 AutoCAD 已加载的程序集。

  • 正式 DLL 仅通过 %APPDATA%\Autodesk\ApplicationPlugins Bundle 自动加载;不要手动 NETLOAD 仓库 plugin 目录中的开发 DLL。

  • 所有公开 AutoCAD 命令都有异常边界,API 错误写入命令行或 MCP 结构化响应,不弹出未处理异常框。

  • cad_command 只允许运行插件中的固定白名单,避免任意命令和脚本执行。

  • 默认不自动保存。只有明确调用 cad_document save/saveAs 或 cad_export 才写文件。

  • 批量工具设有数量上限,实体读取支持分页。

已知边界

  • PDF、DWF、SVG 和位图使用 AutoCAD 原生命令并等待命令结束及目标文件出现;交互式出图配置仍应预先保存在布局中。

  • 当前结构化几何覆盖常用二维制图和实体三维建模。曲面、网格、参数化约束、动态块和行业版对象尚未封装,不能把本版本描述成全部 AutoCAD API 的完整映射。

  • AutoCAD 必须处于运行状态。MCP 服务不会绕过 AutoCAD 授权,也不会在服务器端解析专有 DWG。

开发

npm run dev
npm run check
npm run bench

协议是一条 UTF-8 JSON 请求和一条 JSON 响应,每个管道连接处理一次请求。插件的 Application.Idle 回调把后台请求切换到 AutoCAD 主线程,避免跨线程访问数据库。

卸载插件:

.\scripts\uninstall-plugin.ps1

Available Tools

21 tools
cad_blockC
Destructive

Create a block definition from entities, insert a block, redefine it, or import a DWG as a block.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
scaleNo
actionYes
rotationNo
basePointNo
attributesNo
sourcePathNo
visualModeNoControl AutoCAD screen updates; step presents each created entity
deleteSourceNo
zoomToResultNo
sourceHandlesNo
insertionPointNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is established. The description adds useful input context ('from entities' and 'import a DWG as a block') but does not disclose side effects such as overwriting an existing block definition, deleteSource behavior, or zoomToResult effects. With annotations carrying the destructive/mutation burden, this is adequate but not rich.

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 one sentence and front-loads the core operations, making it easy to scan. It earns its place by naming four relevant actions. It is not bloated, though the ambiguity around 'redefine it' slightly reduces clarity.

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?

For a tool with 15 parameters, nested objects, multiple actions, no output schema, and only 20% schema description coverage, the description is far too thin. It omits action-parameter relationships, required expectedDocumentId/expectedRevision concurrency semantics, result conventions, and side-effect details, so an agent cannot confidently invoke all advertised operations correctly.

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

Parameters2/5

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

Schema description coverage is only 20%, and the description does not compensate. It fails to explain how action maps to the other 15 parameters, such as sourceHandles for create, sourcePath for import, or insertionPoint/scale/rotation for insert. The 'redefine' phrase is also not represented in the action enum, creating possible parameter-selection ambiguity.

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 uses specific block-domain verbs and a clear resource: 'Create a block definition from entities, insert a block, redefine it, or import a DWG as a block.' It is clearly about block operations and distinguishes this tool from the other cad_* siblings by resource and action. It stops short of 5 because it mentions 'redefine it' while the schema action enum only lists create, insert, and import.

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 given about when to use this tool versus alternatives such as cad_draw, cad_edit, or cad_command. There are no exclusions, prerequisites, or context cues beyond listing the actions. The agent is left to infer the appropriate use case from the action names alone.

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

cad_capabilitiesA
Read-onlyIdempotent

Return the exact feature matrix, limits, coordinate conventions, and verified export behavior without contacting AutoCAD.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already signal readOnly, idempotent, and non-destructive behavior, and the description adds the critical detail that this tool does not contact AutoCAD. It does not describe output formatting or potential caveats, but for a zero-parameter read-only capability query the behavioral disclosure is solid.

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 entire description is one tight sentence beginning with the action and the deliverable, followed by a key behavioral qualifier. There is no filler, and every phrase adds either scope or operational context.

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 parameters and no output schema, the description carries the full burden of explaining what the tool returns, and it lists the main content areas. It could elaborate on the exact structure of the matrix or limits, but for a simple capabilities query the information is sufficient for an agent to invoke it correctly.

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 tool has zero parameters, so the input schema carries no burden and the description does not need to explain parameter semantics. The baseline of 4 for parameterless tools applies, and the description avoids inventing unnecessary parameter details.

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 uses a specific verb ('Return') and defines a clear resource: the exact feature matrix, limits, coordinate conventions, and verified export behavior. It also states a distinctive constraint ('without contacting AutoCAD') that separates it from CAD interaction tools like cad_connect or cad_command.

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 phrase 'without contacting AutoCAD' implies this tool is for querying static capability information rather than live state, which gives some usage context. However, there is no explicit guidance about when to prefer this over siblings or when not to use it, leaving some inference required.

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

cad_commandA
Destructive

Run an AutoCAD command sequence only when a specialized MCP tool cannot express the operation. Commands are blocked unless explicitly allowlisted in the plugin configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes
argumentsNo
waitForCompletionNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=false, and idempotentHint=false, so the safety profile is known. The description adds critical context: commands are blocked unless explicitly allowlisted in the plugin configuration. It doesn't explain what happens on failure, what the return format is, or how waiting for completion affects behavior, so it earns a 3 despite the useful allowlist note.

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?

Two concise sentences with no waste, and the primary constraint (use only as fallback) is front-loaded before the allowlist condition. Very efficient and readable.

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 no annotations coverage for safety details, no output schema, and 0% schema description coverage, the description should do more to explain the parameters, the command string format, expected return behavior, and the consequences of destructive commands. The allowlist note is valuable but insufficient for a high-risk, unannotated tool.

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

Parameters2/5

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

Schema description coverage is 0% and all three parameters (command, arguments, waitForCompletion) lack any documentation in both the schema and the description. The description does not mention any parameter, leaving the agent to infer their format and constraints, which is especially problematic for a command-string-based interface.

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?

States a specific verb and resource: 'Run an AutoCAD command sequence'. It also distinguishes from specialized siblings by positioning itself as a fallback when those cannot express the operation. The scope of 'command sequence' is slightly ambiguous, but the core purpose is clear.

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?

Explicitly says to use this only when a specialized MCP tool cannot express the operation, which effectively implies using the specialized sibling tools first. However, it doesn't name specific alternatives or provide concrete examples of what that means in practice.

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

cad_connectA
Read-onlyIdempotent

Bind subsequent MCP calls to one specific AutoCAD process. This prevents operations from being routed to the wrong drawing when multiple instances are running.

ParametersJSON Schema
NameRequiredDescriptionDefault
processIdYes

TDQS

A4.2/5.0
Behavior5/5

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

The annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds important behavioral context beyond them: it establishes a persistent scoping effect on subsequent MCP calls. This is exactly the kind of stateful behavior an agent needs to know before invoking the tool.

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?

Two tight sentences with no filler; the core action is front-loaded and the rationale follows immediately. Every word earns its place.

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 simple one-parameter tool it conveys the core mechanism, but it omits how to discover the processId and how the binding might be changed or released. Since there is no output schema and no param descriptions, those details would make the definition fully self-sufficient.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate for the undocumented processId parameter. It only says 'one specific AutoCAD process' and never explains that processId is the target process identifier or where to obtain it, leaving a meaningful gap for correct invocation.

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 states a specific action and resource: 'Bind subsequent MCP calls to one specific AutoCAD process,' which is a clear and unique purpose. The second sentence adds a concrete rationale (avoiding the wrong drawing) that distinguishes it from generic command tools and process-listing siblings like cad_instances.

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?

The description clearly identifies when to use the tool: 'when multiple instances are running' and routing to the wrong drawing is a risk. It does not name alternatives or explicitly say when not to use it, so it stops short of full routing guidance.

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

cad_documentB
Destructive

Create, open, save, save-as, close, activate, or list AutoCAD drawings. Paths must be absolute local paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
actionYes
versionNo
passwordNoPassword for an encrypted DWG or DWT; never returned in tool output
readOnlyNo
templateNo
overwriteNo
documentIdNo
discardChangesNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description does not contradict them. The description adds that paths must be absolute local paths and that save/saveAs/overwrite semantics exist via parameters, but it does not disclose which actions are destructive (e.g., overwrite behavior, close discarding changes), the risk of saving over files, or authentication/permission needs. Given the destructive hint is already present, the gap is moderate rather than severe, so 3 is appropriate.

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 one concise sentence that front-loads the action list and then the critical path constraint. Every word earns its place and there is no filler. It loses one point only because it is so terse that it omits important usage context that would fit naturally in another sentence.

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?

Given 9 parameters, a large sibling set, no output schema, and only minimal annotations, the description is under-specified. It does not explain which parameters apply to which actions, the meaning of documentId vs path, the dependencies between action and other parameters, or the safety implications of destructive flags like overwrite and discardChanges. An agent would need to probe the tool or make risky assumptions to call it correctly.

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

Parameters2/5

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

Schema description coverage is very low (11%) and there are 9 parameters, mostly undocumented. The description adds almost no parameter-level meaning: it implies path is the document path and action is one of the verbs, but it does not explain documentId, template, overwrite, readOnly, discardChanges, password, or version. The enum on action is self-descriptive, but the other seven parameters require inference, so the description fails to compensate for the schema gap.

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 names a specific verb list and resource ('Create, open, save, save-as, close, activate, or list AutoCAD drawings') and states a key constraint (absolute local paths). It identifies the tool as the document lifecycle manager within a large sibling group (cad_document vs cad_draw/cad_edit/cad_view etc.), so an agent can reasonably distinguish it without opening the schema. However, it doesn't name any sibling explicitly, and the verb list bundles many actions into one description rather than isolating the one the tool is for.

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 the tool is for file-level document operations versus drawing, editing, or inspecting (implied by the verb list), but it gives no explicit when-to-use versus alternatives or exclusions. The path constraint is stated, which is useful operational guidance. Siblings like cad_draw, cad_edit, cad_view, and cad_workflow are not mentioned, so an agent must infer routing from the action verb list.

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

cad_drawA
Destructive

Atomically create 2D entities, annotations, hatches, dimensions, and block references. Angles are radians and coordinates use the current UCS unless otherwise stated.

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceNo
entitiesYes
visualModeNoControl AutoCAD screen updates; step presents each created entity
zoomToResultNo
coordinateSystemNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=true, so the mutation nature is known. The description adds the key behavioral trait of atomicity ('Atomically create'), which is not in the annotations. It does not, however, disclose other side effects such as revision increments, event emission, or failure rollback behavior, so it only partially enriches beyond the structured data.

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 single, tight sentence that front-loads the core purpose before adding the unit/coordinate note. Every clause earns its place: the atomicity, the entity types, and the critical geometric conventions. No filler or redundancy.

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?

Given the tool's high complexity—8 top-level parameters, 20+ entity variants, no output schema, and a 1000-item array limit—the description is far from complete. It omits preconditions like expectedDocumentId and expectedRevision, the meaning of visualMode options beyond the schema, and any error/rollback semantics. An agent would need to deep-dive into the schema and infer much of the usage context on its own.

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 only 38% schema description coverage, the description partially compensates by stating global conventions: 'Angles are radians and coordinates use the current UCS unless otherwise stated.' This is valuable for all coordinate/angle parameters. However, it does not explain the entities array's structure, defaults for visualMode, or the purpose of expectedRevision/expectedDocumentId beyond what the schema already provides, so it falls short of fully bridging the coverage gap.

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 states a specific verb ('create') and enumerates the resource types ('2D entities, annotations, hatches, dimensions, and block references'). It also adds the atomicity qualifier, which distinguishes it from siblings like cad_edit (which modifies) and cad_command (which executes arbitrary commands). This is clear and differentiates from alternative tools.

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?

Usage is implied: an agent would use this tool to create new drawing objects. However, there is no explicit guidance on when to prefer this over cad_edit for modifications, cad_undo for reverting, or cad_block for block-specific operations. No exclusions or alternative conditions are stated.

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

cad_editB
Destructive

Atomically edit entities selected by exact handles or a constrained filter. Supports properties, move, copy, rotate, scale, mirror, and erase.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
allowEmptyNo
operationsYes
visualModeNoControl AutoCAD screen updates; step presents each created entity
zoomToResultNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

B3.3/5.0
Behavior3/5

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

The description adds the behavioral trait 'Atomically' which is not in annotations, implying all operations succeed or none. However, it does not disclose critical details like the need for expectedDocumentId, expectedRevision, the effect of destructive operations beyond annotations, or what happens on failure. Given destructiveHint=true is already declared, the description adds minimal value beyond the atomicity note and doesn't mention error handling or rollback behavior.

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 single, dense sentence with no filler. It leads with the core action and scope, then lists operations. Every word serves a purpose, and it is appropriately concise for the amount of information it conveys.

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 highly complex tool (8 parameters, nested objects, no output schema) and the description is insufficient. It does not explain how to construct the filter (e.g., window point format, layer/type values), how to chain multiple operations, coordinate system assumptions, or what success returns. The lack of output schema means the description should cover result behavior, but it doesn't. For a tool this complex, the description is far from complete.

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

Parameters2/5

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

Schema description coverage is only 38%, so the description must compensate. It adds clarity that 'target' can be 'exact handles or a constrained filter' and enumerates the operation types, but it does not explain the structure of the target.filter (e.g., window coordinates, layer names), the meaning of from/to/base/angle/factor in operations, or the format of coordinates and angles. Most parameter semantics are left to the schema, which is sparse, so the description provides only marginal help.

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 a specific verb ('edit') and resource ('entities'), and lists the supported operations (properties, move, copy, rotate, scale, mirror, erase). It distinguishes itself from sibling tools like cad_draw (creation) and cad_inspect (reading) by focusing on modification. The phrase 'Atomically edit' adds a precise scope that is unique among the siblings.

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 such as cad_command or cad_undo. It does not mention that cad_command might be simpler for single commands, or that cad_edit is for batch/atomic edits. There are no exclusions or conditional recommendations, leaving the agent to infer usage solely from the tool name and siblings.

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

cad_eventsB
Read-onlyIdempotent

Read the bounded AutoCAD change journal after a sequence cursor. Includes interactive commands, entity changes, document changes, MCP operations, and presentation steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
typesNo
documentIdNo
afterSequenceNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds useful context about the bounded journal and sequence cursor, implying incremental reading. It does not describe return format or error behavior, but given the annotation coverage, a 3 is appropriate.

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?

A single, well-formed sentence that packs the core action, resource, and event categories without any fluff. The most important information is front-loaded, making it easy for an agent to parse quickly.

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?

With no output schema and four optional parameters, the description covers the tool's purpose but leaves the return structure and parameter interactions unexplained. For a read-only tool with safety annotations, this is adequate but not thorough enough to merit a 4.

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?

Schema description coverage is 0%, so the description must compensate. It this partially does: 'bounded' hints at the limit parameter, 'sequence cursor' maps to afterSequence, and the listed event types relate to the types filter. However, it does not explain documentId or the precise filtering semantics, so it only partially fills the gap.

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 a specific verb (Read) and resource (bounded AutoCAD change journal) plus the constraint 'after a sequence cursor'. It also enumerates event categories, which clearly distinguish it from other CAD inspection tools. However, it does not explicitly name sibling tools, so it stops short of a 5.

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?

There is no guidance on when to use this tool versus alternatives like cad_inspect or cad_status. The description explains what the tool does but does not mention any selection criteria or exclusions, leaving the agent to infer usage context.

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

cad_exportB
Destructive

Export the active drawing or a layout to DWG, DXF, PDF, DWF, SVG, PNG, or JPEG. The destination must be an absolute path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
formatYes
layoutNo
optionsNo
versionNo
overwriteNo
selectionNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already signal destructiveHint=trueants, and the description adds a useful constraint about absolute pathsaine. However, it does not disclose overwrite behavior, file-extension expectations, or side effects beyond the annotation's generic destructive warning.

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 compact and front-loaded with the verb and resource. It wastes no words, though it could have used the room to mention the omitted STL format or clarify overwrite behavior.

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?

There is no output schemaasiatic and 7 parameters, but the description only addresses two and leaves important invocation details (version enums, overwrite semantics, what the tool returns) unstated. This is not enough for an agent to call the tool correctly with advanced options.

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

Parameters2/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 full burden of parameter explanation. It covers format and path partially, but leaves layout, options, version, overwrite, and selection entirely unexplained—significant gaps given the schema has 7 parameters.

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 uses a specific verb ('Export') and resource ('active drawing or a layout') and lists the supported output formats. This clearly distinguishes cad_export from sibling tools like cad_draw or cad_inspect.

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 clear context by specifying the input resource and formats, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. The usage is implied rather than explicitly guided.

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

cad_inspectC
Read-onlyIdempotent

Read drawing metadata, system variables, layers, blocks, layouts, styles, or entities. Use handles returned here for precise edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
namesNoSystem variable names or named-object names
scopeYes
filterNo
offsetNo
handlesNo
includeExtentsNo
includeGeometryNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds one behavioral hint (handles are reusable for edits) but does not state pagination behavior (limit/offset), whether entity geometry is omitted by default, or what happens with large drawings. For a read tool with 8 params and nested filters, this is thin.

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?

Two short sentences, no filler, front-loaded with the verb and the enumerated resource scope. Efficient.

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?

For a tool with 8 parameters, a nested filter object, an enum scope, and 13% schema description coverage, the description is far too sparse. No output schema exists, so the description should describe what gets returned (metadata shape, pagination, handle usage), but does not. Only one workflow hint (handles for edits) is provided.

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

Parameters1/5

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

Schema description coverage is only 13%; six of eight parameters (limit, scope, filter, offset, handles, includeExtents, includeGeometry) have no description in the schema and the description contributes nothing about any parameter. The description mentions 'handles' and 'system variables' loosely but does not explain scope enum values, filter semantics, pagination, or the geometry flag. It fails to compensate for the low coverage.

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?

States a specific verb (Read) plus a concrete resource list of CAD drawing metadata (system variables, layers, blocks, layouts, styles, entities). Clear what the tool does, though it doesn't explicitly contrast with cad_edit/cad_document beyond the hint 'Use handles returned here for precise edits.'

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 second sentence implies a workflow: read here, then edit using returned handles. But no explicit when-to-use vs siblings (e.g., cad_document, cad_measure, cad_instances) is given. Implied usage only.

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

cad_instancesA
Read-onlyIdempotent

List running AutoCAD 2024 processes registered with this MCP server, including PID and active drawing. Use this before cad_connect when multiple AutoCAD windows are open.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds value beyond that by scoping the result to processes registered with this MCP server and disclosing the returned fields (PID, active drawing), which matters since no output schema exists.

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?

Two sentences, each earning its place: the first defines the output, the second defines when to call it. The purpose is front-loaded ahead of the usage rule.

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

Completeness5/5

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

For a parameterless read-only discovery tool with full annotation coverage, the description supplies everything needed: what is listed, what is returned, and when to prefer it over cad_connect. Nothing an agent needs to invoke it correctly is missing.

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 tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs, and it correctly implies no arguments are needed.

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?

States a specific verb (List) and resource (running AutoCAD 2024 processes) plus the scope constraint (registered with this MCP server) and returned fields (PID and active drawing). An agent can distinguish this discovery tool from cad_connect or cad_status without opening a schema.

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?

Explicitly names the trigger condition and the follow-up tool: 'Use this before cad_connect when multiple AutoCAD windows are open.' The when-to-use and the related alternative are both stated, leaving nothing to inference.

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

cad_layerC
Destructive

Create, update, delete, rename, set current, isolate, or restore drawing layers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
actionYes
newNameNo
propertiesNo
visualModeNoControl AutoCAD screen updates; step presents each created entity
zoomToResultNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds no behavioral detail beyond restating the action enum; it does not explain consequences such as deleting being irreversible, what isolate/restore does to visibility, or whether changes require a document/revision check.

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 single, front-loaded sentence with no filler or repetition. Every listed verb adds meaning, and the resource is immediately clear.

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

Completeness1/5

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

This is a complex, destructive tool with 9 parameters, nested objects, action-specific requirements, and no output schema. A one-line description is far from sufficient; an agent cannot determine per-action required parameters, return behavior, or error/side-effect expectations.

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

Parameters2/5

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

With only 33% schema description coverage, the description should compensate for undocumented parameters, but it does not. It only paraphrases the action enum and provides no meaning for properties, visualMode, zoomToResult, expectedRevision, highlightResults, or expectedDocumentId.

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 identifies the resource (drawing layers) and enumerates all key operations: create, update, delete, rename, set current, isolate, restore. It clearly distinguishes this tool from sibling tools like cad_draw and cad_edit by focusing exclusively on layer operations.

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 gives no guidance on when to use cad_layer versus alternatives, nor does it mention any exclusions, prerequisites, or conditions. Usage can only be inferred from the resource name 'layers,' which is not explicit enough to route an agent reliably.

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

cad_layoutB
Destructive

Create, rename, delete, activate, configure, or list paper-space layouts and their plot settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
actionYes
newNameNo
settingsNo
visualModeNoControl AutoCAD screen updates; step presents each created entity
zoomToResultNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

B3.3/5.0
Behavior3/5

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

Annotations declare destructiveHint=true, so the agent knows this tool can be destructive. The description adds the scope of behavior (managing layouts and plot settings) but does not disclose which actions are destructive (e.g., delete) versus safe (e.g., list), nor does it mention side effects like activating a layout changing the current view. It adds some context beyond annotations but not rich behavioral detail.

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 single sentence that front-loads the action list and resource. It is concise and every word earns its place. It could be slightly more structured by separating the action list from the resource, but it is appropriately sized and readable.

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?

Given the tool's complexity (9 parameters, nested settings object, 6 actions, destructive annotation, no output schema), the description is too thin. It does not explain the relationship between actions and required parameters (e.g., rename requires newName, configure requires settings), nor does it clarify the meaning of the concurrency-control parameters (expectedRevision, expectedDocumentId) or the visualMode options. An agent would need to open the schema and guess at parameter semantics, which is a significant gap.

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?

Schema description coverage is only 33%, so the description must compensate for undocumented parameters. The description mentions 'plot settings' which maps to the settings object, but it does not explain the meaning of parameters like expectedRevision, expectedDocumentId, visualMode, zoomToResult, or highlightResults. The schema provides descriptions for only a few parameters (visualMode, expectedRevision, expectedDocumentId), leaving the rest unexplained. The description adds minimal semantic value beyond the 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 a clear verb set ('Create, rename, delete, activate, configure, or list') and a specific resource ('paper-space layouts and their plot settings'). It distinguishes the tool's scope from siblings like cad_layer, cad_view, and cad_document, though it doesn't explicitly name a sibling alternative. The action enum in the schema reinforces the verb list, so the purpose is clear and specific.

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 by enumerating the supported actions, which gives an agent a sense of when to call this tool (whenever a layout operation is needed). However, it does not explicitly state when NOT to use it or mention alternatives like cad_view or cad_document for related but different operations. The context is clear but exclusions are absent.

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

cad_measureB
Read-onlyIdempotent

Measure selected entities: extents, curve length, planar area, 3D solid volume, centroid, and optional mass from density.

ParametersJSON Schema
NameRequiredDescriptionDefault
densityNoMass density in drawing mass-units per cubic drawing-unit
handlesYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds that mass is optional and derives from density, but it omits relevant behavior such as the 500-entity cap on handles and what happens with unsupported entity types.

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?

A single front-loaded sentence with the verb and then a compact enumeration of outputs; every clause carries information and nothing is redundant.

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, the description usefully enumerates the returned metrics, which is the key information an agent needs. It is nearly complete for a read-only measurement tool, with only minor gaps around units and selection prerequisites.

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?

Schema coverage is 50%: the density parameter is documented in the schema, and the description reinforces its purpose ('optional mass from density'), while handles is only self-evident as an identifier list. With half the parameters documented, the description neither compensates fully nor needs to, so a baseline 3 is appropriate.

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 gives a specific verb (measure) and resource (selected entities) and enumerates exactly what is computed: extents, curve length, planar area, 3D solid volume, centroid, and optional mass. It is clear and self-contained, though it does not explicitly differentiate itself from potentially overlapping siblings such as cad_inspect or cad_solid.

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?

There is no guidance on when to use this tool versus alternatives, and no prerequisites are stated. The phrase 'selected entities' implies the caller must first have a selection, but this is left to inference rather than stated, and no sibling tool is named or excluded.

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

cad_model_buildA
Destructive

Build or rebuild a deterministic parameterized solid model from a named recipe. Keep the recipe and returned liveHandles for later rebuilds.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipeYes
overridesNo
previousHandlesNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already signal destructive, non-read-only behavior; the description adds useful traits: deterministic reconstruction, the need to retain the recipe and returned liveHandles for later rebuilds, and the build/rebuild duality. There is no contradiction with 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?

Two sentences, with the core purpose front-loaded and the follow-up sentence adding only the key lifecycle instruction. No filler or schema repetition.

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 complex nested schema with no output schema, the description covers the high-level workflow (build/rebuild, keep recipe/handles) but leaves the roles of overrides and previousHandles implicit and does not describe the shape/format of the returned liveHandles. It is enough for a general understanding but not fully sufficient for correct invocation without inspecting the schema.

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?

Schema description coverage is 0%, so the description must compensate. It names the central 'recipe' object and introduces 'liveHandles' as a rebuild token, which helps infer the role of previousHandles, but it never explains overrides or the relationship between recipe.parameters and overrides. The property names in the schema carry most of the remaining meaning, so this is adequate but not rich.

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 names a specific action ('Build or rebuild'), a resource ('deterministic parameterized solid model'), and the input mechanism ('named recipe'), and adds a lifecycle cue about liveHandles. This clearly distinguishes it from sibling drawing/editing tools like cad_draw and cad_edit by anchoring it to recipe-driven model construction.

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: use for initial build or later rebuild from a recipe, and keep the recipe and returned liveHandles for subsequent calls. It does not explicitly name alternative tools or say when not to use it, so it falls short of a 5.

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

cad_solidB
Destructive

Create editable AutoCAD 3DSOLID primitives or apply boolean union, subtract, and intersect operations. Coordinates are WCS and one request is atomic.

ParametersJSON Schema
NameRequiredDescriptionDefault
axisNo
angleNo
layerNo
actionYes
heightNo
axisPointNo
directionNo
erasePathNo
operationNo
colorIndexNo
eraseToolsNo
pathHandleNo
primitivesNo
startAngleNo
visualModeNoControl AutoCAD screen updates; step presents each created entity
eraseSourceNo
toolHandlesNo
targetHandleNo
zoomToResultNo
profileHandleNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the description doesn't need to restate that. The description adds useful context: coordinates are WCS, one request is atomic, and it creates editable primitives. However, it doesn't disclose details like whether boolean operations modify existing entities destructively, what happens to source entities, or any side effects beyond the atomicity note. The description doesn't contradict 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 a single sentence that packs in the core purpose and two key behavioral facts (WCS, atomicity). It's concise and front-loaded with the main action. However, it could be slightly more structured by separating the create vs boolean operations, but it's still efficient.

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?

Given the tool has 23 parameters, no output schema, and only 13% schema description coverage, the description is far from complete. An agent would not know how to choose between action values, what handles are needed, how boolean operations reference existing solids, or what the expectedRevision/expectedDocumentId are for. The atomicity and WCS notes are helpful but insufficient for a tool this complex.

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

Parameters2/5

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

Schema description coverage is only 13%, so the description must compensate for the 23 parameters. It mentions 'boolean union, subtract, and intersect operations' which maps to the 'operation' enum, and 'primitives' is implied. But it doesn't explain key parameters like action, toolHandles, targetHandle, eraseSource, eraseTools, pathHandle, profileHandle, expectedRevision, expectedDocumentId, visualMode, zoomToResult, highlightResults, etc. The description adds minimal meaning beyond the 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 clearly states the tool creates editable AutoCAD 3DSOLID primitives and applies boolean operations (union, subtract, intersect). It names specific verbs and resources, and the mention of boolean operations helps distinguish it from generic cad_draw or cad_edit. However, it doesn't explicitly differentiate from cad_model_build or cad_edit, which could overlap in purpose.

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 for creating 3D solids and boolean operations, but it doesn't explicitly state when to use this tool versus alternatives like cad_draw, cad_model_build, or cad_edit. It mentions coordinates are WCS and one request is atomic, which gives some context, but no explicit when/when-not guidance or alternative tool names.

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

cad_statusA
Read-onlyIdempotent

Check the AutoCAD 2024 bridge, active document, product version, and current drawing state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and idempotency profile is fully carried by structured data. The description adds the concrete scope of what is inspected (bridge, document, version, drawing state), which is useful, but no return format, cost, or freshness details given there is no output schema.

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?

A single front-loaded sentence with a specific verb and a coherent list of inspected items. No filler, no repetition of the tool name.

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 zero-param read-only status tool with full annotation coverage, the description is close to complete, but with no output schema it should say something about what the check returns (e.g., connection state, version string, drawing name) so the agent knows whether the result answers its question. As written the enumerated items imply returns but don't confirm them.

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?

Zero parameters, so per the rubric the baseline is 4. Nothing to describe and nothing misleading; the description appropriately spends its budget on scope rather than params.

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?

States a specific verb ('Check') and enumerates the resources checked: bridge, active document, product version, drawing state. This is clear and specific. It doesn't explicitly differentiate from siblings like cad_instances or cad_capabilities, which could also report on the connection/product, but the enumerated scope is distinctive enough.

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?

No explicit when-to-use or when-not-to-use guidance. With zero parameters and a read-only status role, usage is somewhat implied (health/state check), but the agent gets no routing help against siblings like cad_capabilities for 'what can this product do' questions. Implied usage only.

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

cad_text_styleC
Destructive

List, create, update, set the current, or apply an AutoCAD text style. CJK text drawn without an explicit style is assigned a Unicode-capable style automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
actionYes
targetNo
xScaleNo
fontFileNo
verticalNo
visualModeNoControl AutoCAD screen updates; step presents each created entity
bigFontFileNo
obliqueAngleNo
zoomToResultNo
expectedRevisionNoDrawing revision returned by cad_status
highlightResultsNo
expectedDocumentIdNoDocument id returned by cad_status

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already indicate destructive behavior approximating, so the description does not need to restate that. The additional note about CJK text being assigned a Unicode-capable style is a useful behavioral detail. However, side effects of update or apply, such as modifying existing entities or changing current style state, are not disclosed.

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 compact and front-loaded with the main operations; the second sentence adds a genuinely useful behavioral detail. It is appropriately sized, though not formatted for easy parsing of the multiple action branches.

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

Completeness1/5

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

This is a 13-parameter tool with a nested target objectadian destructive annotations and no output schema, yet the description does not explain target semantics, action-specific requirements, or parameter interactions. An agent cannot reliably construct a correct call for actions like apply or update from this description alone.

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

Parameters2/5

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

Schema description coverage is only 23%, and the description does not explain the many undocumented parameters such as target, name, fontFile, vertical, zoomToResult, or expectedRevision. The description adds no parameter-level meaning to compensate for the low schema coverage.

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 names specific operations (list, create, update, set current, apply) on AutoCAD text styles, which clearly identifies the resource and verb. However, 'apply' remains somewhat ambiguous without more context, and the description does not explicitly differentiate it from sibling tools.

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 about when to use this tool instead of siblings, no prerequisites, and no explanation of how the different actions relate to one another. The CJK note implies a particular use case but does not help an agent decide between actions or alternatives.

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

cad_undoB
Destructive

Undo or redo completed MCP edit operations in the active drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNo
actionYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, so the agent knows this mutates state. The description adds little beyond 'completed MCP edit operations' scope. It does not state whether undo is limited by session history, whether it affects unsaved changes, or what happens at history boundaries.

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?

One tight sentence with the core purpose front-loaded. No waste, but minimal given the tool's mutating nature.

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?

A mutation tool with no output schema, no annotations covering step limits or history scope, and no parameter documentation. The description is only minimally complete for calling it correctly.

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

Parameters2/5

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

Schema coverage is 0% and the description names neither 'action' (undo/redo enum) nor 'steps'. The agent must open the schema to learn the required action enum and the 1-20 step bound. The description should have at least mentioned the action/steps shape.

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?

States a specific verb+resource: undo/redo of completed MCP edit operations in the active drawing. Clear scope, though does not differentiate from cad_edit or cad_command among siblings.

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?

Implies use for reverting or re-applying edits via 'completed MCP edit operations', giving some context, but no explicit when-to-use vs cad_edit, no exclusions, and the action parameter name is left for the schema to explain.

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

cad_viewC
Destructive

Zoom, pan, orbit, switch named views, regenerate, or capture a preview image.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
deltaNo
widthNo
actionYes
heightNo
windowNo
handlesNo
viewNameNo
overwriteNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already signal mutating behavior (readOnlyHint=false, destructiveHint=true), and the description adds little beyond listing operations. It does not explain side effects of regen, what 'capture' writes, or which state changes occur. No contradiction with annotations is present.

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 single, front-loaded sentence with no filler. It is concise and scannable, though its brevity comes at the cost of essential parameter-action mapping details.

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?

For a tool with 9 parameters, multiple distinct actions, and no output schema, the description is too thin. An agent cannot determine which parameters apply to which action, what capture returns, or what side effects regen and view changes have.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It hints at viewName for named views and width/height/path/overwrite for capture, but it does not map parameters to specific actions or explain geometric parameters like delta, window, or handles.

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 names the resource (view) and specific verbs: zoom, pan, orbit, switch named views, regen, capture. It doesn't explicitly distinguish from siblings like cad_inspect or cad_measure, but the action vocabulary makes its view-navigation scope reasonably clear.

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?

There is no guidance about when to use cad_view versus alternatives such as cad_inspect, cad_measure, or cad_draw. The action enum implies a view-manipulation tool, but no explicit context, exclusions, or alternative routing is provided.

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

cad_workflowA
DestructiveIdempotent

Preview or apply a bounded multi-step CAD change set with document preconditions, argument validation, optional post-change verification, idempotency, and compensating undo.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
stepsYes
visualModeNo
workflowIdYes
verificationNo
idempotencyKeyNo
expectedDocumentNo
rollbackOnFailureNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare idempotent and destructive behavior, and the description adds genuinely useful context: document preconditions, argument validation, optional post-change verification, and compensating undo. It does not contradict the annotations and adds behavioral meaning beyond the structured hints.

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 compact single sentence that front-loads the core action and resource. It lists many relevant behaviors without obvious filler, though the dense chain of clauses makes it slightly less scannable than ideal.

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?

For a complex tool with 8 parameters, nested verification/expectedDocument objects, and no output schema, the description is incomplete. It does not explain what preview returns, how verification failures behave, how expectedDocument matching works, or the operational meaning of rollbackOnFailure and visualMode.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter semantics. It vaguely maps to concepts like expectedDocument, verification, idempotencyKey, and rollbackOnFailure, but it does not explain mode values, visualMode, workflowId, or the steps structure. This is insufficient for 8 parameters with nested objects.

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 names a specific action ('Preview or apply') and a specific resource ('bounded multi-step CAD change set'), and further distinguishes it from sibling single-purpose CAD tools by mentioning preconditions, verification, idempotency, and undo. This clearly separates cad_workflow from cad_command, cad_edit, cad_undo, and similar siblings.

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?

The description gives clear usage context: this tool is for bounded multi-step change sets with preview/apply modes and compensating behavior, which implies when it should be chosen over direct editing tools. It does not explicitly state when not to use it or name alternatives, but it is not misleading.

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.

  1. 12 tool updatesv0.1.0
    • Changedcad_block5 fields changed
      • addedInput schema / properties / expectedDocumentId
        Added value: +{
        +  "description": "Document id returned by cad_status",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedRevision
        Added value: +{
        +  "description": "Drawing revision returned by cad_status",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / highlightResults
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / visualMode
        Added value: +{
        +  "description": "Control AutoCAD screen updates; step presents each created entity",
        +  "enum": [
        +    "silent",
        +    "batch",
        +    "step"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / zoomToResult
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcad_document1 field changed
      • addedInput schema / properties / password
        Added value: +{
        +  "description": "Password for an encrypted DWG or DWT; never returned in tool output",
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedcad_draw5 fields changed
      • changedInput schema / properties / entities / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "maximum": 256,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "end": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "layer": {
        -        "type": "string"
        -      },
        -      "linetype": {
        -        "type": "string"
        -      },
        -      "start": {
        -        "anyOf": [
        -          {
        -            "items": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "number"
        -              }
        -            ],
        -            "maxItems": 2,
        -            "minItems": 2,
        -            "type": "array"
        -          },
        -          {
        -            "items": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "number"
        -              }
        -            ],
        -            "maxItems": 3,
        -            "minItems": 3,
        -            "type": "array"
        -          }
        -        ]
        -      },
        -      "type": {
        -        "const": "line",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "start",
        -      "end"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "closed": {
        -        "type": "boolean"
        -      },
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "points": {
        -        "items": {
        -          "$ref": "#/properties/entities/items/anyOf/0/properties/start/anyOf/0"
        -        },
        -        "minItems": 2,
        -        "type": "array"
        -      },
        -      "type": {
        -        "const": "polyline",
        -        "type": "string"
        -      },
        -      "width": {
        -        "minimum": 0,
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "points"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "center": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "radius": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "circle",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "center",
        -      "radius"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "center": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "endAngle": {
        -        "type": "number"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "radius": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "startAngle": {
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "arc",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "center",
        -      "radius",
        -      "startAngle",
        -      "endAngle"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "center": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "endParameter": {
        -        "type": "number"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "majorAxis": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start/anyOf/1"
        -      },
        -      "radiusRatio": {
        -        "exclusiveMinimum": 0,
        -        "maximum": 1,
        -        "type": "number"
        -      },
        -      "startParameter": {
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "ellipse",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "center",
        -      "majorAxis",
        -      "radiusRatio"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "position": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "type": {
        -        "const": "point",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "position"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "height": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "position": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "rotation": {
        -        "type": "number"
        -      },
        -      "style": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "text",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "position",
        -      "text",
        -      "height"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "height": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "position": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "rotation": {
        -        "type": "number"
        -      },
        -      "style": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "mtext",
        -        "type": "string"
        -      },
        -      "width": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "position",
        -      "text",
        -      "height",
        -      "width"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "angle": {
        -        "type": "number"
        -      },
        -      "associative": {
        -        "type": "boolean"
        -      },
        -      "boundaryHandles": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "pattern": {
        -        "default": "SOLID",
        -        "type": "string"
        -      },
        -      "scale": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "hatch",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "boundaryHandles"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "attributes": {
        -        "additionalProperties": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "insertionPoint": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "rotation": {
        -        "type": "number"
        -      },
        -      "scale": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start/anyOf/1"
        -      },
        -      "type": {
        -        "const": "blockReference",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "name",
        -      "insertionPoint"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "dimensionLine": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "first": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "second": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "style": {
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "alignedDimension",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "first",
        -      "second",
        -      "dimensionLine"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        -      },
        -      "dimensionLine": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "first": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "layer": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        -      },
        -      "linetype": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        -      },
        -      "rotation": {
        -        "type": "number"
        -      },
        -      "second": {
        -        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        -      },
        -      "style": {
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "rotatedDimension",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "first",
        -      "second",
        -      "dimensionLine",
        -      "rotation"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "end": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "linetype": {
        +        "type": "string"
        +      },
        +      "linetypeScale": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "lineweight": {
        +        "type": "integer"
        +      },
        +      "start": {
        +        "anyOf": [
        +          {
        +            "items": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "number"
        +              }
        +            ],
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "items": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "number"
        +              }
        +            ],
        +            "maxItems": 3,
        +            "minItems": 3,
        +            "type": "array"
        +          }
        +        ]
        +      },
        +      "type": {
        +        "const": "line",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "start",
        +      "end"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "closed": {
        +        "type": "boolean"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "points": {
        +        "items": {
        +          "$ref": "#/properties/entities/items/anyOf/0/properties/start/anyOf/0"
        +        },
        +        "minItems": 2,
        +        "type": "array"
        +      },
        +      "type": {
        +        "const": "polyline",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      },
        +      "width": {
        +        "minimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "points"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "closed": {
        +        "type": "boolean"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "points": {
        +        "items": {
        +          "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +        },
        +        "minItems": 2,
        +        "type": "array"
        +      },
        +      "type": {
        +        "const": "polyline3d",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "points"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "degree": {
        +        "maximum": 25,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "fitPoints": {
        +        "items": {
        +          "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +        },
        +        "minItems": 2,
        +        "type": "array"
        +      },
        +      "fitTolerance": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "type": {
        +        "const": "spline",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "fitPoints"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "basePoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "throughPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "type": {
        +        "const": "ray",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "basePoint",
        +      "throughPoint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "basePoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "throughPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "type": {
        +        "const": "xline",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "basePoint",
        +      "throughPoint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "center": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "radius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "circle",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "radius"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "center": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "endAngle": {
        +        "type": "number"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "radius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "startAngle": {
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "arc",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "radius",
        +      "startAngle",
        +      "endAngle"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "center": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "endParameter": {
        +        "type": "number"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "majorAxis": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start/anyOf/1"
        +      },
        +      "radiusRatio": {
        +        "exclusiveMinimum": 0,
        +        "maximum": 1,
        +        "type": "number"
        +      },
        +      "startParameter": {
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "ellipse",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "majorAxis",
        +      "radiusRatio"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "position": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "type": {
        +        "const": "point",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "position"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "position": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "rotation": {
        +        "type": "number"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "text": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "text",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "position",
        +      "text",
        +      "height"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "position": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "rotation": {
        +        "type": "number"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "text": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "mtext",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      },
        +      "width": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "position",
        +      "text",
        +      "height",
        +      "width"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "angle": {
        +        "type": "number"
        +      },
        +      "associative": {
        +        "type": "boolean"
        +      },
        +      "boundaryHandles": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "pattern": {
        +        "default": "SOLID",
        +        "type": "string"
        +      },
        +      "scale": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "hatch",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "boundaryHandles"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "attributes": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "insertionPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "rotation": {
        +        "type": "number"
        +      },
        +      "scale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start/anyOf/1"
        +      },
        +      "type": {
        +        "const": "blockReference",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "name",
        +      "insertionPoint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "hasArrowHead": {
        +        "type": "boolean"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "points": {
        +        "items": {
        +          "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +        },
        +        "minItems": 2,
        +        "type": "array"
        +      },
        +      "type": {
        +        "const": "leader",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "points"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "columnWidth": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "position": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "rowHeight": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "rows": {
        +        "items": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "minItems": 1,
        +          "type": "array"
        +        },
        +        "maxItems": 200,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "textHeight": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "table",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "position",
        +      "rows"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "dimensionLine": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "dimensionText": {
        +        "type": "string"
        +      },
        +      "first": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "second": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "alignedDimension",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "first",
        +      "second",
        +      "dimensionLine"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "dimensionLine": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "dimensionText": {
        +        "type": "string"
        +      },
        +      "first": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "rotation": {
        +        "type": "number"
        +      },
        +      "second": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "rotatedDimension",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "first",
        +      "second",
        +      "dimensionLine",
        +      "rotation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "center": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "chordPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "dimensionText": {
        +        "type": "string"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "leaderLength": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "radialDimension",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "chordPoint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "chordPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "dimensionText": {
        +        "type": "string"
        +      },
        +      "farChordPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "leaderLength": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "diametricDimension",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "chordPoint",
        +      "farChordPoint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "arcPoint": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "colorIndex": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/colorIndex"
        +      },
        +      "dimensionText": {
        +        "type": "string"
        +      },
        +      "layer": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/layer"
        +      },
        +      "line1End": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "line1Start": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "line2End": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "line2Start": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/start"
        +      },
        +      "linetype": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetype"
        +      },
        +      "linetypeScale": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/linetypeScale"
        +      },
        +      "lineweight": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/lineweight"
        +      },
        +      "style": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "const": "angularDimension2Line",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "$ref": "#/properties/entities/items/anyOf/0/properties/visible"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "line1Start",
        +      "line1End",
        +      "line2Start",
        +      "line2End",
        +      "arcPoint"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / expectedDocumentId
        Added value: +{
        +  "description": "Document id returned by cad_status",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedRevision
        Added value: +{
        +  "description": "Drawing revision returned by cad_status",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / highlightResults
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / visualMode
        Added value: +{
        +  "description": "Control AutoCAD screen updates; step presents each created entity",
        +  "enum": [
        +    "silent",
        +    "batch",
        +    "step"
        +  ],
        +  "type": "string"
        +}
    • Changedcad_edit6 fields changed
      • addedInput schema / properties / expectedDocumentId
        Added value: +{
        +  "description": "Document id returned by cad_status",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedRevision
        Added value: +{
        +  "description": "Drawing revision returned by cad_status",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / highlightResults
        Added value: +{
        +  "type": "boolean"
        +}
      • changedInput schema / properties / operations / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "maximum": 256,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "layer": {
        -        "type": "string"
        -      },
        -      "linetype": {
        -        "type": "string"
        -      },
        -      "lineweight": {
        -        "type": "number"
        -      },
        -      "op": {
        -        "const": "setProperties",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "op"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "from": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      },
        -      "op": {
        -        "const": "move",
        -        "type": "string"
        -      },
        -      "to": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      }
        -    },
        -    "required": [
        -      "op",
        -      "from",
        -      "to"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "from": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      },
        -      "op": {
        -        "const": "copy",
        -        "type": "string"
        -      },
        -      "to": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      }
        -    },
        -    "required": [
        -      "op",
        -      "from",
        -      "to"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "angle": {
        -        "type": "number"
        -      },
        -      "base": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      },
        -      "op": {
        -        "const": "rotate",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "op",
        -      "base",
        -      "angle"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "base": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      },
        -      "factor": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "op": {
        -        "const": "scale",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "op",
        -      "base",
        -      "factor"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "eraseSource": {
        -        "type": "boolean"
        -      },
        -      "first": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      },
        -      "op": {
        -        "const": "mirror",
        -        "type": "string"
        -      },
        -      "second": {
        -        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        -      }
        -    },
        -    "required": [
        -      "op",
        -      "first",
        -      "second"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "op": {
        -        "const": "erase",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "op"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "linetype": {
        +        "type": "string"
        +      },
        +      "linetypeScale": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "lineweight": {
        +        "type": "integer"
        +      },
        +      "op": {
        +        "const": "setProperties",
        +        "type": "string"
        +      },
        +      "visible": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "op"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "from": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      },
        +      "op": {
        +        "const": "move",
        +        "type": "string"
        +      },
        +      "to": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      }
        +    },
        +    "required": [
        +      "op",
        +      "from",
        +      "to"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "from": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      },
        +      "op": {
        +        "const": "copy",
        +        "type": "string"
        +      },
        +      "to": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      }
        +    },
        +    "required": [
        +      "op",
        +      "from",
        +      "to"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "angle": {
        +        "type": "number"
        +      },
        +      "base": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      },
        +      "op": {
        +        "const": "rotate",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "op",
        +      "base",
        +      "angle"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "base": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      },
        +      "factor": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "op": {
        +        "const": "scale",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "op",
        +      "base",
        +      "factor"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "eraseSource": {
        +        "type": "boolean"
        +      },
        +      "first": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      },
        +      "op": {
        +        "const": "mirror",
        +        "type": "string"
        +      },
        +      "second": {
        +        "$ref": "#/properties/target/properties/filter/properties/window/items/0"
        +      }
        +    },
        +    "required": [
        +      "op",
        +      "first",
        +      "second"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "op": {
        +        "const": "erase",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "op"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / visualMode
        Added value: +{
        +  "description": "Control AutoCAD screen updates; step presents each created entity",
        +  "enum": [
        +    "silent",
        +    "batch",
        +    "step"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / zoomToResult
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedcad_events
    • Changedcad_layer5 fields changed
      • addedInput schema / properties / expectedDocumentId
        Added value: +{
        +  "description": "Document id returned by cad_status",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedRevision
        Added value: +{
        +  "description": "Drawing revision returned by cad_status",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / highlightResults
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / visualMode
        Added value: +{
        +  "description": "Control AutoCAD screen updates; step presents each created entity",
        +  "enum": [
        +    "silent",
        +    "batch",
        +    "step"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / zoomToResult
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcad_layout5 fields changed
      • addedInput schema / properties / expectedDocumentId
        Added value: +{
        +  "description": "Document id returned by cad_status",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedRevision
        Added value: +{
        +  "description": "Drawing revision returned by cad_status",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / highlightResults
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / visualMode
        Added value: +{
        +  "description": "Control AutoCAD screen updates; step presents each created entity",
        +  "enum": [
        +    "silent",
        +    "batch",
        +    "step"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / zoomToResult
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedcad_model_build
    • Changedcad_solid19 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "create",
        -  "boolean"
        -]New value: +[
        +  "create",
        +  "boolean",
        +  "extrude",
        +  "revolve",
        +  "sweep"
        +]
      • addedInput schema / properties / angle
        Added value: +{
        +  "type": "number"
        +}
      • addedInput schema / properties / axis
        Added value: +{
        +  "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        +}
      • addedInput schema / properties / axisPoint
        Added value: +{
        +  "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +}
      • addedInput schema / properties / colorIndex
        Added value: +{
        +  "maximum": 256,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / direction
        Added value: +{
        +  "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        +}
      • addedInput schema / properties / erasePath
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / eraseSource
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / expectedDocumentId
        Added value: +{
        +  "description": "Document id returned by cad_status",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedRevision
        Added value: +{
        +  "description": "Drawing revision returned by cad_status",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / height
        Added value: +{
        +  "type": "number"
        +}
      • addedInput schema / properties / highlightResults
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / layer
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / pathHandle
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / primitives / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "colorIndex": {
        -        "maximum": 256,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "height": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "layer": {
        -        "type": "string"
        -      },
        -      "length": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "origin": {
        -        "anyOf": [
        -          {
        -            "items": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "number"
        -              }
        -            ],
        -            "maxItems": 2,
        -            "minItems": 2,
        -            "type": "array"
        -          },
        -          {
        -            "items": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "number"
        -              }
        -            ],
        -            "maxItems": 3,
        -            "minItems": 3,
        -            "type": "array"
        -          }
        -        ]
        -      },
        -      "type": {
        -        "const": "box",
        -        "type": "string"
        -      },
        -      "width": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "origin",
        -      "length",
        -      "width",
        -      "height"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "center": {
        -        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        -      },
        -      "colorIndex": {
        -        "maximum": 256,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "layer": {
        -        "type": "string"
        -      },
        -      "radius": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "sphere",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "center",
        -      "radius"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "axis": {
        -        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        -      },
        -      "center": {
        -        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        -      },
        -      "colorIndex": {
        -        "maximum": 256,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "height": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "layer": {
        -        "type": "string"
        -      },
        -      "radius": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "cylinder",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "center",
        -      "radius",
        -      "height"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "axis": {
        -        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        -      },
        -      "baseRadius": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "center": {
        -        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        -      },
        -      "colorIndex": {
        -        "maximum": 256,
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "height": {
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "layer": {
        -        "type": "string"
        -      },
        -      "topRadius": {
        -        "minimum": 0,
        -        "type": "number"
        -      },
        -      "type": {
        -        "const": "cone",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "center",
        -      "baseRadius",
        -      "topRadius",
        -      "height"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "length": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "origin": {
        +        "anyOf": [
        +          {
        +            "items": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "number"
        +              }
        +            ],
        +            "maxItems": 2,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          {
        +            "items": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "number"
        +              }
        +            ],
        +            "maxItems": 3,
        +            "minItems": 3,
        +            "type": "array"
        +          }
        +        ]
        +      },
        +      "type": {
        +        "const": "box",
        +        "type": "string"
        +      },
        +      "width": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "origin",
        +      "length",
        +      "width",
        +      "height"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "center": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +      },
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "radius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "sphere",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "radius"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "axis": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        +      },
        +      "center": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +      },
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "radius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "cylinder",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "radius",
        +      "height"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "axis": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        +      },
        +      "baseRadius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "center": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +      },
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "topRadius": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "cone",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "baseRadius",
        +      "topRadius",
        +      "height"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "axis": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        +      },
        +      "center": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +      },
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "majorRadius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "minorRadius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "torus",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "majorRadius",
        +      "minorRadius"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "length": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "origin": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +      },
        +      "type": {
        +        "const": "wedge",
        +        "type": "string"
        +      },
        +      "width": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "origin",
        +      "length",
        +      "width",
        +      "height"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "axis": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin/anyOf/1"
        +      },
        +      "baseRadius": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "center": {
        +        "$ref": "#/properties/primitives/items/anyOf/0/properties/origin"
        +      },
        +      "colorIndex": {
        +        "maximum": 256,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "height": {
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "layer": {
        +        "type": "string"
        +      },
        +      "sides": {
        +        "maximum": 64,
        +        "minimum": 3,
        +        "type": "integer"
        +      },
        +      "topRadius": {
        +        "minimum": 0,
        +        "type": "number"
        +      },
        +      "type": {
        +        "const": "pyramid",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "center",
        +      "sides",
        +      "baseRadius",
        +      "height"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / profileHandle
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / startAngle
        Added value: +{
        +  "type": "number"
        +}
      • addedInput schema / properties / visualMode
        Added value: +{
        +  "description": "Control AutoCAD screen updates; step presents each created entity",
        +  "enum": [
        +    "silent",
        +    "batch",
        +    "step"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / zoomToResult
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedcad_text_style
    • Changedcad_view1 field changed
      • addedInput schema / properties / overwrite
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedcad_workflow
  2. 17 tool updatesv0.0.3
    • First observedcad_block
    • First observedcad_capabilities
    • First observedcad_command
    • First observedcad_connect
    • First observedcad_document
    • First observedcad_draw
    • First observedcad_edit
    • First observedcad_export
    • First observedcad_inspect
    • First observedcad_instances
    • First observedcad_layer
    • First observedcad_layout
    • First observedcad_measure
    • First observedcad_solid
    • First observedcad_status
    • First observedcad_undo
    • First observedcad_view

TDQS

B3.2/5.0

Scored across 21 tools

Disambiguation4/5

Each tool is scoped to a distinct capability area such as documents, layers, blocks, solids, layouts, view, or export, so an agent can usually choose correctly. There are minor boundary overlaps—cad_draw can insert block references while cad_block also inserts blocks, and cad_solid vs cad_model_build both create solids—but the descriptions clarify the intended workflows.

Naming Consistency3/5

All names share the cad_ prefix and use lowercase snake_case, which is a clear namespace. However, the suffix convention is mixed: some tools are verbs (cad_connect, cad_draw, cad_export), some are nouns (cad_layer, cad_document, cad_status), and some are noun+verb compounds (cad_model_build, cad_text_style), so it does not follow a single verb_noun pattern.

Tool Count3/5

21 tools places this server in the heavy 16-25 range for an agent-facing MCP surface. The broad AutoCAD domain makes the size defensible, but the tool set is larger than ideal and some adjacent features could reasonably be consolidated.

Completeness4/5

The surface covers the main CAD lifecycle: document management, entity creation/inspection/editing/measurement, 3D solids, layers, blocks, text styles, layouts, export, undo, and process/event handling. Minor gaps include no explicit print/plot execution and no direct dimension-style management, but core workflows have no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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
    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
    A
    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.
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural-language control of a running AutoCAD 2026 session via MCP, exposing tools for drawing management, geometry creation, editing, and inspection using millimeter and degree units.
    2
    Apache 2.0