Skip to main content
Glama
cafedaily

AutoCAD 2024 MCP

by cafedaily

cad_edit

Destructive

Modify AutoCAD entities by exact handles or filters. Apply property changes, move, copy, rotate, scale, mirror, or erase in one atomic operation.

Instructions

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

Input Schema

TableJSON 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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.1.0
    • 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"
      +}
  2. First observedv0.0.3

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.