Skip to main content
Glama
U-C4N
by U-C4N

AutoCAD MCP Pro

Production-grade AutoCAD automation for AI agents. Live through COM on Windows, or headless through ezdxf anywhere — one typed contract, two engines.

CI PyPI Downloads Python 3.11+ License: MIT

Install · What's new · Tools · Engines · Evidence · Limits · Config · Changelog

Not a mockup. Every line on this sheet was drawn by the tools this server exposes — ISO layers, involute gear geometry, DIN 6885 keyway, section A-A, ISO 129 dimensions, an ISO 286 H7 bore fit, ISO 7200 title block — then rendered headlessly by view_screenshot. drawing_critique returns 0 issues on it. Rebuild it with python scripts/render_readme_showcase.py.

v1.6 release snapshot: 247 tools · 8 resources · 5 prompt templates · 4992 collected tests. 247 is the registered count; a default install advertises 242 over tools/list, because ENABLE_3D is unset. system_about is the runtime authority.

What's new in 1.6

Five tracks of one roadmap, 154 → 247 registered tools. Each track has its own design spec, correctness checks that can fail, and a live AutoCAD 2026 run of its COM paths recorded in the changelog.

Track

What it adds

Pack

P&ID — drafter and reader

43 ISO 10628-2 / ISA-5.1 symbols as real blocks with ports and TAG attributes, port-to-port lines with ISA-5.1 classes and line numbers, pid_graph reading any P&ID back with a confidence per node, instrument index, line list, equipment list, pid_from_spec for a whole sheet in one transaction

pid

The AutoCAD environment

ISO-25 / ANSI dimension styles, text and leader styles, drawing_apply_standard, ISO 216 / ANSI page setups checked against the plotted PDF's own /MediaBox, five bundled templates, several open documents headlessly, portable layer states, named views, UCS, a 90-entry system-variable catalogue; on a live seat, preferences, launch and operator prompts

core, settings

Mechanical parts and the sheet

one part model and one view engine (front, side, top, section and detail views with hidden lines, cut faces and ISO 129 dimensions), ISO fasteners and bearings as blocks with attributes, ISO 21920-1 surface texture, ISO 2553 welds, ISO 5457 frames A4–A0, ISO 7200 title blocks, an ISO 7573 parts list read off the drawing with linked ISO 6433 balloons, xrefs, images, real .dwg

mech, core

Architecture

walls with hosted doors and windows: one engine resolves L / T / X junctions and cuts the openings. Room areas are measured from the faces the walls enclose, and rooms are read back from any plan. Door / window / room schedules are real tables; labels in English or Turkish

arch

Understanding and takeoffs

drawing_understand reads a drawing somebody else made in one call. Also drawing_scale_check, drawing_diff and drawing_topology_check. pipe_takeoff / cable_takeoff take the topology from the P&ID and the lengths from the layout into a Turkish, English or Russian workbook

core, plant

TOOL_PACKS keeps a client from paying for the tracks it does not use (idle cost below).

A mechanical sheet, gated. The mech_assembly benchmark sheet: a hub drawn from its part model with a full section and chain dimensions, a flange with its bolt-circle end view, two ISO 4014 M12×60 bolts and ISO 4032 nuts inserted as blocks, the ISO 7573 parts list read off the drawing, balloons linked to its rows, an ISO 5457 frame and an ISO 7200 title block. drawing_critique(focus=None) returns 0 issues and the finalize score is 100. Rebuild it with python scripts/render_readme_mech.py.

A floor plan whose areas nobody typed. arch_plan_from_spec's example, drawn in one transaction: a 250 mm brick ring split by a 100 mm AAC wall, two doors, two windows, a straight stair and exterior dimension chains at 1:50. The rooms measure 27.74 and 21.99 m², read from the faces the walls enclose, and the door, window and room schedules are read off the drawing. drawing_critique(focus=None) returns 0 issues. Rebuild it with python scripts/render_readme_arch.py.

The same server as a P&ID drafter. pid_from_spec placed five catalogue symbols as real blocks with TAG attributes and named ports and routed four port-to-port lines with ISA-5.1 classes and line numbers, all in one transaction. Then pid_graph read the sheet back: 5 nodes, 4 edges, 0 dangling ends, confidence_min 1.0. Rebuild it with python scripts/render_readme_pid.py.

The catalogue, authored in code. 43 ISO 10628-2 / ISA-5.1 symbols: 11 valve bodies × 6 actuators, 6 rotating machines, 4 heat exchangers, 6 parametric vessels, 7 inline items, the instrument bubble in 4 types × 5 locations, 5 line markers and 3 connectors. Every one was placed through pid_symbol_insert's own path. Rebuild it with python scripts/render_pid_catalog.py.

Related MCP server: autocad-mcp

Why this exists

A big MCP server is expensive to be connected to. The full catalog costs a client 83,921 tokens before it has asked for anything. Discovery mode replaces it with two tools and costs 356.

A drafter searches for FILLET, not entity_fillet. Before the corpus, those command names appeared in no tool name or description. That was df = 0 against a stock index: the tools were not ranked badly, they were absent. The fix was data: an authored corpus of 206 AutoCAD command names and 1439 synonym phrases covering all 247 tools. A test refuses to let a tool exist without one.

Advertised surface

Tools seen

Idle cost

TOOL_PROFILE=full (default)

242

83,921 tokens

TOOL_PACKS=core,settings (full profile)

205

63,890 tokens

TOOL_PACKS=core,mech (full profile)

197

64,836 tokens

TOOL_PACKS=core,arch (full profile)

195

63,549 tokens

TOOL_PACKS=core,pid (full profile)

192

60,844 tokens

TOOL_PACKS=core,plant (full profile)

185

59,290 tokens

TOOL_PACKS=core (full profile)

183

57,122 tokens

TOOL_PROFILE=lean

65

22,661 tokens

DISCOVERY_MODE=search

2

356 tokens

NOTE

These are offline ratio estimates, not tokenizer counts, and they are theuncached cost: prompt caching amortises the idle term. benchmarks/token_suite.py --tokenizer anthropic counts for real.

Install

pip install autocad-mcp-pro     # or: uvx autocad-mcp-pro
autocad-mcp                     # stdio MCP server, backend auto-selected
AUTOCAD_MCP_BACKEND=ezdxf autocad-mcp    # portable DXF engine, no AutoCAD needed
AUTOCAD_MCP_BACKEND=com   autocad-mcp    # live AutoCAD (needs the [com] extra)

Extra

Pulls in

For

(none)

fastmcp, ezdxf, pydantic

Headless DXF on any OS — no rendering

[com]

pywin32, Pillow

Live AutoCAD control + window capture

[pdf]

matplotlib

PDF export and headless PNG, any platform

[office]

openpyxl

XLSX workbooks (takeoffs, data_extract); CSV is always written

[full]

everything above

Development and CI

NOTE

The bare installcannot draw pixels — ezdxf.addons.drawing imports Pillow unconditionally, so every render path needs it. Add [pdf] for images on Linux or macOS.

{
  "mcpServers": {
    "autocad": {
      "command": "autocad-mcp",
      "env": {
        "AUTOCAD_MCP_BACKEND": "auto",
        "ALLOWED_PATHS": "C:\\Users\\you\\Documents\\AutoCAD",
        "TOOL_PROFILE": "full",
        "TOOL_PACKS": "all",
        "DISCOVERY_MODE": "off"
      }
    }
  }
}

It works with Claude Desktop, Cursor, or any stdio MCP host. For HTTP, run autocad-mcp --transport http --port 8000. It binds loopback only, unless remote HTTP is explicitly enabled and a bearer token is set.

What you get

Area

What it does

Drawing lifecycle

create, open, save, export DXF/PDF, audit (repairs), purge, undo/redo

Geometry

lines, arcs, polylines, splines, hatches, trim/extend/fillet/chamfer, handle-preserving edits

Annotation

ISO 129 toleranced dimensions, ISO 286 fits (fit="H7", interference shafts r/s/t/u included), TABLE, MLEADER, GD&T frames and datums (ISO 1101)

Engineering generators

involute gears (front + section A-A), DIN 6885 keyed bores, ISO A3 title block

Mechanical parts

one part model (segments or outline + typed features) and one view engine: front / side / top / section / detail with hidden lines, ISO 128-50 cut faces and ISO 129 dimensions. ISO 4014/4017/4032/7089/4762 fasteners and ISO 15 bearings insert as real blocks with attributes. DIN 471/472, DIN 509, DIN 332 and ISO 3601-2 features have their drawing code, but their tables ship empty in 1.6 (see limits). Also ISO 21920-1 surface texture, ISO 2553 welds and ISO 128-40 section lines

Sheet & delivery

ISO 5457 frames A4-A0 with zones and trim marks, ISO 7200 title blocks for every size, revision blocks with clouds, ISO 7573 parts lists with ISO 6433 balloons linked by XDATA, CSV/XLSX extraction, xrefs and images on both engines, real .dwg on a live seat

Architecture

one plan model (walls with hosted doors and windows) and one engine that resolves L / T / X junctions, cuts openings and draws poché by material. Room areas are measured from the faces the walls enclose, never typed, and rooms are read back from any plan with a confidence. Door / window / room schedules are real TABLEs. Also a furniture and sanitary catalogue at nominal sizes, a structural grid, north arrow, section / level / elevation marks, exterior dimension chains, and English or Turkish labels (lang="tr", decimal comma)

Understanding & takeoffs

drawing_understand reads a drawing somebody else made in one call: declared vs inferred units, robust extents and the outlier behind them, plan copies, each layer's discipline and service in five languages, tags, rooms. drawing_scale_check says whether a P&ID is to scale against its layout. pipe_takeoff / cable_takeoff take the topology from the P&ID and the lengths from the layout (rectilinear MST, statuses A/B/C, power never invented) into a Turkish / English / Russian workbook. drawing_diff compares revisions; drawing_topology_check finds dangling ends, near misses and crossings

P&ID

catalogue blocks with ports and tags (ISO 10628-2 / ISA-5.1), port-to-port lines with ISA-5.1 classes and line numbers, pid_graph reads any P&ID back with confidence, instrument index / line list / equipment list, pid_from_spec one-call sheets

Styles & standards

ISO-25 / ANSI dimension styles, ISOCP / ROMANS text styles, ISO / ANSI leader styles from authored presets; drawing_apply_standard("iso") sets all of it plus units and the mech layers in one call; changed reports only what moved

Discovery

search_tools ranked over an AutoCAD command and synonym corpus — FILLET, BPOLY, QSELECT, WBLOCK, OVERKILL, CHSPACE each rank #1 of the 242-tool advertised catalog

Batching

cad_batch runs a step list in one round trip; fields= projects 11 result-heavy tools

Paper space

tab lifecycle, viewports, entity_change_space (CHSPACE), drawing_export_pdf(layout=…)

Page setup & templates

ISO 216 / ANSI Y14.1 sheets, ctb catalog, page_setup_apply on both engines, and batch_plot with every sheet size read back from its PDF's /MediaBox. Five bundled templates, built by the server's own tools and pinned reproducible: drawing_new(template="iso_a3_mech"), iso_a1_arch, iso_a3_pid, ansi_b_mech, ansi_d_arch. Save any drawing as a template (.dwt on live AutoCAD; dwt_write refused headlessly)

Environment

several open documents headlessly, portable layer states (ACADMCP_LAYERSTATES XRECORDs — in the file, not in AutoCAD's Layer States Manager), named views, UCS (tool coordinates stay WCS), a system-variable catalog with ranges, document properties. On a live seat: launch/attach, preferences, and an operator prompt / pick / select, where ESC is cancelled, not an error

Selection

window vs crossing stated back to the caller; a polygon tested against its own shape, not its bounding box

Boundaries

boundary_trace (BOUNDARY/BPOLY) chains loose edges into one closed polyline, arcs kept as bulges (headless)

Measurement

analysis_measure_entity measures what is in the drawing, by handle

Hatch depth

gradients, in-place edits, typed edge boundaries (headless), island styles

Annotation objects

WIPEOUT, REVCLOUD, MTEXT background masks (headless), text find/replace

3D solids

solid_box/cylinder/extrude/revolve/boolean on live AutoCAD (ENABLE_3D=true)

Quality loop

drawing_preflight → drawing_plan → drawing_critique → drawing_refine → drawing_finalize (0–100 score); 18 domain critique focuses (P&ID 6, mechanical 6, architecture 3, topology 3), each silent on a drawing outside its domain

Delivery

drawing_deliver: DXF/PDF/PNG + SHA-256 manifest + reopen-parity checks

247 tools in 28 groups. TOOL_PACKS=core hides these from a client that needs none of them: the nine pid_* tools, the 22 environment tools, the 14 mechanical tools, the 12 architectural tools and the two plant takeoffs. TOOL_PACKS=core,mech keeps the mechanical ones, TOOL_PACKS=core,arch the architectural ones, and TOOL_PACKS=core,plant the takeoffs. There are also 8 resources that cost nothing in the tool budget (autocad://drawing/info, layers, blocks, entities/stats, entities/{layer_name}, system/status, pid/symbols, standards/isa51) and 5 prompt templates.

Two rules worth knowing.

  • Every coordinate in and out of a tool is WCS on both engines. The one exception is TEXT rotation, which stays in the entity frame: a mirrored TEXT is mirror-imaged, and no scalar angle expresses that.

  • Never read vertices back and shoelace them. That silently loses 28.2% of the area on a semicircular edge. analysis_measure_entity(handle) reads the real geometry and states its own accuracy.

The two engines

One contract across 23 modules in backends/contracts/. @capability(key, reason=…) supplies a default that refuses, and a test holds both backends' capability key sets equal. There are 41 capability keys. Read system_capabilities at runtime rather than trusting the table: several depend on what the machine has installed (matplotlib, openpyxl, the ODA File Converter).

Capability

COM (live AutoCAD)

ezdxf (headless)

Live document control

✅

—

Cross-platform, no AutoCAD

—

✅

Transactions and rollback

✅

✅

Paper-space layouts + viewports

✅

✅

Viewport model-content rendering

✅

✅ ᵐ (no borders)

Selection window / crossing / polygon

✅

✅

Entity area by handle

ActiveX .Area

Analytic, bulges included

HATCH filled area (islands subtracted)

AutoCAD's own number

Loops walked, hatch_style reported

REGION / 3DSOLID area

✅

— ACIS is opaque to ezdxf

3D solids

✅ with ENABLE_3D=true

—

DWG write

✅ SaveAs

via the ODA File Converter, if installed

.dwt templates

✅

DXF only — dwt_write refuses

Reading a foreign drawing (drawing_understand, takeoffs)

✅ one Document.Export snapshot; the document is never renamed

✅

XLSX workbooks

✅ ᵒ

✅ ᵒ

Preferences · launch · operator prompts

✅

— refused by name

WIPEOUT · MTEXT background colour

— verified absent, AutoCAD 2026

✅

REVCLOUD · BPOLY · typed hatch edges

— no ActiveX member

✅

CHSPACE

— unverified on a live seat

✅ ᶜ

Undo history

✅

opt-in — EZDXF_UNDO_DEPTH

TABLE and MLEADER

Native

Portable composite

Screenshots and PDF

Window capture

Matplotlib ᵐ

ᵐ Needs matplotlib ([pdf]/[full]). Without it, png, pdf, viewport_render and handle_overlay report unsupported headlessly. ᵒ Needs openpyxl ([office]/[full]). Without it, XLSX is refused with xlsx_write and CSV is still written. ᶜ Headless CHSPACE has four restrictions, named in its capability reason: top-view untwisted viewports only; dimensions refused unless frozen; ACIS, proxy and table entities refused; viewport clipping reported rather than applied.

IMPORTANT

Every COM path added in v1.6 was executed against alive AutoCAD 2026, one smoke script per track (scripts/smoke_*_com.py), each run recorded in the changelog. Those runs found defects no headless test could. ActiveX refuses entity.Layer on a missing layer, where ezdxf quietly creates it, so mech_part_draw died after drawing every view. ActiveX calls a block reference BLOCKREFERENCE, not INSERT, so the parts list read nothing. And once pywin32's type-library cache existed, every listed entity arrived as a bare IAcadEntity with no line endpoints, so the room reader saw no walls and arch_plan_from_spec refused its first room label.

Evidence

Everything below is produced by scripts in benchmarks/ and published as JSON under benchmarks/results/published/.

Against the other AutoCAD MCP servers

A fixed 100-point rubric applied to nine public AutoCAD MCP servers (source_review.json). Stars and raw tool counts score nothing. 1.6.0 is scored per category, with the evidence for every point withheld:

Category

Weight

1.6.0

Points withheld for

Functional CAD coverage

25

24

no electrical schematics, image-to-CAD tracing, Plant 3D, obstacle-avoiding routing or headless REGION / 3DSOLID

Correctness and delivery

20

19

a headless DIMENSION does not re-render; a takeoff on a real P&ID still needs the engineer's scope decisions

Backends and platforms

15

14

BricsCAD, ZWCAD and GstarCAD unverified

Engineering production

15

14

four DIN / ISO feature tables ship empty

Tests and maintenance

15

14

headless entity creation slower than v1.4.0

Security and operations

10

8

ALLOWED_PATHS unscoped by default; command filtering is a denylist

Total

100

93

NOTE

Read this as a documented self-assessment, not an independent review: this repository applies the rubric to itself and to the others. The competitor rows are their July 2026 snapshots and were not re-reviewed for this release, and the best of them, varavista/autocad-mcp, scored 84. 1.4.0 was given one overall 95. This review is stricter and scores each category apart.

A second lane runs tasks instead of reading source. Every task in the fixed-task matrix can fail, and its artifacts are verified by re-opening the DXF, never by trusting a response. The reference adapter passes 21 / 21 of matrix v7. The two competitors with adapters, pinned at their July 2026 commits, passed 5 / 10 and 4 / 10 of the ten v2 tasks they were run on. The eleven tasks added since then were never put to them, so they show as not run, not as zero:

Correctness — every release re-proves itself

48 deterministic headless checks against the previous tag and the current tree. Each runs in its own subprocess, so a hard crash counts as a miss rather than killing the run.

Version

Checks passing

Pass rate

Fixed

Regressed

v1.5.1 (baseline)

26 / 48

54.2 %

—

—

v1.6.0 (this release)

48 / 48

100 %

22

0

The 26 checks v1.5.1 was released on all still pass. The twenty-two fixed rows are new capability (miss → pass), and each one pins a number computed by hand, not read back from the code that drew it:

Track

Check

Verified against

Understanding

scale_check_detects_schematic

the synthetic P&ID reads schematic against its layout; a uniform 2× copy of six tags reads to scale with factor 2

pipe_takeoff_rmst_exact

all eight routable runs measure exactly the rectilinear MST of their tags

cable_takeoff_roundup

9, 17, 19 and 10 m after the 20 % allowance; the heater's unstated power stays empty

diff_detects_known_edits

a move, a text change, an attribute change, an add and a delete, and nothing else

topology_known_defects

a 5 mm near miss, one interior crossing, and a clean T that is neither

Architecture

arch_junction_l_t_x

an L corner mitres at (4100, −100) / (3900, 100), a T stem stops on the near face, an X cuts all four faces; wall areas 1 400 000, 1 490 000 and 2 360 000 mm²

arch_room_area_net

a 4 × 5 m room between 200 mm walls is labelled 20.00 m², not the 21.84 m² its axes enclose

arch_opening_cuts_wall

both faces are interrupted across a 900 door and two jambs close it

arch_rooms_detect_foreign

plain lines on a WALLS layer yield 20 and 15 m² at confidence 0.6, and nothing is written

Mechanical and sheet

mech_part_roundtrip

a part read back out of its own ACADMCP_MECH XDATA equals the part drawn

mech_section_hatch_area

a 60 × ⌀40 sleeve with a ⌀20 bore cuts 1200 mm², measured out of the drawing by analysis_measure_entity

mech_iso286_on_dimension

40 H7 is +0.025 / 0 and survives the layout

mech_thread_unrepresented_is_caught

the ISO 6410 focus fires on a thread drawn as a plain circle. A gate that never fires is not a gate

std_part_iso4014_m12

s = 18, k = 7.5, read by value

sheet_frame_iso5457_a3

the frame runs 20,10 to 410,287 inside the 420 × 297 sheet

bom_balloon_link

two identical bolts are one row of quantity 2, and its balloon carries the row's item number

Environment

settings_dimstyle_iso25_values

the ISO-25 preset lands in the DIMSTYLE table with ISO 129-1's numbers

settings_layer_state_roundtrip

save → change → restore puts the layer table back, and the state survives save/reopen

settings_pdf_mediabox_a3

the plotted PDF's own /MediaBox reads 420 × 297

P&ID

pid_block_define_attdef_roundtrip, pid_tag_parse_fic, pid_graph_edge_count

a block with ATTDEFs defined and read back, an ISA-5.1 tag parsed, a drawn P&ID's edge count

The task matrix — tasks that can fail

An earlier matrix scored this server 10/10, which carried no information: every task in it exercised something the server was built around. Five tasks were added in 1.5 because they can fail, and three of them did while being written. 1.6 adds six more:

  • one the P&ID reader can fail on its own;

  • one where the PDF file, not the setter, is the witness;

  • one where a whole mechanical sheet has to come out clean;

  • one where a floor plan's rooms are read back off the drawing;

  • two where a foreign plant's P&ID and layout are read: the takeoffs against lengths computed in advance, and the one-call report against the defects planted in it.

Task

Verified against

tool_discovery

six AutoCAD command names, each ranking #1

token_budget

83,921 → 356 tokens, against a ceiling fixed in advance

hatch_islands

300 filled with the island, 400 ignoring it

selection_filter

window 1, crossing 2, bounding box 3, polygon 1

measure_from_handle

139.2699 against the 100.0 a vertex shoelace gives

pid_roundtrip

the example sheet drawn by pid_from_spec, read back by pid_graph, which never sees the spec: 5 nodes, 4 edges, 0 dangling, confidence_min 1.0, FIC-101 wired to FCV-101

page_setup_truth

ANSI B, then ISO A3 landscape, applied to Layout1. Each is plotted through batch_plot and read back from its PDF's /MediaBox: 432 × 279, then 420 × 297 mm, not the setter's return value. A fresh layout is already A3, so the B sheet is what a no-op setter cannot fake

mech_assembly

a flange-coupling A3 sheet: a hub with a full section, a flange with its bolt-circle end view, two ISO 4014 bolts with ISO 4032 nuts, an ISO 7573 parts list read off the drawing, linked balloons, an ISO 5457 frame and an ISO 7200 title block. Gated on drawing_critique(focus=None) returning zero issues and a finalize score of at least 90; a test drops one balloon and watches the gate fail

arch_roundtrip

a two-room plan (an entrance door, an interior door, two windows, a stair) drawn by arch_plan_from_spec and read back by arch_rooms_detect, which never sees the spec. Each room must be within 0.1 % of its label and of the net floor computed by hand (4825 × 5750 and 3825 × 5750 mm), and the schedules must list D1, D2, W1, W2. Gated like mech_assembly; a test removes one room label and watches the gate fail

takeoff_roundtrip

the synthetic plant pair: a P&ID stretched 1.3× in one room and rearranged in the other, Russian supply / return words, a return drawn on the supply layer, a reducer, a segment drawn twice. The scale check must call it schematic (21.8 % of 55 pairs within ±10 %). pipe_takeoff must give every routable run's layout length equal to the rectilinear MST of its tags, sizes and services as drawn, and the run to a tag the layout lacks status C. cable_takeoff must give 9 / 17 / 19 / 10 m after the 20 % allowance and leave the heater's power empty. A test removes the wiring callouts and watches the cable half fail by name

understand_foreign

the pair's layout (inches declared over millimetres, a stray line 5,000 km out, two plan copies) comes back as millimetres with an INSUNITS warning, the stray line's handle and two clusters. The P&ID's P_product piping / P_cipsupplyline / P_cipreturnline / P_ijswater / E_power classify as product / CIP supply / CIP return / ice water / electrical. A test makes the layout declare millimetres and watches the units gate fail

Headless performance

The workloads call the same backend methods the MCP tools call, so server-side overhead is included. Numbers move with hardware; the report records the machine fingerprint. Read the next section before quoting them. This release is slower than v1.4.0 at creating entities.

What this release is bad at

A page that only lists strengths is a page that has not been measured.

Headless entity creation is slower than v1.4.0, and 1.6 did not win it back. These are medians of five alternating runs on one machine, with one interpreter (CPython 3.11.15) and one ezdxf, v1.4.0's code against 1.6.0's (perf-v1.4.0-vs-v1.6.0.json):

Workload

v1.4.0

v1.6.0

v1.6.0, EZDXF_CALL_TIMEOUT=0

2,000 lines, one call each

244.5 ms

306.1 ms (1.25×)

284.9 ms (1.17×)

10,000 lines: build, DXF export, reopen

1,847.9 ms

2,553.5 ms (1.38×)

2,216.4 ms (1.20×)

Region query over 10,000 entities

665.2 ms

712.2 ms (1.07×)

783.9 ms (1.18×)

Premium quality pass

150.6 ms

65.3 ms (2.3× faster)

69.9 ms

The per-call timeout stops one hung call from wedging a server whose document lock is a single asyncio.Lock. It explains only part of the slowdown: switched off, creation is still 1.17× and 1.20× slower. The rest is extra work per call that 1.6 has not removed. A cProfile of the event-loop thread counts 491,071 function calls for the 2,000 creates, against v1.4.0's 319,038. Earlier READMEs said that switching the timeout off returned creation to v1.4.0's numbers. Measured this way, it does not. The region-query row, which moves the wrong way, shows this machine's noise floor (about ±10 %). Roadmap criterion 7 is not met and moves to 1.7.

Four mechanical feature tables ship empty. DIN 471/472 retaining-ring grooves, DIN 509 undercuts, DIN 332 centre holes and ISO 3601-2 O-ring grooves have their drawing code and their provenance tests, but no rows. A groove diameter written from memory is a wrong workshop drawing, while a narrow table is merely narrow. So every size is refused by name until rows verified against the standard's own table are transcribed. That is a data edit; each module's docstring says how.

Takeoffs are estimates, and they say so.

  • A layout length is the rectilinear minimum spanning tree of the tags a run connects, plus a stated vertical allowance, and it is labelled an estimate.

  • A P&ID length is used only when drawing_scale_check calls the P&ID to scale.

  • A power the P&ID does not state stays empty and becomes an open item, and no cable-section table is authored: a section comes only from your section_rules.

  • Where no callout names a panel, the nearest panel is inferred and flagged.

  • Detail copies of equipment are flagged, and excluded only when you ask.

The readers were tuned on the synthetic plant pair and on one real P&ID / layout pair that is not in this repository. Another drafting office's layer and text conventions may need vocabulary.

No Plant 3D. The roadmap's track D (read-only queries of a Plant 3D project) was dropped: the maintainer does not use Plant 3D, and a reader tested against nobody's real projects would be a guess. Roadmap criterion 5 is withdrawn, not met.

No REGION or 2D booleans headlessly. add_region() produces a REGION with zero ACIS bytes, and the greiner_hormann substitute loses 28.2% of the area on a square with one semicircular edge.

system_run_command / system_run_lisp are a guardrail, not a security boundary. The rejection message says so in those words. A 36-verb denylist refuses the obvious cases, but AutoCAD accepts hundreds of commands, and DANGEROUS_COMMANDS_ENABLED=true switches the list off entirely.

Path validation is per-tool, and unscoped until you scope it. With ALLOWED_PATHS empty (the default), the only positive bound is a ten-entry system-directory denylist that does not include C:/Users, /home, /root or /var. Set ALLOWED_PATHS.

Non-AutoCAD ProgIDs are unverified. CAD_PROGID changes which COM application the backend attaches to; nothing beyond the connection has been tested against BricsCAD, ZWCAD or GstarCAD.

Known limitations of the P&ID track

The router is orthogonal and blind. pid_line_draw picks auto from seven orthogonal candidates, by fewest bends then length:

  • straight;

  • one bend;

  • two bends through the midline;

  • a stub out of each port joined by three bends.

You can also take direct, or pass waypoints. It counts the lines it crosses (crossings comes back in every result, and pid_from_spec sums it), but it does not route around them. Obstacle-avoiding routing is not in 1.6; move the symbol or pass waypoints.

A foreign drawing is read at the confidence it earns, and no higher. A block this server did not place classifies at 0.6, with inferred ports, by its TAG-style attribute or a keyword in its name. It classifies at 0.3 when a line merely touches it, and a 0.3 guess can neither raise nor suppress a critique finding.

On the live engine, an INSERT turned off a right angle has members ActiveX cannot measure, so it reports an approximate box. pid_graph takes the tighter wall of that box and the attribute-inclusive box on every side. Even so, a line ending on such a body's true edge can still be reported dangling, with the nearest port as the hint. Read stats.confidence_min first.

Same-file only, DXF headlessly. Off-page connectors link within one drawing; links across files are not resolved. The headless engine reads DXF; a DWG P&ID is read through the live backend. There is no DEXPI/Proteus export and there are no ISA-5.2 binary-logic symbols in this release. Both cuts are recorded in the spec so nobody re-derives them.

Known limitations of the settings track

Layer states are ours. layer_state_save writes a portable snapshot into an ACADMCP_LAYERSTATES XRECORD. It survives save/reopen on both engines and travels with the DWG/DXF. It is not an AutoCAD LAYERSTATE and does not appear in the Layer States Manager, which is why system_capabilities reports layer_states as mode: "xrecord".

Six of the 22 environment tools need a live seat. Preferences, launching, the operator prompts and the five summary fields of document properties are refused headlessly with preferences / dwgprops / live_application / interactive_prompt. Each is a refusal, not a stub.

A .dwt template is the same case (dwt_write): a .dwt is a DWG container, so headlessly the template is saved as DXF. mleaderstyle_create is not such a case. ActiveX has no MLeaderStyle collection, but the ACAD_MLEADERSTYLE dictionary holds full IAcadMLeaderStyle objects, so both engines create leader styles.

A headless dimension does not re-render. On the ezdxf engine, dimstyle_modify reports dimensions_using_style and rerender_required: true, and the DIMENSION keeps its rendered block until it is redrawn. AutoCAD regenerates on the next regen.

Known limitations of the architecture track

Nominal, not standard. The furniture and sanitary blocks carry nominal catalogue sizes and say so. The stair tool reports the Blondel relation (2R + G within 600–650 mm) as a design rule, never as a building code. The arch layer colours are a repository convention: ISO 13567 fixes the names, not the colours. Labels speak English or Turkish; any other lang is refused with the list.

Configuration

Nothing loads a .env file — export these, or set them in your MCP client's env block.

Variable

Default

Purpose

AUTOCAD_MCP_BACKEND

auto

auto, com, or ezdxf

CAD_PROGID

AutoCAD.Application

COM ProgID the live backend attaches to

TOOL_PROFILE

full

lean (65 curated tools, 55 with TOOL_PACKS=core) or full

TOOL_PACKS

all

Vertical packs to advertise: core,pid,settings,mech,arch,plant (core always on)

DISCOVERY_MODE

off

search replaces the catalog with search_tools + call_tool

ENABLE_3D

false

Expose the opt-in solid_* tools (COM)

LOG_LEVEL

INFO

Python logging level

ALLOWED_PATHS

(empty)

Comma-separated absolute paths the server may access

MAX_UNDO_STACK

5

Maximum retained undo snapshots

EZDXF_UNDO_DEPTH

0

Headless undo history depth; 0 disables it

MAX_DXF_BYTES

536870912

Reject larger DXF input (512 MB); 0 disables

MAX_LIST_LIMIT

5000

Bound list/selection response sizes

COM_CALL_TIMEOUT

60

Per-call live AutoCAD timeout (s); 0 disables

EZDXF_CALL_TIMEOUT

120

Per-call headless timeout (s); 0 disables

DANGEROUS_COMMANDS_ENABLED

false

Allow blocked commands/LISP; reported as unsafe mode

ALLOW_REMOTE_HTTP

false

Permit a non-loopback HTTP bind

MCP_AUTH_TOKEN

(empty)

Bearer token required for remote HTTP

Architecture

flowchart LR
  A[MCP host / AI agent] --> B[FastMCP 3 server]
  B --> C[Error · audit · timing · logging · capability-refusal middleware]
  C --> D[Typed contract · 23 modules · 41 capability keys]
  D --> E[COM backend<br/>single-STA thread]
  D --> F[ezdxf backend<br/>asyncio.to_thread]
  E --> G[Live AutoCAD]
  F --> H[Headless DXF]
  E --> I[Engineering · critique · scoring · delivery]
  F --> I

The sequence in scripts/render_readme_showcase.py, which produced the hero sheet:

drawing_new()                                    ISO linetypes + layers bootstrapped
drawing_apply_iso_layers("mech")                 ISO 128 lineweights per layer
drawing_settings({units: "mm", linear_precision: 2})

gear_draw_spur_front_view(                       involute flanks, not a decorated circle
    module=6, teeth=24, center=[135, 172],
    bore_diameter=40, keyway_width=12, keyway_depth=3.3)
gear_draw_section_aa(x_offset=300, face_width=46)

dimension_linear(...)                            ISO 129
dimension_diameter(..., fit="H7")                deviations from authored ISO 286 tables
titleblock_apply_iso_a3(title="SPUR GEAR m6 z24", material="C45E", ...)

drawing_critique(focus=None)                     -> []  must be empty before finalize
view_screenshot()                                -> PNG

The full production loop adds drawing_preflight and drawing_plan at the front, drawing_refine after the critique, and layout_create + viewport_create + drawing_deliver at the end.

Development

uv sync --locked --all-extras
uv run pytest
uv run ruff check . && uv run ruff format --check .

uv.lock pins the whole transitive graph, so this reproduces CI exactly. CI runs Linux (3.11 / 3.12) and Windows (mocked COM), plus package, Docker and MCP-registry jobs. The release gate runs the same three test lanes before anything reaches PyPI. Releases are tag-driven: git tag vX.Y.Z && git push origin vX.Y.Z.

Roadmap (1.7)

  • Speed. Win back the headless creation throughput that 1.6 lost against v1.4.0 (criterion 7): arm the per-call timeout only where a call can block, and remove the per-call work that came with it.

  • IEC 60617 electrical schematics. They reuse the P&ID track's symbol, port and graph machinery.

  • Transcribed rows for DIN 471/472, DIN 509, DIN 332 and ISO 3601-2, each verified against the standard's own table.

  • HATCH boundary geometry in entity_get. 1.5 and 1.6 measure a hatch's filled area but do not hand back its loops.

  • ezdxf.recover as a fallback on drawing_open.

  • An allowlist of permitted AutoLISP heads, replacing the denylist. Enumerating dangerous symbols does not terminate.

Features ship when their contracts and limitations are testable — not when they make a longer checklist.

Star History

Star History Chart

Author

Umutcan Edizsalan · Mechanical engineering work at Anka-Makine · GitHub @U-C4N

Built from production drawing work, then made model-agnostic through MCP.

License

MIT

mcp-name: io.github.u-c4n/autocad-mcp

Available Tools

242 tools
analysis_bounding_boxDrawing Bounding BoxA
Read-only

Get the bounding box (extents) of all entities in the drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

The readOnlyHint annotation already declares the safety profile, and the description's 'Get' is consistent with it. The description adds scoping context ('all entities') and clarifies the return concept ('extents'), but it does not address edge cases like empty drawings or coordinate system behavior. With annotations covering the primary behavioral trait, 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.

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word adds meaning and the parenthetical clarification 'extents' improves precision without bloating the text.

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 tool with an output schema present, the description provides all information an agent needs to select and invoke it. There are no hidden inputs, prerequisites, or behavioral warnings 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 has zero parameters and the input schema is empty, so there are no parameter semantics to document. The baseline for zero-parameter tools applies.

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 ('Get') and a specific resource ('bounding box (extents) of all entities in the drawing'). The 'all entities' scope distinguishes it from selection-based and measurement-based analysis 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?

The description implies usage when overall drawing extents are needed, but it does not explicitly state when to use this tool versus alternatives like analysis_measure_entity or view_zoom_extents. No exclusions or alternative-routing guidance are provided.

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

analysis_entity_statsEntity StatisticsA
Read-only

Analyze the drawing and return entity counts grouped by type and by layer.

Returns: total_entities, by_type (sorted by count), by_layer (sorted by count). This is unique to AutoCAD MCP Pro – no other MCP server provides this!

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true, so the read-only safety profile is covered. The description adds useful behavioral context beyond that: the tool returns total_entities, by_type, and by_layer with sorted ordering, which helps set expectations for the response shape.

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 short, front-loaded with the action, and clearly structured. The 'unique to AutoCAD MCP Pro' claim is extraneous and does not help an agent invoke the tool, but it does not obscure the operational content.

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 zero-parameter, read-only analysis tool with an output schema, the description is complete. It names the output fields, explains the grouping and sorting, and is adequately scoped to the active drawing.

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 schema is fully covered by definition. The description usefully documents the return object fields, which is the only input-free semantics an agent needs.

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 concrete action and output: analyzing the drawing and returning entity counts grouped by type and layer, sorted by count. It is clear enough to distinguish from drawing creation or modification tools, though it does not explicitly differentiate from the closely related analysis_layer_stats sibling.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus analysis_layer_stats, analysis_select_by_type, or drawing_info. The uniqueness claim is about market positioning, not about usage context or alternatives.

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

analysis_find_in_regionFind Entities in RegionA
Read-only

Find all entities within a rectangular region (crossing selection).

Uncapped: a window over a busy drawing returns every hit. Project with fields and/or compact before widening the window.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesRegion minimum X
x2YesRegion maximum X
y1YesRegion minimum Y
y2YesRegion maximum Y
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true, but the description adds important behavioral context beyond that: it warns that queries are uncapped and can return every hit in a busy drawing, with a performance-oriented mitigation. This helps the agent anticipate large results and plan output handling.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and every sentence adds value. The uncapped warning and the fields/compact advice are directly actionable without any filler.

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?

Given the output schema exists, annotations cover the read-only nature, and the input schema fully documents parameters, the description is complete. It even covers the most important operational caveat—uncapped result size—which is exactly the kind of context an agent needs before invoking the tool.

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 100%, and the schema already explains all six parameters, including field projection syntax, unknown-name behavior, and the compact envelope. The description reinforces a useful strategy for fields/compact but does not add new parameter-level meaning beyond what the schema provides.

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 ('Find all entities'), a specific resource ('within a rectangular region'), and even clarifies the selection mode ('crossing selection'). This clearly distinguishes it from broader listing tools like entity_list and selection-based siblings without needing to inspect schemas.

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 practical guidance: results are uncapped, so users should project with fields and/or compact before widening the window. It does not explicitly name sibling alternatives, but the context around when and how to invoke it safely is clear and actionable.

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

analysis_layer_statsLayer StatisticsA
Read-only

Return detailed statistics for each layer: entity count, types present.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the safe read behavior is established. The description adds modest context by clarifying that it reports per-layer aggregate counts and types, which goes slightly beyond the annotation. No contradiction 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.

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every element — 'each layer', 'entity count', and 'types present' — adds meaningful information.

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 tool with an output schema, the description is sufficiently complete. It states the scope and the kind of statistics returned, and no parameter or invocation detail 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 has zero parameters and schema description coverage is 100%, so there are no parameter semantics for the description to clarify. The baseline of 4 applies for a parameterless tool.

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 a specific verb ('Return') plus a clear resource ('detailed statistics for each layer') and names the actual content (entity count, types present). It is distinguishable from siblings by the layer-level scope, though it does not explicitly differentiate from analysis_entity_stats or analysis_list_properties.

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 choose this tool over siblings such as analysis_entity_stats or analysis_list_properties. The intended usage is implied by the name and description, but no selection conditions or exclusions are stated.

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

analysis_list_propertiesList Entity PropertiesA
Read-only

AutoCAD's LIST: the full DXF attribute set for one handle.

dxf_attributes is the raw attribute set entity_get deliberately does not carry. Coordinates in it are WCS, like everywhere else in this server, and extrusion is reported so the entity's own frame is still visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesHandle of the entity to dump.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, it discloses that coordinates are WCS, extrusion is reported, and the payload is the raw attribute set entity_get omits. This lets an agent correctly interpret the coordinate frame without having to guess from the 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?

The first sentence establishes the tool in a few words. The second sentence adds two useful behavioral facts, WCS and extrusion, plus the relationship to entity_get, so every sentence earns its place.

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?

With only one required parameter, an output schema, and a read-only annotation, the description covers the important behavioral caveats. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

The input schema already gives handle a full description, and schema coverage is 100%. The tool description adds no new meaning about handle beyond what the schema provides, so the high-coverage baseline applies.

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+resource: dump/returns the full DXF attribute set for one handle, framed as AutoCAD's LIST. It also distinguishes this from entity_get by noting entity_get deliberately does not carry dxf_attributes.

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 names the obvious alternative, entity_get, and gives the selection condition: use this when you need the raw attribute set that entity_get omits. It does not enumerate when not to use this, but the one clear sibling contrast is enough.

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

analysis_measure_areaMeasure AreaA
Read-onlyIdempotent

Area and perimeter of a polygon you supply the vertices for.

This measures the numbers in the call, NOT the drawing. To measure something that exists, use analysis_measure_entity(handle) — it reads the real geometry, including curvature this tool can only see if you pass it.

Straight-edged polygons are exact. Pass a third bulge element per vertex for arc edges; omitting it on curved geometry under-reports (28% on a semicircular edge), which is why assumes says what was taken on faith.

ParametersJSON Schema
NameRequiredDescriptionDefault
pointsYesPolygon vertices, min 3. Each is [x, y] or [x, y, bulge] — the bulge (DXF convention) makes the edge leaving that vertex a circular arc.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description discloses that the tool measures the numbers in the call, not the drawing, and that results are exact only for straight-edged polygons. It also warns about under-reporting on curved edges when bulge is omitted and references an 'assumes' field, adding meaningful behavioral context.

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

Conciseness5/5

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

Three tight paragraphs with no filler. The main purpose is front-loaded, and every sentence adds either capability, usage routing, accuracy caveats, or schema-related context. The formatting makes the key warnings easy to scan.

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 single-parameter tool with a detailed input schema, an output schema, and safe read-only annotations, this description is complete. It covers what the tool does, when to use the alternative, how curved edges affect accuracy, and what assumptions the output reports.

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

Parameters5/5

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

Although the schema already documents the points array well, the description adds important semantic nuance: it clarifies the tool operates on literal coordinates rather than drawing entities, explains the bulge element's role in arc edges, and quantifies the accuracy penalty of omitting it. This goes well beyond the baseline schema coverage.

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 and resource: it computes the area and perimeter of a polygon from supplied vertices. It also clearly differentiates itself from the sibling analysis_measure_entity, which measures real drawing geometry.

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?

The description explicitly says when to use this tool versus the alternative: use it only when you have literal coordinate vertices, and use analysis_measure_entity(handle) to measure something that already exists in the drawing. This gives an agent unambiguous routing guidance.

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

analysis_measure_distanceMeasure DistanceA
Read-onlyIdempotent

Measure the Euclidean distance between two points.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesPoint 1 X
x2YesPoint 2 X
y1YesPoint 1 Y
y2YesPoint 2 Y

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description is consistent with the readOnlyHint and idempotentHint annotations, and it adds meaningful behavioral detail by specifying 'Euclidean distance,' signaling a pure mathematical calculation rather than a geometric entity measurement. It does not mention units or drawing-plane assumptions, but the annotations already cover the safety and side-effect profile.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant restatement of the tool name. Every word contributes to understanding what the tool does.

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?

This is a simple two-point distance calculation with a full output schema and complete parameter descriptions, so the description is mostly sufficient. The only missing piece is explicit guidance on when to use this tool versus naming sibling measurement alternatives, but the low operational complexity keeps this from being a major 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 100%, with each of the four parameters already described as 'Point 1 X,' 'Point 2 X,' etc. The tool description adds no further meaning beyond the schema, so the baseline 3 is appropriate.

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 ('Measure') and a precise object ('Euclidean distance between two points'), which clearly distinguishes it from sibling tools like analysis_measure_area or analysis_measure_entity. The mention of 'Euclidean' also defines the exact math operation rather than leaving it vague.

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

Usage Guidelines3/5

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

The phrase 'between two points' implies the tool is appropriate when the user has two coordinate pairs and wants straight-line distance, but it does not explicitly compare against alternatives such as analysis_measure_entity or analysis_measure_area. There is no when-not-to-use guidance or exclusion of other measurement tools.

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

analysis_measure_entityMeasure EntityA
Read-onlyIdempotent

Measure something already in the drawing, by handle.

Reads the real geometry, so polyline bulges (arc edges) are included — reading vertices back and shoelacing them yourself loses 28% of the area on a semicircular edge, silently.

Measurable: LWPOLYLINE, 2D POLYLINE, CIRCLE, ELLIPSE, SPLINE, HATCH, SOLID, TRACE, 3DFACE. REGION and 3DSOLID need the live COM backend (their area is in ACIS data ezdxf cannot evaluate) and refuse with capability: "measure_area_acis". LINE/TEXT/INSERT bound no area on any engine and are a plain error, not a capability gap.

The payload states its own accuracy: exact is false when the shape had to be flattened (then flatten_tolerance says how finely), assumed_closed is true when an open boundary was closed the way AutoCAD's AREA does, and self_intersecting warns when the shoelace cancelled crossed lobes — a bowtie measures 0.0 and that number is worse than useless unflagged.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesEntity handle (hex string) from create/list/select
flatten_toleranceNoMax chord deviation when geometry has no closed form (splines, partial ellipses)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint and idempotentHint, and the description adds substantial behavioral context beyond that: it reads real geometry including polyline bulges, exposes accuracy flags (exact, assumed_closed, self_intersecting), and documents distinct error modes for unsupported entities. This is exactly the kind of disclosure that helps an agent predict side effects and failure 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?

Every sentence earns its place: the purpose is front-loaded, the geometry-fidelity caveat is meaningful, the supported/unsupported type lists are compact, and the accuracy-flag explanation is essential. The description is longer than average but not wasteful — its length is justified by the tool's complexity.

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?

Given an output schema and clear annotations, the description covers supported input types, capability-gated failures, plain errors, accuracy semantics, and the source of the handle parameter. Nothing an agent needs to call this tool correctly or interpret its results is left unexplained.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description adds useful context by explaining how flatten_tolerance relates to the reported accuracy flag and why bulge-aware measurement matters, reinforcing the parameter's purpose beyond the raw schema text.

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 and resource — measure an entity by handle — and enumerates the exact geometry types it supports. The description clearly centers on area measurement while distinguishing it from generic listing/stat tools by its geometry-fidelity guarantees. An agent can tell what this tool does without ambiguity.

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?

Provides strong applicability context: lists measurable entity types, explicitly calls out LINE/TEXT/INSERT as errors, and explains that REGION/3DSOLID require a COM capability. It stops short of naming sibling tools like analysis_measure_area or analysis_measure_distance and saying when to prefer them, but the when-to-use and when-not-to-use guidance is otherwise explicit.

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

analysis_select_by_layerSelect Entities By LayerA
Read-only

Get all entities on a specific layer. Returns entity list with handles.

Capped at MAX_LIST_LIMIT (default 5000). The plain list cannot say it was capped — the warning goes to the log stream, which most clients never show the model — so use compact=True when the count matters: its total is the layer's real population and truncated states whether the cap fired.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.
layer_nameYesLayer name to select entities from

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint=true annotation, the description discloses a critical hidden behavior: the MAX_LIST_LIMIT cap at 5000 and the fact that the plain list cannot report truncation because the warning only goes to the log stream. It also explains that compact=True exposes the layer's real population via total and indicates truncation via truncated. This is exactly the behavioral context an agent needs.

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 two short paragraphs with no filler. The first sentence states the operation and output; the second paragraph front-loads the cap and gives actionable guidance. Every sentence contributes necessary information.

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 read-only selection tool with an output schema and fully described parameters, the description covers purpose, return type, truncation edge case, and the corrective parameter for accurate counts. Nothing critical is missing 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?

With 100% schema description coverage, the baseline is already strong, and the compact parameter's schema description is detailed. The tool description adds further value by explaining why compact matters—it is the only shape that reports truncation—and clarifying that total represents the layer's true population. This goes beyond the schema without being redundant.

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

Purpose5/5

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

The description opens with 'Get all entities on a specific layer', a specific verb and resource, and clarifies the return type with 'Returns entity list with handles'. The layer scope distinguishes it from sibling tools that select by type or region, such as analysis_select_by_type and analysis_find_in_region.

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 strong internal guidance about when to use compact=True versus the plain list, explaining the cap and the unreliable log-stream warning. However, it does not explicitly state when to prefer this tool over alternatives like entity_list, selection_filter, or analysis_select_by_type, leaving tool-selection guidance mostly implicit.

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

analysis_select_by_typeSelect Entities By TypeA
Read-only

Get all entities of a specific type. Returns entity list with handles.

Capped at MAX_LIST_LIMIT (default 5000); as with analysis_select_by_layer, compact=True is the only shape that reports total and truncated.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.
entity_typeYesEntity type: LINE, CIRCLE, ARC, LWPOLYLINE, TEXT, MTEXT, INSERT, HATCH, SPLINE, ELLIPSE

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, and the description adds useful behavioral context beyond that: the MAX_LIST_LIMIT cap of 5000 and the fact that only compact=True reports total/truncated. It also notes that results are returned with handles. No contradiction with annotations.

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

Conciseness5/5

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

Three short sentences with the core behavior front-loaded, followed by the cap/truncation caveat. The 'as with analysis_select_by_layer' shorthand avoids duplicating documentation, and there is no filler.

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

Completeness4/5

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

For a read-only list operation with a fully described input schema and an existing output schema, the description covers the remaining runtime constraints: result cap, truncation reporting, and handle inclusion. It does not discuss ordering or multi-type queries, but those are not essential for correct invocation.

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 100%, so the baseline is 3. The description mostly restates the compact behavior already documented in the schema ('only shape that reports truncation') and adds no new meaning about fields or entity_type values beyond what the schema provides.

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

Purpose4/5

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

The opening sentence uses a specific verb ('Get'), a resource ('all entities'), and a selection criterion ('specific type'), and the handle-return note clarifies exactly what the agent receives. Naming analysis_select_by_layer as the analogous tool helps place it, though the distinction is not fully spelled out.

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 natural use case: fetching all entities of a given entity type. It references analysis_select_by_layer, signaling a sibling family, but it never states when to prefer this tool over alternatives like entity_list, selection_filter, or analysis_select_by_layer, nor when it should not be used.

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

arch_catalogue_insertArchitecture: Catalogue InsertA

Define the item's block ARCH_ once, insert it on the furniture or sanitary layer.

The block carries an invisible ITEM attribute with the catalogue name. Its size is a nominal catalogue dimension (reported with size_basis), not a standards value; the outline is a plan symbol drawn inside that footprint. The furniture / sanitary layer is created from the arch layer set when the drawing lacks it. Refusals, all before any write: an unknown name (with the nearest catalogue names) and a non-finite coordinate or rotation.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX (WCS) of the item's back-left corner
yYesY (WCS) of the item's back-left corner
nameYesCatalogue name from arch_catalogue_list, e.g. 'double_bed', 'sofa_3_seat', 'wc', 'wall_basin', 'kitchen_counter'
rotationNoDegrees CCW about (x, y); 0 puts the item's back (its wall side) along +X with the item extending towards +Y

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With only readOnlyHint=false provided, the description carries real load: it discloses that the block carries an invisible ITEM attribute, that the layer is auto-created from the arch layer set, that size is nominal rather than a standards value, and critically that all refusals occur before any write (atomicity). This is substantive behavior an agent would not learn from the annotations.

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

Conciseness4/5

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

Two tight paragraphs with the primary action front-loaded and no filler. Slightly dense in the second paragraph (size vs outline distinction) but each sentence contributes distinct information.

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

Completeness4/5

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

An output schema exists, so return-value explanation is correctly omitted, and the description covers name sourcing, layer behavior, size basis, and refusal conditions. The only gap is the absence of explicit sibling routing, which is a minor incompleteness for a write tool with many insertion neighbors.

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 100%, so the schema already documents x, y, rotation, and the catalogue name. The description adds the item footprint/size semantics but no per-parameter syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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 and resource: 'Define the item's block ARCH_<NAME> once, insert it on the furniture or sanitary layer.' The scope (catalogue block on a plan layer) clearly separates it from generic siblings like block_insert or std_part_insert, and the schema ties the name to arch_catalogue_list.

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

Usage Guidelines3/5

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

It implies usage by stating what the name must be and by describing the refusal path for unknown names, but it never explicitly says when to choose this over block_insert, pid_symbol_insert, or std_part_insert. The catalogue route to obtaining names is only implied via the schema description.

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

arch_catalogue_listArchitecture: CatalogueA
Read-only

Catalogue rows: name, family, both labels, nominal size [w, d] in mm, block name, layer.

Sizes are nominal catalogue dimensions - what a furniture or appliance catalogue lists as a common size - and every row says so in size_basis; they are not standards values. Twenty items: thirteen furniture, seven sanitary. Refusals: a family other than furniture/sanitary and a lang other than en/tr, each with the list.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen | tr - the language of the 'label' columnen
queryNoWords matched against the item name, family and its English or Turkish label, ignoring case and Turkish diacritics - 'bed', 'yatak', 'klozet', 'buzdolabi'. Every word must match.
familyNofurniture | sanitary

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses the exact catalogue size (20 items: 13 furniture, 7 sanitary), clarifies that sizes are nominal catalogue dimensions rather than standards values (flagged per-row via size_basis), and states the two refusal conditions with the returned list. This is meaningful behavioral context not present in structured fields.

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 row-columns list is front-loaded and dense. The middle paragraph on size_basis straddles usefulness and verbosity, but it earns its place by preventing an agent from treating the sizes as standard values, and the refusal sentence is compact.

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 an output schema present, the description need not explain return formatting, though it usefully summarizes columns. It covers the catalogue size, size-basis caveat, and refusal cases. The main missing piece is when to prefer this tool over related architecture tools, but for a simple read tool that gap is minor.

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 100%, so lang, query, and family are already fully documented, including query's case/diacritic-insensitive word matching. The description adds only the refusal behavior for unsupported family and lang values, which slightly reinforces the valid-input boundary but does not add new semantics.

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 concrete read operation and enumerates the returned row fields (name, family, labels, nominal size, block name, layer), so an agent knows this retrieves the architecture catalogue. It does not explicitly contrast itself with the sibling arch_catalogue_insert, but the listing/read nature is clear from the name and content.

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 explicit 'when to use this vs alternatives' guidance. The refusals paragraph describes error behavior for invalid family/lang, not selection criteria, and no sibling tool is named as an alternative. Usage is only implied by the tool name.

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

arch_dimension_chainsArchitecture: Dimension ChainsA

The three exterior chains an architectural plan carries, as real DIMENSIONs.

Nearest first: the openings row (every jamb in that facade), the walls row (both faces of every wall meeting it - wall thickness, clear width, wall thickness, ...) and the overall row. The points come from the wall engine's own faces, read back from the plan on the drawing. A row that would only restate a farther one is not drawn (ISO 129-1: each measurement once). The row spacing defaults (10 mm, then 8 mm on paper) are this server's drafting choices, not standard values. Text, arrows and gaps follow the plot scale: each chain is drawn at DIMSCALE = scale (reported as dimscale), and the drawing's own DIMSCALE is put back afterwards.

Refused by name: a drawing with no walls, an unknown or repeated side, a non-positive scale, offset or step.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepNoDistance between rows (drawing units)
scaleNoPlot-scale denominator: rows sit 10 mm and 8 mm apart on paper
sidesNoSides to dimension: bottom | top | left | right (default bottom, left)
first_offsetNoDistance of the first row from the building (drawing units)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only carry destructiveHint=false, so the description does the heavy lifting and delivers: row ordering, the ISO 129-1 non-duplication rule, the server's own spacing defaults (10 mm then 8 mm) flagged as non-standard, and the temporary DIMSCALE swap that is restored afterwards. These are exactly the behavioral details an agent cannot get from structured fields.

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 main idea is front-loaded and nearly every sentence carries unique information (defaults, restoration behavior, refusals). It is dense and the broken-line layout makes it slightly harder to scan, but there is little filler.

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?

With an output schema present, return values need no explanation, and the description still covers behavior, defaults, side effects (DIMSCALE restore), and failure modes. Nothing an agent needs to call 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?

Schema coverage is already 100%, so 3 is the baseline, but the description adds real meaning: it clarifies that each chain is drawn at DIMSCALE = `scale` (returned as `dimscale`), that default spacing values are drafting choices, and that sides are validated against unknown/repeated values.

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 domain resource — the three exterior dimension chains of an architectural plan — and implies the producing verb ('as real DIMENSIONs'). It is clearly distinguishable from generic siblings like dimension_linear or dimension_aligned, but never explicitly contrasts itself against them.

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 concrete preconditions and exclusions ('Refused by name: a drawing with no walls, an unknown or repeated side, a non-positive scale, offset or step') and explains the nearest-first row ordering. It stops short of routing the agent away from sibling dimension tools by name, so it is clear context without full alternative guidance.

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

arch_gridArchitecture: Structural GridA

Axis lines on the arch grid layer (its CENTER linetype comes from the layer) and a 5 mm bubble with its label at both ends of each axis, on the symbol layer.

Numbers run along x and letters along y (A..Z, then AA, AB - no letter is skipped) unless labels names them. The bubble and label sizes are this server's declared drafting sizes in paper millimetres, not a standards value. Refusals, all before any write: an empty axis list in either direction, a non-finite or duplicate position, a label list whose length does not match its positions, a duplicate or empty label, an unknown labels key, and a non-positive extension or scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoPlot-scale denominator (50 = 1:50): bubbles and labels are paper mm x scale
labelsNoOverride the labels: {'x': [...], 'y': [...]} (either key), one label per position in the order the positions were given
x_axesYesX positions (WCS) of the vertical axes; numbered 1, 2, 3 left to right
y_axesYesY positions (WCS) of the horizontal axes; lettered A, B, C bottom to top
extensionNoDrawing units each axis runs past the outermost crossing axis

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations carry only destructiveHint=false, so the description does real work: it states that all refusals occur before any write (validation-first, non-destructive on failure), which layer supplies the center linetype, where bubbles are placed, and that sizes are server-declared paper mm rather than a standards value. It stops short of stating idempotency or what happens to pre-existing grid entities, but the failure semantics are unusually explicit.

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?

Three tight paragraphs, front-loaded with what gets drawn, then convention, then refusal conditions. The refusal enumeration is long but each item is a distinct error case with no filler, so it earns its space.

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?

An output schema exists so return values need no explanation, and the description covers layer sourcing, sizing semantics, labeling convention, and failure modes. Minor gaps remain around layer names/prerequisites and whether callers must pre-create those layers, but overall it is complete for a 2-required-param drafting tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description meaningfully extends it: it explains that labels override the default numbering per position in given order, clarifies the mm-vs-paper-mm relationship for scale, and enumerates the specific invalid values that trigger refusal for scale/extension and label lists.

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?

Specific verb+resource: creates axis lines with end bubbles and labels on the arch grid/symbol layers. The detail about center linetype origin, bubble size, and numbering scheme makes it unmistakably distinct from siblings like centre_marks, arch_dimension_chains, or dimension_auto.

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 by the content (this is the tool for setting out a structural grid), but there is no explicit when-to-use or when-not-to-use guidance, and no alternative sibling is named for cases where the agent might want dimensions or centre marks instead.

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

arch_openingArchitecture: Door / WindowA

A door or a window in a wall already drawn, found by its id; the wall is redrawn cut.

The opening removes its width from both wall faces and each edge is closed by a jamb. A door is drawn open at 90° - its leaf as long as the opening is wide, hinged on hand, with a quarter-arc swing on the swing side; a window is a frame line on each face and two glazing lines between them. The opening's ACADMCP_ARCH record sits on the leaf or the frame, so a schedule reads it back.

Refused before anything is drawn or erased: a wall id not on the drawing (the drawn ids are named), an opening id already drawn, an opening that runs past its wall segment or straddles an axis vertex, one overlapping another opening on the same wall (both ids named), one that runs into a junction (the solid stretch it must fit in is named), an unknown kind, swing, hand or language.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoSchedule tag; default the next D1/W1 (en) or K1/P1 (tr)
handNoDoors: the hinge jamb, seen from the swing side facing the wall: left | rightleft
kindNodoor | windowdoor
langNoTag language: en | tren
sillNoWindows: sill height (schedule only, mm)
wallYesId of the drawn wall that hosts the opening
pocheNoHatch the redrawn wall's cut faces
swingNoDoors: in = to the left of the axis (inside a CCW perimeter) | outin
widthYesClear width of the opening (mm)
heightNoOpening height (schedule only, mm)
offsetYesDistance along the wall's axis from its first point to the near jamb (mm)
opening_idNoOpening id; default its tag

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Far exceeds the minimal annotation (destructiveHint=false). It discloses the geometric effect (opening removes its width from both wall faces, jambs close each edge), door vs window rendering (90° leaf, quarter-arc swing; frame + two glazing lines), that the ACADMCP_ARCH record sits on the leaf/frame for schedule read-back, and a detailed set of refusal conditions. This is unusually rich behavioral disclosure for a mutation tool.

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?

Front-loads the action ('A door or a window in a wall already drawn...'), then the geometry, then the refusal conditions. Dense but every clause carries information; the refusal enumeration is long yet each entry is a distinct failure mode.

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?

An output schema exists so return values need not be explained. For a complex 12-parameter mutation tool, the description covers geometry, validation, and persistence (xdata for schedules), leaving no material gap for an agent to call 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?

Schema coverage is 100%, so baseline is 3, but the description adds genuine conceptual meaning: it explains that the door leaf length equals the opening width and that the hinge is on `hand` with the arc on the `swing` side, tying these params to drawn geometry beyond the schema text.

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+resource: it creates a door or window opening in an already-drawn wall identified by id, and redraws the wall cut. This is unmistakably distinct from arch_wall (which draws the wall) and from other geometry 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 prerequisite is explicit ('a wall already drawn, found by its id'), and the refusal list effectively delineates when the call will fail (wall id not on drawing, id already drawn, opening exceeds segment, overlaps another opening, runs into a junction). It does not name a sibling alternative explicitly, but the usage context is clear.

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

arch_plan_from_specArchitecture: Plan From SpecA

A whole plan drawn inside one transaction: walls with their hosted doors and windows, stairs, room labels whose areas are measured off the walls just drawn, the exterior dimension chains and the door / window / room schedules.

Every item is validated before the transaction opens, so a refusal leaves the drawing untouched and names its path (walls[1].thickness: ..., rooms[0].area: ...). What only the drawing can refuse - a room point in no closed face - rolls the transaction back, and so does a cancelled request (the rollback runs under an anyio shield). The result carries each step's own result, the wall engine's omitted list and the three arch_* critique focuses run over the committed plan.

Refused by name: an unknown key, no walls, an unknown language or material, a non-finite or non-positive number, an arc segment in a wall axis, an opening that overlaps another or runs past its wall segment (both ids named), a typed room area (areas are measured, never typed), an unknown chain side or schedule kind, and a transaction that cannot be opened. Catalogue furniture, the grid and symbols are separate tools (arch_catalogue_insert, arch_grid, arch_symbol).

ParametersJSON Schema
NameRequiredDescriptionDefault
specYes{sheet: {intent, sheet_size, scale (denominator, 50 = 1:50)}, lang: 'en'|'tr', poche: bool, walls: [{id, axis: [[x,y],...], thickness, justification, material, closed}], openings: [{id, wall, kind: 'door'|'window', offset, width, swing, hand, sill, height, tag}], stairs: [{id, start, direction_deg, width, risers, riser_height, going, kind, turn}], rooms: [{id, name, number, at}], chains: {sides: ['bottom','left']}, schedules: [{kind: 'doors'|'windows'|'rooms', at: [x,y]}]}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only carry destructiveHint=false, so the description carries the real burden and does so richly: validation happens before the transaction opens, a refusal names the offending path, drawing-level refusals and cancelled requests roll back (under an anyio shield), and the result includes each step's own result, the wall engine's omitted list, and three arch_* critique focuses. This is far beyond what the annotation discloses.

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 purpose is front-loaded in the first sentence and each subsequent paragraph adds distinct information (validation/rollback semantics, then refusals, then sibling exclusion). The long refusal enumeration is dense rather than padded, though it could be tightened into a more scannable list.

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 complex, destructive-adjacent compound creation tool with sparse annotations, the description covers the transaction lifecycle, validation timing, rollback behavior, cancellation handling, result contents and sibling boundaries. An output schema exists and the description still notes what the result carries, so 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?

With a single parameter at 100% schema description coverage the baseline is 3, but the description genuinely enriches the spec beyond the schema text: it explains that room areas are measured off the walls just drawn and never typed, and enumerates refusal conditions tied to specific spec fields (arc segment in a wall axis, overlapping openings with both ids named, unknown chain side or schedule kind).

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?

Opens with a specific verb and resource: a whole plan drawn inside one transaction, then enumerates exactly what is produced (walls, hosted doors/windows, stairs, room labels with measured areas, dimension chains, schedules). It also explicitly separates itself from siblings by naming arch_catalogue_insert, arch_grid and arch_symbol as distinct tools, so an agent can route correctly without opening schemas.

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 makes clear this is the one-call path for an entire plan and names the adjacent tools that handle catalogue furniture, grid and symbols separately, which is genuine routing guidance. It stops short of an explicit when-to-use-this-vs-incremental-arch_wall/arch_opening statement, so an agent must infer the bulk-vs-piecemeal tradeoff.

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

arch_roomArchitecture: Label RoomA

Label the room around (x, y) with its name, number and MEASURED area.

The area is never typed: the tool reads the wall faces on the wall layer of the arch set (LINE and lightweight polyline, both engines; anything else there is listed in skipped), finds the closed face the point lies in and writes that face's area - net of the wall thickness and of any column inside it - into the label and into an ACADMCP_ARCH room record on the name text, which arch_schedule reads. A door or window recorded on the drawing closes its gap along the wall faces, so two rooms either side of a door stay two rooms.

Refused before anything is drawn: an unknown lang (named with en, tr), a number/name the room model refuses, a room_id already labelled on the drawing, a point in no closed face of the walls (draw or close them first, or read a plan drawn by other means with arch_rooms_detect), a point inside a wall body, and a point in a room that already carries a label (one face, one room record - a retried call does not add a second area to the schedule).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesWCS X of a point inside the room; the label starts here.
yYesWCS Y of a point inside the room.
langNoLabel language: en | tr (tr writes 24,50 m²).en
nameYesRoom name, e.g. LIVING / SALON.
scaleNoPlot-scale denominator: 50 is 1:50 (text x 50).
numberNoRoom number, e.g. 01; omit for none.
room_idNoRecord id; default is the first free R<n>.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the minimal destructiveHint=false annotation by describing exactly how area is computed (reads wall faces on the wall layer, net of thickness and columns), how doors/windows affect room separation, what gets written (label text and ACADMCP_ARCH xdata), and the one-label-per-face idempotency behavior.

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?

Front-loads the action, then explains mechanics, then lists refusals. Slightly long, but every sentence is informative. Minor density could be improved but no wasted sentences.

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 7-param mutation tool with no output schema in description, all critical aspects (inputs, side effects, downstream consumption by arch_schedule, refusal cases) are covered. Complete enough for an agent to invoke 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?

Schema coverage is 100%, so baseline is 3, but the description adds meaning: lang values (en, tr) with numeric format example, area is never typed (x,y only), and room_id ties to a record written onto the name text. Adds value beyond schema descriptions.

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 (Label) and resource (the room around x,y) and specifies what the label contains (name, number, MEASURED area). It clearly distinguishes itself from siblings like arch_rooms_detect (read plans drawn by other means) and arch_schedule (reads records).

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 lists refusal conditions (unknown lang, invalid number/name, duplicate room_id, point in no closed face, point in wall, already labeled room) and points to the alternative arch_rooms_detect for plans drawn by other means. This is thorough when/when-not guidance.

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

arch_rooms_detectArchitecture: Detect RoomsA
Read-only

Read the rooms of a plan - ours or a foreign one made of plain lines.

Every LINE and lightweight polyline on the layers is split where lines cross or touch, and the closed faces they bound are measured (mm², net of nested pieces). Faces under min_area, and thin faces (mean width under 600 mm - wall bodies and reveals, this reader's heuristic) are left out. Each room reports confidence: 1.0 when every edge lies on the arch wall layer, 0.6 when any edge is a plain line from elsewhere - read confidence_min before trusting a foreign plan. Room labels already on the drawing are reported in labels with the face they sit in; a face with more than one is listed in label_conflicts.

Never modifies the drawing. Arcs and bulged polyline edges, old-style POLYLINEs and block references are listed in skipped with their handle and reason - never flattened into chords, never dropped silently. Read skipped before trusting count. A foreign plan's open doorways are not closed - two rooms joined by one read as one face. Refused: a named layer the drawing does not have (with the list of the ones it has), and no layer matching WALL or DUVAR when layers is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
tolNoEndpoints closer than this (mm) are one corner.
layersNoLayers holding the walls; default: every layer whose name contains WALL or DUVAR.
min_areaNoSmallest room reported, mm² (1e6 = 1 m²).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true; the description adds substantial behavior beyond that: the line-splitting/face-measurement algorithm, the 600 mm thin-face heuristic, confidence scoring rules, label conflict reporting, and the guarantee that arcs/bulges/blocks are listed in `skipped` rather than silently dropped. This is exactly the extra context annotations cannot carry.

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?

Dense and front-loaded with the core purpose first, then exclusions, confidence, and refusal cases. It is long, but nearly every sentence carries operational information; minor tightening is possible.

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 read-only analysis tool with a full output schema, the description covers purpose, failure modes, confidence semantics, and skipped-entity handling. An agent has everything needed to call it and interpret the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the default WALL/DUVAR layer-matching rule and the refusal behavior when `layers` is omitted or names a missing layer, and ties `min_area` to the filtering behavior.

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+resource ('Read the rooms of a plan') and immediately scopes it to both native and foreign/plain-line plans. Clearly distinguishable from write-oriented siblings like arch_room or hatch_add_boundary.

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?

Gives strong preconditions: read `confidence_min` before trusting a foreign plan, read `skipped` before trusting `count`, and lists explicit refusal cases (unknown named layer, no WALL/DUVAR layer). It lacks explicit 'use X instead' routing to siblings, so it stops 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.

arch_scheduleArchitecture: ScheduleA

Draw a door, window or room schedule as a real TABLE - a read of the drawing.

The rows come from the ACADMCP_ARCH records on the drawing (what arch_wall / arch_opening / arch_room write), never from the caller: doors by tag with width, height, swing, hand and wall; windows by tag with width, height, sill and wall; rooms by number with name and the measured area, plus a total. An opening drawn without a tag gets the next free D1 / W1 (K1 / P1 in Turkish) in wall order; an explicit tag is kept. A value the model does not carry is an empty cell, never a default. representation reports what was drawn: native (ACAD_TABLE, live) or composite (rules and MTEXT, headless).

Refused before anything is drawn: an unknown kind or lang (named with the list), nothing of that kind on the drawing, and more rows than one TABLE takes (198).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesWCS X of the table's top-left corner.
yYesWCS Y of the table's top-left corner.
kindYesdoors | windows | rooms
langNoHeaders and numbers: en | tr (decimal comma).en
scaleNoPlot-scale denominator: 50 is 1:50.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With only destructiveHint=false in annotations, the description carries the load well: it discloses the destructive-safe read nature, the row source, untagged-opening auto-numbering, empty cells instead of defaults, the 198-row ceiling, and the native vs composite representation outcome.

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?

Front-loaded with the core action and the key constraint (records, not caller input) before enumeration of details. Dense but every clause carries information; slightly long, yet nothing is redundant filler.

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?

An output schema exists, so return values need not be described, and the definition still covers data source, refusal modes, and representation output. It stops short of covering edge behavior such as placement conflicts, but is otherwise complete for a 5-parameter, non-destructive generation tool.

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 100% and the schema already documents x, y, kind, lang, and scale. The description adds context about the K1/P1/D1/W1 tag convention and decimal-comma semantics for 'tr', but supplies no new syntax or format detail for the remaining parameters, so baseline 3 applies.

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+resource ('Draw a door, window or room schedule as a real TABLE') and clarifies it is a read of existing drawing records, distinguishing it from write tools like arch_wall/arch_opening/arch_room and from bom_table.

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?

Establishes clear prerequisites and context: rows come only from existing ACADMCP_ARCH records, and it enumerates refusal conditions (unknown kind/lang, nothing of that kind on the drawing, >198 rows). It does not, however, explicitly compare itself to near alternatives such as bom_table or data_extract.

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

arch_stairArchitecture: StairA

A stair in plan: every riser as a line, the outline, the walking line with its arrow.

The label ("UP" / "ÇIKIŞ") sits on the first tread at 2.5 mm × scale. The result reports blondel - 2R + G against 600-650 mm, the step-length rule attributed to François Blondel (1675). It is a design rule reported for the drafter, not a building code: no national stair regulation is checked and a value outside the band is reported (ok: false), not refused.

Refused before anything is drawn: a stair id already on the drawing, a non-positive width, riser height or going, fewer than 2 risers (4 for an L or a U - two per flight), a non-integer riser count, an unknown kind, turn or language.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNostraight | l | ustraight
langNoLabel language: en | tren
turnNoL / U stairs: which way the second flight turnsleft
goingYesTread going G (mm)
scaleNoPlot-scale denominator for the label and arrow (50 = 1:50)
widthYesFlight width (mm)
risersYesNumber of risers from floor to floor
start_xYesWCS X of the midpoint of the bottom riser
start_yYesWCS Y of the midpoint of the bottom riser
stair_idYesStair id, unique on the drawing
riser_heightYesRiser height R (mm)
direction_degNoDirection up the first flight, degrees CCW from +X

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, so the description carries the burden and does so well: it discloses label placement (2.5 mm × scale), the Blondel rule semantics (2R + G against 600-650 mm, reported not enforced, ok:false rather than refusal), and a precise pre-draw refusal list including stair-id collision and geometry constraints. This is exactly the kind of behavioral context annotations cannot express.

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?

Front-loaded with what is drawn, then constraints, then refusals — a sensible order. It is on the verbose side (four dense paragraphs), but nearly every sentence carries a distinct constraint or rule, so little is wasted.

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 12 parameters, 7 required, and an output schema present, the description need not restate return values, and it does supply the refusal conditions and the one notable reported value (blondel). It stops short of stating units/coordinate assumptions beyond what the schema already documents, but nothing critical for a correct call 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?

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains the riser-count minimums (2 straight, 4 for L/U, two per flight), the relationship of risers/going/riser_height to the reported Blondel value, and that the label scales with the scale parameter.

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 resource and the exact geometry produced: 'A stair in plan: every riser as a line, the outline, the walking line with its arrow.' An agent can immediately distinguish this from siblings like arch_wall, arch_opening, or entity_create_line without opening the schema.

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 by the refusal list ('Refused before anything is drawn: ...'), which tells the agent what inputs are invalid, but the description never states when to reach for arch_stair versus alternatives such as arch_plan_from_spec or arch_catalogue_insert. No positive when-to-use guidance or alternative routing is given.

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

arch_symbolArchitecture: SymbolA

Draw one architectural symbol on the arch symbol layer.

Sizes are this server's declared drafting sizes in paper millimetres times scale (a 16 mm north-arrow circle, 10 mm section and elevation bubbles), not standards values. Refusals, all before any write: an unknown kind (with the list), a parameter the kind does not take (with the ones it does), a section mark without p1/p2, with an empty label, an unknown side or a cut line too short for its two arrows, an elevation direction outside up/right/down/left or named twice, a non-finite level value, and a lang other than en/tr.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesSymbol origin X (WCS)
yYesSymbol origin Y (WCS)
kindYesnorth_arrow | section_mark | level | elevation_mark
langNoen | tr - the north letter and the decimal separatoren
scaleNoPlot-scale denominator (50 = 1:50): symbol sizes are paper mm x scale
paramsNonorth_arrow: {rotation} (degrees CCW from +Y; 0 = north up). section_mark: {p1, p2, label, side} - p1/p2 are [x, y] relative to (x, y), side left|right is where the section looks, seen from p1 towards p2. level: {value} in metres (0 -> '±0.00'). elevation_mark: {label, directions} - directions from up|right|down|left

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare destructiveHint=false and a title, but the description adds substantial behavioral context: sizing semantics (paper mm × scale, not standard values) and a full list of refusal conditions that all occur 'before any write'. This atomicity guarantee is exactly the kind of write-safety detail an agent needs and goes well beyond the annotations.

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

Conciseness4/5

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

Front-loaded with the purpose, then a sizing note, then the refusal list. Dense but every clause carries information; the long refusal enumeration is justified because it defines the tool's contract. Slightly sprawling but not wasteful.

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?

An output schema exists, so return values needn't be explained, and the description covers kinds, sizing, and validation thoroughly. The only gap is the lack of explicit alternative-routing against sibling tools, which leaves the agent to infer which symbol tool to pick.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains that sizes are the server's declared drafting sizes (16 mm north-arrow circle, 10 mm bubbles) rather than standards values, and it ties each refusal condition to specific parameter constraints (unknown side, non-finite level, invalid lang).

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+resource+target: 'Draw one architectural symbol on the arch symbol layer.' This clearly distinguishes it from the many other symbol/geometry tools (pid_symbol_insert, weld_symbol, centre_marks, arch_wall) without needing the schema.

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 enumerates the four kinds (north_arrow, section_mark, level, elevation_mark) and their refusal conditions, which implies the intended contexts. However, it never routes the agent explicitly: there is no 'use X instead' guidance against close siblings like section_line, weld_symbol, or pid_symbol_insert, so alternative selection is left to inference.

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

arch_wallArchitecture: WallA

Add walls to the plan network already on the drawing and resolve every junction.

Two ends at one point mitre into a clean L; an end inside another wall is a T (the stem stops on the crossing wall's near face, which is cut there); two axes crossing are an X (all four faces cut). A drawn wall whose outline the new walls change is taken back out and redrawn with its openings - the result lists it under redrawn - and a wall they do not touch is left alone. Every wall carries an ACADMCP_ARCH record, so later calls find it by id.

Refused before anything is drawn or erased, by path: a wall id already on the drawing or used twice, an axis of fewer than two points or with a zero-length segment, a non-positive thickness, an unknown justification or material (the list is named), two walls meeting at less than 5° (the mitre would run away), a wall corner lying inside another wall off its axis, an end inside a wall whose axis only meets it past that wall's end, and a new wall that would leave a drawn opening uncuttable. A curved wall is not supported: an axis is straight segments only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pocheNoHatch the cut wall faces in their material (ISO 128-50)
wallsYesWalls to add: [{id, axis:[[x,y],...] (2+ points, straight segments, WCS mm), thickness, justification:'center'|'left'|'right' (side of the axis looking along it), material:'brick'|'aac'|'concrete'|'reinforced_concrete'|'gypsum_board'|'stone'|'timber'|'generic', closed:bool}]

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With only destructiveHint=false given, the description carries the burden and delivers: junction resolution semantics (L/T/X), redraw-and-listing of affected walls under `redrawn`, the ACADMCP_ARCH record for later id lookup, and a thorough enumeration of pre-draw refusal conditions. This is unusually rich behavioral disclosure.

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?

Dense but front-loaded: the core action comes first, then junction behavior, then mutations, then refusals. Every sentence encodes a rule, though the prose is heavy enough that it could be tightened without losing meaning.

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?

An output schema exists, so return-shape explanation is unnecessary, and the description still covers the one return detail that matters (`redrawn`). For a junction-resolving wall tool, an agent has everything needed to call 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?

Schema coverage is 100%, so the schema already documents `walls` and `poche`. The description still adds meaning beyond it: thickness must be positive, axes need 2+ points with no zero-length segment, justification/material values are validated against named lists, and ids persist via the ACADMCP_ARCH record.

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 opening sentence states a specific verb (add) and resource (walls) plus the scope (the plan network already on the drawing) and the side effect (resolve every junction). It is clearly distinguishable from siblings like arch_opening, arch_stair, and entity_create_line.

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?

Usage is well-framed as an operation on an existing plan network, and the long refusal list effectively communicates when the tool will not act (duplicate ids, degenerate axes, sub-5° mitres, curved walls). It does not explicitly name competing sibling tools, so it stops 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.

balloon_addSheet: Add BalloonA

One ISO 6433 item reference: a numbered balloon, a leader, and a dot on the item.

The balloon carries an ACADMCP_MECH payload naming its targets, so running the balloon pass again after the bill of materials is regrouped renumbers the existing balloon (renumbered: true) instead of drawing a second one. Refusals, all before the first entity: an item number below 1, a leader target inside the balloon, and an item number already used by another balloon for different targets — named with that balloon's handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesBalloon centre X (WCS).
yYesBalloon centre Y (WCS).
itemYesItem reference number, as bom_extract numbers it.
layerNoDIM
layoutNo
radiusNoBalloon radius (mm). The numeral is 1.4x this, so a sheet dimensioned at 3.5 mm wants 5.0 to satisfy ISO 6433.
targetsNoHandles of the INSERTs this item is; the link a rerun renumbers by.
leader_xYesX of the dot on the item.
leader_yYesY of the dot on the item.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only give destructiveHint=false; the description carries the real disclosure burden and does so well, covering idempotency via the ACADMCP_MECH payload (renumbered: true), and enumerating three refusal conditions plus the guarantee that refusals occur 'before the first entity' (atomicity). It stops short of describing layer/permission requirements.

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?

Front-loaded with the entity it creates, then rerun semantics, then refusals — a sensible order with almost no filler. The hard-wrapped lines are cosmetic noise, and the refusal paragraph is dense but earns its place.

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

Completeness4/5

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

For a 9-parameter mutation tool with an output schema, the description covers the non-obvious behavior an agent needs: idempotent renumbering, failure modes, and atomicity. Return values need not be explained given the output schema, so remaining gaps are minor.

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

Parameters4/5

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

With 78% schema coverage the baseline is 3; the description adds real meaning beyond the schema by tying 'item' to bom_extract numbering and defining 'targets' as the handles a rerun renumbers by. The radius/numeral ratio rule is also clarified in-language, though leader and layer/layout stay schema-only.

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 first sentence states a concrete verb+resource ('One ISO 6433 item reference: a numbered balloon, a leader, and a dot on the item'), which unambiguously distinguishes it from siblings like bom_extract, bom_table, or mech_dimension_part. An agent can identify the tool's output entities without opening the schema.

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

Usage Guidelines3/5

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

It explains the re-run case ('running the balloon pass again after the bill of materials is regrouped *renumbers* the existing balloon'), which is useful usage context, but never states when to call this versus siblings such as bom_table or bom_extract, nor any prerequisite (e.g. BOM must exist first). Usage is implied rather than routed.

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

batch_plotBatch PlotA

AutoCAD's PUBLISH for a PDF set, through drawing_export_pdf(layout=…).

One row per sheet: path, bytes, and mediabox_mm parsed from the PDF that was written (/MediaBox, points → mm), with paper naming the catalogue size it matches within 0.5 mm — so the sheet size is verified, never assumed. Model space is included only when named.

Refused before any file is written: a format other than pdf, an empty layouts list, a layout that does not exist, a file_pattern containing a path separator or lacking {layout} when more than one sheet is plotted, and any output path outside the allowed directories. A sheet whose PDF has no readable MediaBox is reported with mediabox_mm: null and an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNopdf (the only format this release plots).pdf
layoutsNoLayouts to plot; omit for every paper-space layout. 'Model' only when named.
output_dirYesFolder for the PDFs (created if missing).
file_patternNoFile name per sheet; {drawing} and {layout} are substituted.{drawing}-{layout}.pdf

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, so the description carries most of the burden — and does. It discloses that sheet size is verified from the written PDF's /MediaBox rather than assumed, lists the exact pre-write refusal conditions (non-pdf format, empty layouts, nonexistent layout, bad file_pattern, disallowed output path), and defines the error contract (`mediabox_mm: null` plus `error`). That is rich, non-obvious behavioral context beyond the annotations.

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

Conciseness4/5

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

Front-loaded with the one-line purpose, then output shape, then refusal rules — a logical order with no filler sentences. Some inline bold and parenthetical detail (points → mm, 0.5 mm tolerance) thicken it, but each clause adds operational meaning.

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 4-parameter batch export tool with an output schema already present, the description supplies everything the missing pieces would otherwise hide: what gets written, how success is verified, what is rejected before writing, and how per-sheet failures surface. An agent can call this correctly without further documentation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real constraint semantics: `file_pattern` must contain `{layout}` when plotting multiple sheets and must not contain a path separator, and `layouts` naming governs whether Model space is included. Those are behavioral constraints on parameters that the schema alone does not express.

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 operation — AutoCAD PUBLISH producing a PDF set — and ties it to the sibling mechanism `drawing_export_pdf(layout=…)`, making clear this is the batch wrapper around a single-sheet export. The name `batch_plot` is immediately grounded by 'PDF set' and 'one row per sheet', so an agent can separate it from drawing_export_pdf without opening either schema.

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?

Usage context is clear: publish many layouts at once, omit `layouts` for every paper-space layout, include 'Model' only when named. The link to `drawing_export_pdf(layout=…)` implies the alternative for single-sheet work, but the description never explicitly says 'use drawing_export_pdf for one layout' nor states when neither should be used.

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

block_create_from_entitiesCreate Block From EntitiesA

Create a new block definition from existing entities in the drawing.

Works on both engines. The originals stay in model space — this defines a reusable block from them rather than consuming them the way AutoCAD's BLOCK command does; use block_insert to place copies, and delete the originals yourself if you want the command's behaviour.

Handles that do not resolve are listed in skipped rather than silently dropped, and a call where none resolve fails instead of leaving an empty definition behind.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew block definition name
base_xNoBlock base point X
base_yNoBlock base point Y
handlesYesList of entity handles to include in the block

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the mutation hint (readOnlyHint=false), the description discloses that originals remain in model space, that unresolved handles are surfaced in `skipped` rather than silently dropped, and that a fully-unresolved call fails instead of creating an empty definition. These side-effect and error-handling details materially shape agent expectations.

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?

Three sentences, front-loaded with the core purpose, and each subsequent sentence adds distinct information: non-consuming semantics, alternative tool routing, and error-handling behavior. No filler or restatement of the title.

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 mutation tool with an output schema, the description covers creation semantics, side effects on source entities, the placement workflow, and failure modes. The existing output schema handles return-value documentation, so nothing an agent needs to call this 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?

Schema coverage is 100%, so the baseline is 3. The description adds real value by explaining the behavior of the handles parameter (unresolved ones go to `skipped`, all-unresolved fails), which goes beyond the schema's bare 'List of entity handles to include in the block.' name, base_x, and base_y appropriately rely on the schema at full coverage.

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 first sentence states a specific verb+resource: 'Create a new block definition from existing entities in the drawing.' The scope is sharpened by distinguishing this from AutoCAD's BLOCK command (non-consuming) and from siblings like block_insert (placement) and block_explode, so an agent can tell them apart.

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 follow-up alternative: 'use `block_insert` to place copies, and delete the originals yourself if you want the command's behaviour.' It also notes cross-engine portability ('Works on both engines'), giving an agent clear context for when and how to chain this call.

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

block_defineDefine BlockA

Create a block definition with attribute definitions from typed specs.

The whole request is validated before anything is written: one malformed entry refuses the call and leaves no definition behind. Refusals: a malformed primitive or ATTDEF (names entities[i]/attdefs[i] and the key), a non-finite base point (names base_x/base_y), a name clash without overwrite, an anonymous * name, and a primitive layer that is not in the drawing's layer table (names the missing layers) unless create_layers=true, which creates them and lists them in layers_created. overwrite=true replaces the contents of an existing block so its INSERTs keep pointing at the name and show the new geometry; replaced reports it. Geometry inside the block is ByBlock so the INSERT's layer supplies colour and lineweight. Insert with block_insert(attributes={TAG: value}).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew block definition name
base_xNoBlock base point X
base_yNoBlock base point Y
attdefsNoAttribute definitions: {tag, x, y, height, prompt?, default?, rotation_deg?, align?, invisible?}
entitiesYesPrimitives in block-local coordinates. type=line {x1,y1,x2,y2} | circle {cx,cy,r} | arc {cx,cy,r,start_deg,end_deg} | polyline {points,closed,bulges?} | text {text,x,y,height,rotation_deg?,align?} | solid {points (3-4)}. Optional layer (default 0).
overwriteNoReplace the contents of an existing definition of this name
create_layersNoCreate primitive layers that do not exist yet (default: refuse and name them)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply readOnlyHint=false. The description carries the full behavioral load: all-or-nothing validation before any write, the exact refusal cases (malformed primitive/ATTDEF, non-finite base point, name clash, anonymous '*' name, missing layers), overwrite replacing contents while preserving INSERT references, ByBlock geometry inheriting INSERT layer colour/lineweight, and the layers_created/replaced outputs. This is well beyond the annotation.

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?

Dense but front-loaded, with the atomicity guarantee first and refusal modes enumerated compactly. Every sentence carries information, though the run-on refusal list is slightly heavy to parse in one pass.

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 mutating tool with 7 params, atomic-write semantics and an output schema, the description covers the transaction behavior, failure modes, overwrite semantics and the follow-up insert call. 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?

Schema coverage is already 100%, so the baseline is 3, but the description adds real semantic value: overwrite replaces the *contents* so existing INSERTs keep pointing at the name, and create_layers creates then lists the layers in layers_created rather than refusing. It does not re-explain name/base_x/base_y beyond the schema.

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

Purpose5/5

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

Opens with a specific verb+resource ('Create a block definition with attribute definitions from typed specs') and distinguishes itself from siblings like block_create_from_entities and block_insert, even naming the latter as the downstream consumer. An agent can identify the operation without opening the schema.

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 routes the agent: use overwrite=true to replace contents, create_layers=true to auto-create missing layers, and use block_insert to place the block afterwards. It enumerates refusal conditions clearly, though it does not contrast against block_create_from_entities, the closest alternative for making blocks from existing entities.

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

block_explodeExplode BlockA
Destructive

Explode a block reference into its component entities, keeping its attribute text (the Express Tools BURST rule, on both engines).

Every attached ATTRIB becomes a TEXT with the same value, placement, height, rotation and layer (an invisible attribute becomes an invisible TEXT; a multi-line attribute becomes an MTEXT carrying every line), and a constant attribute (which has no ATTRIB) becomes a TEXT of its value too; AutoCAD's plain EXPLODE would keep only the tag-name placeholders and drop the values. Everything lands in the layout that owns the reference (model space or its paper-space sheet), whichever tab is current. Returns inserted_handles (the geometry), attribute_texts (one TEXT or MTEXT handle per attribute), exploded_handle and backend. Refused, with nothing written: a handle that is not a block reference, a reference nested inside a block definition (explode the outer reference instead), an external reference (bind it first), a MINSERT grid, and -- headless only, capability explode_opaque_members -- a block holding a member ezdxf cannot transform (an OLE2FRAME logo, a VIEWPORT, a proxy entity without proxy graphics), named by member; the live engine hands those to AutoCAD. Not undoable except through drawing_undo / a transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesBlock reference (INSERT) entity handle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/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 substantial behavioral context beyond that: how ATTRIBs become TEXT/MTEXT, invisible/constant attribute handling, layout placement, no-undo semantics via drawing_undo/transaction, headless capability restrictions, and refusal cases with nothing written.

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 core action is front-loaded in the first sentence, followed by dense but relevant behavioral detail. It is appropriately sized for a complex destructive operation, though some return-value detail overlaps with the output schema, keeping it from a perfect 5.

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?

Given the destructive nature, output schema, and multiple edge cases, the description covers refusal conditions, side effects, undo caveats, return fields, and engine differences. An agent has everything needed to invoke it correctly and anticipate failures.

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 100% and the single handle parameter is fully described in the schema as 'Block reference (INSERT) entity handle'. The description references the handle in refusal conditions but adds no syntax or format detail beyond what the schema already provides, so the baseline of 3 is appropriate.

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 and resource: 'Explode a block reference into its component entities, keeping its attribute text (the Express Tools BURST rule, on both engines).' It contrasts with AutoCAD's plain EXPLODE and makes the attribute-retention behavior central, which distinguishes it from sibling block_* tools.

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 clearly applies to block reference handles and lists when the operation is refused (non-block handle, nested reference, xref, MINSERT, opaque member). However, it does not explicitly name alternative tools such as block_get_attributes or say when to prefer this over them, so it stops short of full when/when-not/alternatives guidance.

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

block_find_referencesFind Blocks By NameA
Read-only

Find all insert references to a specific block definition.

Bounded by the backend's own default entity_list page (200 INSERTs scanned), which is a pre-existing limit, not a new one: the compact envelope's total counts the references found within that scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesBlock definition name to search for
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

The description discloses a meaningful behavioral limitation: only the backend's default 200 INSERTs are scanned, and the compact envelope's total counts only references found within that scan. This adds real context beyond the readOnlyHint annotation and helps set accurate expectations about completeness and truncation.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and the follow-up sentence about the scanning limit earns its place. There is no redundant restatement of the title or schema.

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 read-only query tool with a rich input schema and an output schema, the description covers the essential behavioral caveat, return-shape nuance, and purpose. Nothing critical is missing 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.

Parameters3/5

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

The input schema already provides full descriptions for all three parameters, including the compact envelope shape and the fields projection syntax. The description adds some nuance about the compact total field, but it does not meaningfully explain parameter usage beyond what the schema already documents, so the baseline 3 applies.

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—'Find all insert references to a specific block definition'—with a clear verb and resource. It naturally differentiates itself from sibling tools like block_list, which lists block definitions, by focusing on references to a definition.

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 explicit guidance about when to use this tool versus alternatives, nor any mention of when not to use it. The sibling set includes block_list and entity_list, but the description never explains how this tool relates to them or when one should be preferred.

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

block_get_attributesGet Block AttributesA
Read-only

Get all attribute values from a block reference as {TAG: value} dict.

A multi-line attribute reports its whole content with \P between the lines (AutoCAD's TextString), on both engines.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesBlock reference (INSERT) entity handle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. Beyond that, the description adds real value: it documents the return shape as a {TAG: value} dict and discloses the subtle edge case that multi-line attributes are returned with `\P` separators (AutoCAD TextString) on both engines — a genuine behavioral disclosure an agent would not get from the 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?

Two short sentences, front-loaded with the core action and return type, followed by one narrowly scoped edge-case note. Nothing is redundant and nothing is wasted.

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?

An output schema exists, so return values needn't be spelled out, and the readOnly annotation covers safety. Combined with the description's return-shape and multi-line notes, an agent has what it needs; only explicit sibling routing (vs. block_set_attributes/entity_get) is missing.

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 100% and the single `handle` parameter is documented as a 'Block reference (INSERT) entity handle'. The description's reference to 'a block reference' restates rather than extends that; baseline 3 applies when the schema does the heavy lifting.

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 ('Get all attribute values from a block reference') and even specifies the return shape ({TAG: value} dict). The 'Get' vs. the sibling block_set_attributes is implicitly clear, but the description never explicitly names or distinguishes itself from that sibling, 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?

No statement of when to use this tool versus alternatives such as entity_get, block_list, or block_set_attributes, and no prerequisites (e.g. the handle must reference an INSERT with attributes). The multi-line note is behavioral, not usage guidance.

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

block_insertInsert BlockA

Insert a block and optionally set attribute values.

Refused before any write, on both engines: an undefined or layout block name, and an attribute value that is not text — a string is written as is (one line), an int or finite float as its plain digits (101 → "101"), while null, booleans, lists and objects are refused naming the tag (they used to be written as their Python repr). Values for tags the block does not define are ignored.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesInsertion X
yYesInsertion Y
nameYesBlock definition name
layerNoLayer name
scale_xNoX scale factor
scale_yNoY scale factor
rotationNoRotation angle in degrees
attributesNoAttribute values: {TAG: value}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false, so the description carries most of the behavioral burden and does so well: it discloses the coercion rules (int/finite float become plain digits, strings written as-is on one line), the explicit rejections (null, booleans, lists, objects, named by tag), and that values for undefined tags are silently ignored. It stops short of describing transaction/permission requirements or atomicity with respect to the drawing state.

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 core action is front-loaded in the first sentence, and the second paragraph is dense but every clause carries a distinct rule (refusal cases, coercion, ignoring unknown tags). It is longer than ideal but not padded.

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 an output schema present, return values need no explanation, and the description adequately covers the write-refusal and value-coercion semantics that an agent must know before calling. The main gap is that mutation side effects and interactions with siblings are left implicit.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline would be 3, but the description genuinely adds semantics beyond the schema's '{TAG: value}' for attributes — it specifies the accepted value types and the exact conversion behavior. No added meaning is given for x, y, layer, scale, or rotation, which the schema already covers.

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 first sentence names a specific verb and resource ('Insert a block') plus the optional attribute-setting capability, which separates it from block_define and block_set_attributes. It does not, however, distinguish itself from the closely related sibling entity_create_block_ref, so an agent must still infer which insertion path applies.

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

Usage Guidelines3/5

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

The description implies usage through its refusal conditions (undefined/layout block names are rejected) but never states when to choose this tool over block_define, entity_create_block_ref, or block_set_attributes. Context is implied rather than explicit.

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

block_listList BlocksA
Read-only

List all block definitions in the drawing (name, origin, attribute count, entity count).

Never truncated — the whole block table is returned — so a compact envelope here always reports truncated=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses a key behavioral trait: the result is never truncated and the compact envelope always reports truncated=false. This is valuable runtime context that is not available from annotations or the schema alone.

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 tightly written sentences. The first delivers the core purpose and expected fields; the second adds the most important behavioral caveat. No filler or repetition.

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?

Given the read-only annotation, rich parameter schema with descriptions, and an output schema, the description covers the remaining essential context: output scope, non-truncation, and the compact envelope behavior. Nothing critical 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning by explaining what fields exist in the block definitions and by connecting the compact envelope to the never-truncated guarantee. This goes beyond simply repeating schema names.

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

Purpose5/5

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

The description explicitly states a specific action ('List'), a precise resource ('all block definitions in the drawing'), and the returned fields ('name, origin, attribute count, entity count'). It clearly distinguishes this from filtered or reference-based block tools.

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 makes clear this returns the whole block table and never truncates, which sharpens when to use it. It does not explicitly name alternatives or exclusions, but the purpose and scope are unambiguous enough for a selection decision.

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

block_set_attributesSet Block AttributesA

Update attribute values in a block reference.

Same value rule as block_insert: strings and numbers are written, null / booleans / lists / objects are refused naming the tag before anything changes. updated_tags lists the tags that exist on the reference and were written; unknown tags are ignored.

A multi-line attribute takes Line1\PLine2 and keeps every line; the value written is the one block_get_attributes reads back and block_explode bursts, on both engines.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesBlock reference (INSERT) entity handle
attributesYesAttribute values to update: {TAG: new_value}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false, so the description carries most of the behavioral load and does so well: it discloses pre-write validation (bad types refused naming the tag before anything changes), that unknown tags are silently ignored, and the updated_tags reporting contract. It falls short of stating permissions or failure modes on a missing/invalid handle.

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?

Three short paragraphs, front-loaded with the core action and then the value rule, with essentially every sentence carrying invocation-relevant information. Phrasing is slightly idiosyncratic ('bursts', 'on both engines') but not wasteful.

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 mutation tool with an output schema and minimal annotations, the description supplies the constraints, atomicity guarantee, value-type rules and round-trip consistency an agent needs to call it safely. Nothing material 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?

Schema coverage is 100%, so the 3 baseline applies, but the description meaningfully exceeds it: it defines which value types are writable (strings/numbers) versus refused (null/booleans/lists/objects), how multi-line values are encoded via 'Line1\\PLine2', and how unknown tag keys are treated. Only the handle parameter is left entirely to the schema.

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

Purpose5/5

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

States a specific verb+resource ('Update attribute values in a block reference') that is unmistakably distinct from the read-side sibling block_get_attributes and the creation-side block_insert. The scope is narrow and the agent can select it without opening another schema.

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 strongly implied by the mutating verb and the discussed constraints (values are refused before anything changes), but there is no explicit routing guidance such as when to prefer block_insert/block_define or what preconditions the reference must satisfy. The mentions of block_insert, block_get_attributes and block_explode are consistency references, not alternatives for the agent to choose between.

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

bom_extractSheet: Extract Bill of MaterialsA
Read-only

Walk the INSERTs and return the ISO 7573 item rows. Never modifies the drawing. bom_table is what draws them.

Each row's source is reported: xdata when the ACADMCP_MECH payload supplied it (what std_part_insert writes), attributes when the block's own ATTRIBs did. A block with neither a payload nor a DESIGNATION attribute is skipped rather than guessed at, and skipped counts them.

The whole drawing is read by default — entity_list's 200-entity page is paged through, not taken as a cap, because an item list that stops at the 200th INSERT prints a wrong QTY rather than a shorter one. Pass limit to cap it deliberately; truncated is then true if and only if the cap cut the list. Refusals: an unknown column or group_by field, named with the list of the ones there are.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoOnly read INSERTs on this layer; empty reads all.
limitNoStop after this many item records; 0 (the default) reads the whole drawing. `truncated` says whether the cap cut the list.
columnsNoColumns to return; default item, qty, designation, standard, material.
group_byNoField to group identical parts by: designation, standard, material, or '' for one row per insert.designation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond readOnlyHint=true, the description discloses that it never modifies the drawing, how each row's provenance is reported (xdata vs attributes), that payload-less/attrib-less blocks are skipped rather than guessed, that skipped counts them, and the exact `truncated` invariant. This is unusually rich behavioral context for a read tool.

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?

Front-loaded with purpose, then provenance, then paging semantics. Dense but every sentence carries information; the parentheticals ('what `std_part_insert` writes', 'not taken as a cap') are somewhat verbose but justified.

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?

An output schema exists, and the description still supplies the non-obvious return semantics (row source, skipped count, truncated invariant) plus refusal behavior. Nothing an agent needs to call 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?

Schema coverage is 100% and the schema already documents all four params, but the description adds real meaning: the rationale for limit=0 (a capped list prints a wrong QTY, not a shorter one) and the iff-relationship between `limit` and `truncated`. It adds less on layer/columns/group_by, which the schema covers.

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+resource ('walk the INSERTs and return the ISO 7573 item rows') and immediately distinguishes itself from the sibling that renders them ('`bom_table` is what draws them'). An agent can separate extract vs. draw 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 says the whole drawing is read by default and why the entity_list 200-page is paged through rather than treated as a cap, then states when to pass `limit`. It also names the refusal cases (unknown column or group_by field), giving clear use/avoid conditions.

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

bom_tableSheet: Draw Parts ListA

Draw the ISO 7573 item list as a real TABLE entity, 180 mm wide (the title-block width), growing upwards from directly above the title block.

With direction="up" the heading row sits against the title block and item 1 is the row above it, so the list extends upwards as parts are added — which is what ISO 7573 asks for on a drawing. Pass rows to draw a list you already have, or omit it and the tool runs bom_extract first. representation reports what was drawn: native (a real ACAD_TABLE on the live engine) or composite (rules and MTEXT headlessly, whose handle is the first child). Refusals: no rows to draw, an unknown column, an unknown direction, a layout that does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
at_xNoOverride the anchor X; default is the title block's.
at_yNo
rowsNoRows to draw; omit to extract them from the drawing first.
sizeNoSheet the list is placed on.A3
layoutNo
columnsNo
origin_xNo
origin_yNo
directionNo'up' (ISO 7573 on a drawing: heading at the bottom, items ascending) or 'down'.up
row_heightNo
orientationNolandscape

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only carry destructiveHint=false, so the description carries the burden and does so well: it discloses the two representation modes (native ACAD_TABLE vs composite rules+MTEXT with handle pointing at the first child), the growth direction semantics, and the four refusal cases. That is exactly the non-obvious behavior an agent needs.

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?

Front-loads the core action and size, then branches to direction, rows/omission, representation, and refusals in a compact sequence. The direction sentence partially repeats the schema's own description, which is minor waste but not bloat.

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

Completeness4/5

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

For an 11-parameter tool with an output schema (so return shape needn't be explained) and thin annotations, it covers the decision-critical pieces: source of rows, orientation behavior, representation output, and refusal modes. Remaining gaps are the anchor/origin parameter semantics.

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 36% across 11 params, and the description compensates for direction, rows, and columns (via the unknown-column refusal) but says nothing about at_x/at_y, origin_x/origin_y, size, layout, row_height, or orientation. Partial coverage leaves several parameters to be inferred from names alone.

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 and resource ('Draw the ISO 7573 item list as a real TABLE entity'), names the exact geometry (180 mm, title-block width) and placement (above the title block), distinguishing it from sibling bom_extract, which it only invokes as a data source.

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?

Explains the key branch: pass `rows` to draw an existing list, omit it to run bom_extract first, plus when to use direction='up' per ISO 7573. It also enumerates refusal conditions. It does not contrast against other table/annotation siblings (entity_create_table, balloon_add), so it falls short of explicit alternatives.

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

boundary_from_entitiesBoundary from EntitiesA

Chain the given entities into one closed polyline.

The handles may arrive in any order — putting them in chain order is the tool's job. A chain that does not close is refused, and the error names the coordinates of the gap.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlesYesHandles of the 2D entities that form the loop.
toleranceNoGap tolerance for joining endpoints.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the destructiveHint=false annotation, the description discloses that handles may arrive in any order, that chain ordering is handled internally, and that non-closing chains are refused with an error naming the gap coordinates. It does not explicitly state whether original entities are modified or a new polyline is created, but the annotation reduces that risk.

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?

Three short sentences carry substantial, non-redundant information. The primary purpose is front-loaded, and every sentence earns its place without filler or repetition of the schema.

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

Completeness4/5

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

For a two-parameter tool with a full output schema and a safety annotation, the description covers the essential semantics: input, ordering, closure requirement, and failure behavior. A minor gap is the lack of explicit guidance on where the resulting polyline is created or how it relates to the original entities, but this is not critical for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds meaningful semantic detail by clarifying that handles are order-independent and by tying the close requirement to the tolerance/rejection behavior, which enriches the agent's understanding beyond raw schema properties.

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 and outcome: 'Chain the given entities into one closed polyline.' It also clarifies the tool's unique responsibility—handling arbitrary handle order—which distinguishes it from merely exporting or tracing boundaries.

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 implies when to use the tool: when you have unordered entity handles that need to be chained into a closed boundary. It does not explicitly name alternatives or exclusion conditions, such as when boundary_trace would be preferable, so it falls short of full guidance.

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

boundary_traceTrace BoundaryA

AutoCAD's BOUNDARY/BPOLY: create a closed polyline around a seed point.

Returns the nearest enclosing loop, so a seed inside an island gives the island rather than the outer region. Straight edges are split where they cross, so a line drawn across a shape divides it the way it looks like it should. A seed with no enclosing loop is refused, and the error names the gap when the edges nearly close.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesSeed point X, inside the region to trace.
yYesSeed point Y, inside the region to trace.
layerNoOnly consider edges on this layer. Empty considers all.
toleranceNoGap tolerance for joining edges.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by explaining key behaviors: nearest-enclosing-loop selection, edge splitting on crossings, refusal when no loop is found, and error messaging that names gaps. This gives the agent important expectations that the annotations alone do not convey.

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

Conciseness5/5

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

The description is compact and front-loads the core action first, then adds edge-case behavior in short, informative sentences. Every sentence earns its place without redundancy.

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?

Given an output schema is present and the annotations indicate a non-destructive operation, the description covers the essential invocation semantics, edge cases, and failure behavior. An agent has enough context to call this tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are already well documented. The description adds some nuance around tolerance by describing the near-close gap failure mode, but it does not add substantially new meaning to the parameters beyond what the schema provides.

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

Purpose5/5

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

The description opens with a specific verb and resource: "create a closed polyline around a seed point" and names AutoCAD's BOUNDARY/BPOLY as the reference. The seed-point mechanism distinguishes it from the sibling boundary_from_entities, making its purpose unambiguous.

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 provides clear context for when to use the tool: when a boundary must be created from a seed point and when the nearest enclosing loop is the desired result. It stops short of naming explicit alternatives or when-not-to-use conditions, but the behavioral guidance is strong enough to guide selection.

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

cable_takeoffPlant: Cable TakeoffA

A cable takeoff: one row per electrical load, the shop's cable method made repeatable.

Power, phases, voltage, neutral and VFD come from the P&ID's electrical texts near each tag (Russian, Turkish and English spellings). Power is never invented: a load with no stated kW keeps an empty cell and an open item. The panel comes from the layout's wiring callouts ('Wiring to CP1' and its variants, normalised to CP-1), else from the P&ID ('к CP1'); a load neither places takes the nearest panel on the layout, flagged panel_inferred (panel_rule='stated' leaves it open). The length is the Manhattan distance on the layout from the load's tag to its panel's tag, and the cable is ROUNDUP(length x (1 + allowance)) to the metre. Room and panel totals count known power once: a load wired to a panel that states its own power is part of that package, and the package's power is counted instead of its children's - the rule is written on the method sheet. Sections only from section_rules; no standard table is applied. Open items: missing power, missing panel, a tag or panel not on the layout, no layout at all, a load no section rule covers.

Read-only on both drawings. With output it writes one workbook - Metraj, Özet, Kontrol, Metodoloji - as XLSX and, always, as CSV beside it.

Refused before a drawing is read: lang outside tr / en / ru, an allowance outside 0-1 and a malformed section rule (named by its path, section_rules[0].section: ...). A missing, unreadable or oversize drawing is refused by the reader, which names MAX_DXF_BYTES. Without openpyxl the XLSX is not written and files.refused carries capability: "xlsx_write" naming the office extra; the CSV files are written all the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoHeaders and method text: tr | en | ru.en
outputNoWorkbook to write (.xlsx); the four sheets are also written as CSV beside it. Omit to return the rows only.
pid_pathNoThe P&ID carrying the electrical texts (kW, phases, voltage, VFD). Omit to read the current drawing.
allowanceNoAllowance before rounding up to the metre (0.20 = 20 %).
panel_ruleNoA load no wiring callout places: 'nearest' takes the nearest panel on the layout and flags the row panel_inferred; 'stated' leaves it open.nearest
layout_pathNoThe layout with the tags, the panels and the 'Wiring to CPn' callouts. Omitted, every length stays empty with an open item.
section_rulesNoYour own section table: [{max_kw, section, phases (1|3, optional)}], e.g. [{'max_kw': 5.5, 'section': '5x2.5'}]. Omitted, no section is proposed.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses extensive behavior beyond the safety annotations: power is never invented, panel inference flags `panel_inferred`, length is Manhattan distance with rounding, totals count power once per package, open items are listed, and refusals occur for invalid lang/allowance/section rules or unreadable drawings. It also explains the write side-effect (XLSX/CSV output) and the fallback when openpyxl is missing. This is far richer than the readOnlyHint=false / destructiveHint=false 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 front-loaded with a one-sentence purpose, then proceeds through rules, outputs, and refusals in a logical order. It is dense, but each sentence conveys a distinct rule or constraint. There is minor repetition around section rules and open items, but overall it is appropriately sized for a complex 7-parameter tool.

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?

With an output schema present, the description need not explain return values. It covers prerequisites, defaults, validation refusals, output artifacts, and fallback behavior comprehensively. An agent has everything needed to invoke the tool correctly, including the read-only-on-drawings clarification against the write side-effect.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful parameter constraints beyond the schema: `lang` values outside tr/en/ru are refused, `allowance` outside 0-1 is refused, malformed `section_rules` are named by path, and `output` writes four named sheets plus CSVs. These details go beyond the schema's own parameter descriptions, though some panel_rule behavior is repeated from the schema.

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

Purpose5/5

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

The first sentence names a specific verb and scope: 'A cable takeoff: one row per electrical load, the shop's cable method made repeatable.' It clearly distinguishes this from generic extraction tools by focusing on electrical loads and a repeatable cable method. An agent can tell it apart from siblings like pipe_takeoff without opening the schema.

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 describing the inputs it reads (P&ID, layout) and the output it produces, but it never explicitly states when to choose this tool over alternatives such as pipe_takeoff. No exclusions or 'when not to use' guidance are given. The context is clear enough to infer the tool's purpose, but routing guidance is absent.

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

cad_batchBatch: Run ToolsA
Destructive

Execute an ordered list of tool calls in ONE round trip.

N calls collapse into one request/response pair, and bind lets a later step reference an earlier step's result so handles never have to be echoed back through the model.

steps=[
  {"tool": "entity_create_line",  "args": {...}, "bind": "edge"},
  {"tool": "point_from_snap",     "args": {"handle": "$edge", "snap": "mid"},
                                  "bind": "mid"},
  {"tool": "entity_create_circle","args": {"cx": "$mid.x", "cy": "$mid.y",
                                           "radius": 4}},
]

Successful steps report only their handle; pass verbose=True for the full result. Anything without a handle is returned whole.

VALIDATION runs first, always: an unknown tool, a schema-invalid argument or a reference no earlier step binds refuses the whole batch before anything executes. on_error governs run-time failures only. dry_run=True returns that validation report and executes nothing.

ERRORS are typed, never text: each failed step carries error.kind - one of unsupported (with the backend capability), invalid_args, refused, failed, unknown_tool, unresolved_ref, denied, malformed_step.

ATOMICITY is reported, not assumed. Read the atomicity block: on the headless backend rollback restores a full document snapshot; on live AutoCAD it sends an UNDO whose landing AutoCAD never confirms. The default on_error="stop" claims nothing and is exact on both.

NOT CALLABLE from a batch: the raw command/LISP escape hatches, and cad_batch itself. Call those directly.

For a few hundred entities of the same kind, entity_batch_create is denser still (no per-step tool name) - and it can be one step of a cad_batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesOrdered steps. Each: {'tool': <tool name>, 'args': {...}, 'bind': <optional name>}. 'bind' names this step's result so a later step can reference it as '$name' (its handle), '$name.field' or '$name.list.0'. '$$' is a literal dollar sign.
dry_runNoValidate every step against its tool's real JSON Schema and execute nothing.
verboseNoReturn each step's full result instead of just its handle.
on_errorNostop (default): halt at the first failure, keep what already ran. continue: run every step. rollback: open a checkpoint first and undo on failure - read the returned `atomicity` block for what that is worth on this backend.stop

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses validation-first execution, typed error kinds, on_error semantics, dry_run behavior, verbose output behavior, and the nuances of atomicity across backends. This is far more than annotations alone provide and sets accurate expectations for side effects.

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

Conciseness5/5

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

The description is long but every section earns its place given the tool's complexity: example, validation behavior, error model, atomicity caveats, exclusions, and sibling alternative. The core benefit is front-loaded, and the structure is skimmable with clear labels.

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?

With an output schema present, the description correctly focuses on behavior rather than return shapes. It covers success output, verbose mode, validation, dry_run, error typing, atomicity, and exclusions, making it fully actionable for correct invocation in a wide range of scenarios.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds deep semantics for steps, bind references, '$name.field' access, '$$' escaping, dry_run validation behavior, and on_error modes. The worked example makes parameter composition concrete, going well beyond the schema's field descriptions.

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

Purpose5/5

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

The description opens with 'Execute an ordered list of tool calls in ONE round trip,' which names a specific verb, resource, and key benefit. It also distinguishes itself from entity_batch_create by noting that tool is denser for many homogeneous entities, so the purpose is clear and differentiated from siblings.

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?

Explicit guidance covers when cad_batch is appropriate and when it is not: it states that raw command/LISP escape hatches and cad_batch itself cannot be called from a batch, and recommends entity_batch_create for large homogeneous sets. This gives an agent concrete routing rules.

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

centre_marksCentre Marks (ISO 128-23)A

Centre marks on the CENTER layer, whose linetype carries ISO 128-23's dash pattern.

Pass handles and the radii are read back with entity_get rather than restated — a radius from memory is the classic silent wrong number. Refusals, all before the first entity is written: neither handles nor centers given (or both), a handle that is not a CIRCLE or ARC, a circle in a plane tilted out of WCS XY (capability ocs_tilted_plane, so it has no radius in this frame), a style outside mark/lines, a non-positive extension, and style='lines' on a centre given without a radius.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoOverride the CENTER role layer.
styleNomark (short cross at the centre) | lines (full centre lines).mark
centersNoExplicit centres as [x, y] or [x, y, radius]; style='lines' needs the radius.
handlesNoHandles of CIRCLEs/ARCs; their real centre and radius are read from the drawing.
extensionNoArm length (mark) or overrun past the outline (lines), mm.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only declare destructiveHint=false, so the description carries nearly the whole load and does: it frames the operation as a write ('before the first entity is written'), lists six distinct validity refusals, notes the ocs_tilted_plane capability limitation, and warns against supplying remembered radii. That is unusually rich behavioral disclosure beyond structured fields.

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?

It is dense but front-loaded with the purpose before the guidance, and the refusal list is scannable. Idiosyncratic asides like 'the classic silent wrong number' cost some space, but every sentence still carries actionable information.

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

Completeness4/5

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

With an output schema present, return values need not be described, and the description covers inputs, validation, layer behavior, and the ISO standard. Minor gaps remain (default layer when `layer` is null, what specifically gets created), but nothing critical for correct invocation 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?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics: handles are preferred over centers because real centre/radius are read back, and style='lines' requires a radius. The mark-vs-lines and extension meanings are already in the schema, so it does not double up unnecessarily.

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?

It states a specific action and target: placing centre marks on the CENTER layer matching ISO 128-23's dash pattern. The verb is implied rather than stated outright ('Centre marks on the CENTER layer'), but the resource and standard are unambiguous and no sibling tool does the same thing.

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 real selection guidance: prefer `handles` so radii come from the drawing via entity_get rather than being restated, and it enumerates the preconditions that cause refusal (neither/both input sets, non-CIRCLE/ARC handles, tilted planes, bad style, non-positive extension). It stops short of naming an alternative tool for the explicit-coordinate case, but the when-to-use logic is present.

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

construction_clearConstruction: Clear (delete scaffold)A
Destructive

Delete every entity on the CONSTRUCTION layer. Idempotent. Must be called before drawing_finalize to satisfy construction_left critique.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoLayer to clearCONSTRUCTION

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as destructive, and the description adds valuable behavior beyond that: the operation is idempotent. It also explains the required ordering relative to finalization. No contradiction with annotations.

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

Conciseness5/5

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

Three short sentences, each earning its place: the action, idempotency, and the required ordering. The most important behavior is front-loaded and there is no filler.

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 single-parameter, optional-layer tool with an output schema and destructive annotation, the description covers the essential action, idempotency, and the key workflow dependency. Nothing critical is missing 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.

Parameters3/5

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

Schema description coverage is 100%, so the optional `layer` parameter is already documented as 'Layer to clear'. The description reinforces the default CONSTRUCTION layer but does not add significant semantic detail beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Delete') with a clear resource ('every entity on the CONSTRUCTION layer'). It clearly distinguishes this scaffold-clearing operation from layer deletion and generic entity deletion tools 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 Guidelines4/5

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

It explicitly states when this must be called: before `drawing_finalize`, to satisfy the `construction_left` critique. It gives solid contextual guidance, though it does not name alternatives or explicitly say when not to use it.

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

construction_xlineConstruction: XLine (infinite reference)A

Create an infinite construction line on the CONSTRUCTION layer. Use as scaffolding; call construction_clear() before finalize.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesBase point X
yYesBase point Y
layerNoLayer for the construction lineCONSTRUCTION
angle_degYesAngle in degrees (0=horizontal, 90=vertical)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses that the line is infinite and placed on the CONSTRUCTION layer, which the annotations (destructiveHint=false) do not fully convey. It also hints at a temporary nature ('scaffolding') and a required cleanup step. This goes beyond the basic safety hint, providing important behavioral context.

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

Conciseness5/5

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

The description is two sentences long, with the core action front-loaded. Every clause earns its place—the scaffolding note and cleanup instruction are crucial without adding bloat. Highly efficient.

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

Completeness4/5

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

For a simple creation tool with a complete schema and annotations, the description is almost fully sufficient. It explains the purpose, usage, and cleanup requirement. The only missing piece is a mention of the output schema or return value, but that is covered by the output schema presence.

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

Parameters3/5

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

The input schema already has 100% coverage with descriptions for all parameters (x, y, layer, angle_deg). The description adds minimal extra semantics beyond what the schema provides. Baseline 3 is appropriate since the schema handles the heavy lifting.

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 and resource: 'Create an infinite construction line on the CONSTRUCTION layer.' It also differentiates from siblings like construction_clear by mentioning scaffolding and the need to call it before finalize. The purpose is unambiguous.

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 provides clear context on when to use the tool: 'Use as scaffolding; call construction_clear() before finalize.' It implies this is not the final entity creation tool, but it does not explicitly mention alternatives like entity_create_line or state when NOT to use it. The usage guidance is strong but not exhaustive.

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

data_extractSheet: Extract DataA

The same rows bom_extract returns, written to a file.

Refusals: a format that is not 'csv' or 'xlsx'; a drawing with nothing to itemise (nothing is written); and fmt='xlsx' without openpyxl, which carries capability: "xlsx_write" and names both the package to install and the CSV route that always works.

ParametersJSON Schema
NameRequiredDescriptionDefault
fmtNo'csv' (always available) or 'xlsx' (needs openpyxl).csv
pathYesFile to write, ending .csv or .xlsx.
layerNoOnly read INSERTs on this layer; empty reads all.
columnsNo
group_byNoGroup identical parts by this field, or ''.designation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With only destructiveHint=false in annotations, the description carries real behavioral weight: it discloses three distinct failure modes, the capability flag 'xlsx_write', and the fact that nothing is written on an empty drawing. This goes well beyond the annotations. It does not describe overwrite behavior for an existing path, which slightly limits it.

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?

Two compact paragraphs with the identifying comparison front-loaded and a labeled 'Refusals:' block that earns its space by covering edge cases. Slightly dense dash-heavy prose but no wasted sentences.

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 an output schema present, return values need not be explained, and the description covers the operational hazards an agent needs (format support, dependency, empty input). It leaves the file-overwrite/pre-existing-file case unaddressed, a minor gap for a file-writing tool.

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 already 80% and documents fmt, path, layer, columns, and group_by with enums and defaults. The description reinforces the fmt/openpyxl constraint but adds no syntax or format detail for path extensions, layer filtering, or grouping beyond what the schema states, so the baseline 3 applies.

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?

It names the resource ('the same rows bom_extract returns') and the distinct action ('written to a file'), which cleanly separates it from its closest sibling bom_extract without requiring the schema. An agent can tell immediately that this is the export counterpart to the extract tool.

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 refusal list effectively states when the tool will not work (unsupported format, empty drawing, xlsx without openpyxl) and points to the CSV route as the always-available alternative. It implies the use case implicitly via the bom_extract comparison but never says explicitly 'use this instead of bom_extract when you need a file', so it falls short of a full 5.

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

datum_featureGD&T: Datum Feature (ISO 1101)A

Place a datum feature symbol (filled triangle + boxed letter).

Establishes the datum so a feature control frame referencing this letter passes the gdt critique focus.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesDatum triangle apex X (on the referenced feature).
yYesDatum triangle apex Y.
sizeNoTriangle/label size (mm).
layerNoLayer (defaults to the active DIM layer).
letterYesDatum letter, e.g. 'A' (avoid I, O, Q per ISO 1101).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With destructiveHint=false provided by annotations, the safety profile is already clear. The description adds behavioral context about the datum's effect on gdt critique outcomes, which goes beyond annotations. However, it does not disclose what the tool returns or whether it requires existing geometry at the x,y location, leaving some behavior implicit.

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 two sentences, front-loaded with the primary action ('Place a datum feature symbol') and then the functional purpose. Every sentence earns its place, and there is no redundant repetition of the title or schema details.

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

Completeness4/5

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

For a GD&T placement tool with a complete schema and an output schema, the description provides the essential purpose and effect. It connects the tool to the broader critique workflow, which is important for agent decision-making. Minor gaps such as prerequisites (e.g., open drawing, attached geometry) and return behavior are not covered, but the overall context is adequate.

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 100%, so the input schema already documents all parameters. The description adds a little context by mentioning the filled triangle and boxed letter, but it does not elaborate on x, y, size, or layer beyond what the schema already provides. Baseline 3 is appropriate.

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 ('Place') and resource ('datum feature symbol (filled triangle + boxed letter)'), and explains the functional consequence ('Establishes the datum so a feature control frame referencing this letter passes the `gdt` critique focus'). This clearly distinguishes it from sibling tools like gd_frame, which places the feature control frame itself.

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 states the context in which the tool should be used: when a datum is needed so that a feature control frame referencing that letter will pass the gdt critique. It does not explicitly name alternatives or exclusions, but the reference to feature control frames and the critique focus gives an agent enough situational guidance.

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

dimension_alignedAligned DimensionA

Create an aligned dimension that measures the true distance between two points.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesFirst point X
x2YesSecond point X
y1YesFirst point Y
y2YesSecond point Y
dim_xYesDimension line position X
dim_yYesDimension line position Y
layerNoLayer name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description clearly discloses that the operation creates a dimension entity, which is consistent with readOnlyHint=false. It adds the behavioral nuance that the dimension reflects true distance rather than a projected distance, though it does not mention side effects like placement on the current layer or associativity.

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 no filler; every phrase ('aligned dimension', 'true distance', 'between two points') carries meaning. It is appropriately sized for the tool's complexity.

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

Completeness4/5

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

For a low-complexity creation tool, the description plus fully documented parameters and output schema cover the necessary calling context. The main omission is an explicit note that the dimension is created in the current drawing and uses current dimension settings, but these are reasonable defaults for a CAD tool.

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 100% and the schema descriptions already explain the point coordinates and dimension-line position. The description adds only the conceptual 'two points' context, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Create an aligned dimension') and clarifies the exact geometric behavior: it measures the true distance between two points. This distinguishes it from horizontal/vertical linear dimensions and other dimension siblings, even without naming them.

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 'true distance' implies it is intended for measuring points that are not orthogonally aligned, but it never states when to choose this over dimension_linear or dimension_auto, nor does it mention exclusions. Usage is implied rather than explicit.

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

dimension_angularAngular DimensionA

Create an angular dimension measuring the angle between two lines from a vertex.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesFirst ray endpoint X
x2YesSecond ray endpoint X
y1YesFirst ray endpoint Y
y2YesSecond ray endpoint Y
layerNoLayer name
text_xYesDimension text position X
text_yYesDimension text position Y
vertex_xYesAngle vertex X
vertex_yYesAngle vertex Y

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, so the mutating nature is covered. The description confirms the tool creates an entity but adds little beyond that: no mention of effects on the active drawing, coordinate system assumptions, or layer behavior. This is acceptable for a simple creation tool but adds only minimal behavioral context beyond annotations.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the action ('Create an angular dimension') and clarifies scope. Every word earns its place.

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

Completeness4/5

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

For a straightforward creation tool with a fully described schema and an output schema present, the description is nearly complete. It lacks only explicit mention of prerequisites like an active drawing or that the dimension is added to the current layer by default, but these are likely standard for the domain and not critical for correct invocation.

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 100%, with each parameter having a clear description (e.g., 'Angle vertex X', 'First ray endpoint X'). The tool description does not add additional parameter-level meaning; it only restates the geometric concept already captured by the schema. Baseline 3 is appropriate.

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 resource ('angular dimension'), and further specifies that it measures the angle between two lines from a vertex. This clearly distinguishes it from sibling dimension tools such as dimension_linear, dimension_aligned, or dimension_radius.

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 makes the tool's intended use clear through the phrase 'measuring the angle between two lines from a vertex,' which implies when to use it. However, it does not explicitly compare against alternatives or state exclusions, so an agent must infer usage from context.

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

dimension_autoDimension: Auto (chain / baseline / ordinate)A

Generate ISO 129 dimensions across the listed entities in the chosen style. V1 supports LINE entities only.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNochain | baseline | ordinatechain
offsetNoDimension-line offset from the geometry (mm)
handlesYesList of entity handles to dimension

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The annotations only provide destructiveHint=false, so the description carries the burden of explaining the tool's effect. It adds useful context by stating the ISO 129 standard and the LINE-only limitation, but it does not disclose what happens with unsupported entity types, whether dimensions are created as new drawing objects, or how multiple entities are handled if some are invalid.

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 deliver the core action, the scope, and the key limitation without redundancy. The essential behavior is front-loaded, and the V1 constraint is stated directly after the main purpose.

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

Completeness4/5

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

For a simple 3-parameter tool with full schema coverage and an output schema, the description is mostly complete. It covers what the tool does and the most important usage restriction. It would be slightly stronger if it explained the behavior when non-LINE entities are passed, e.g., whether they are ignored or cause an error.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by clarifying that 'handles' must refer to LINE entities (V1 limitation) and that the output follows ISO 129 conventions. This is a genuine semantic addition beyond the parameter names and defaults.

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 ('Generate'), a resource ('ISO 129 dimensions'), and a clear scope ('across the listed entities in the chosen style'). It also adds the critical V1 constraint ('LINE entities only'), which differentiates this tool from single-entity dimension tools like dimension_linear, dimension_aligned, and dimension_radius.

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 when to use the tool: when you have a list of entity handles and want dimensions in a chain, baseline, or ordinate style. It also gives an exclusion ('LINE entities only'), but it does not explicitly mention alternatives for a single dimension or explain what to do when entities are not supported.

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

dimension_diameterDiameter DimensionA

Create a diameter dimension for a circle, optionally toleranced (e.g. ⌀20 H7).

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesFirst point on diameter X
x2YesSecond point on diameter (opposite side) X
y1YesFirst point on diameter Y
y2YesSecond point on diameter Y
fitNoISO 286 fit code (e.g. 'H7' hole / 'g6' shaft) resolved for the measured diameter. Mutually exclusive with tol_*.
layerNoLayer name
tol_modeNoISO 129 tolerance display: none | symmetric | deviation | limit | basic.none
tol_lowerNoLower deviation (mm)
tol_upperNoUpper deviation (mm)
leader_lengthNoLeader line length
text_overrideNoReplace the measured text ('<>' keeps the measurement)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations provide only readOnlyHint: false, so the description carries the burden of indicating mutation. It does clearly state that the tool creates a dimension and adds the behavioral nuance of optional tolerancing (e.g., ⌀20 H7). It does not describe side effects like layer handling or combination rules, but it is not misleading and adds some behavioral context beyond the annotation.

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 sentence with no filler. It front-loads the core purpose and adds the key tolerance capability in a compact example. Every word contributes meaning.

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

Completeness4/5

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

The schema comprehensively covers parameters and an output schema is present, so the description does not need to explain return values or parameter details. The description sufficiently orients the agent toward the operation and the tolerance feature. It is slightly terse regarding tolerance configuration options, but the schema fills that 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 100%, so the schema already documents all 11 parameters in detail. The description adds a useful high-level example of tolerancing but does not explain individual parameters, which is acceptable because the schema already does that. Baseline 3 is appropriate.

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 and resource: 'Create a diameter dimension for a circle.' It clearly identifies the operation and the geometric target, and 'diameter' distinguishes it from siblings like dimension_radius, dimension_linear, and dimension_aligned without requiring the agent to open the schema.

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 intended use is implied: use this when a diameter dimension on a circle is needed. However, it does not explicitly say when not to use alternatives such as dimension_radius or dimension_aligned, nor does it mention any prerequisites or exclusions. The guidance is adequate but not explicit.

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

dimension_linearLinear DimensionB

Create a linear dimension, optionally toleranced (ISO 129 or ISO 286 fit).

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesFirst extension line origin X
x2YesSecond extension line origin X
y1YesFirst extension line origin Y
y2YesSecond extension line origin Y
fitNoISO 286 fit code (e.g. 'H7', 'g6', 'js9'); resolves deviations from the authored tables for the measured nominal. Mutually exclusive with tol_*.
dim_xYesDimension line position X
dim_yYesDimension line position Y
layerNoLayer name
rotationNoAngle of the measured dimension (0=horizontal, 90=vertical)
tol_modeNoISO 129 tolerance display: none | symmetric (±tol_upper) | deviation (+tol_upper/-tol_lower) | limit (stacked limits) | basic (boxed).none
tol_lowerNoLower deviation (mm), e.g. 0.01 for -0.01
tol_upperNoUpper deviation (mm), e.g. 0.02 for +0.02
text_overrideNoReplace the measured text ('<>' keeps the measurement)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

The description discloses that the tool creates a drawing entity, which is consistent with readOnlyHint=false. It adds the ISO 129/ISO 286 tolerancing context, which is useful. It does not describe side effects or constraints like fit being mutually exclusive with tol_*, but the schema already covers those details.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word adds meaning: the action, the entity type, and the optional tolerance capability are all conveyed efficiently.

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

Completeness3/5

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

The schema fully documents all 13 parameters and an output schema exists, so invocation details are largely covered. However, the description is too terse to fully contextualize tool selection given the large sibling list, especially the close neighbor dimension_aligned. It is adequate but leaves the selection guidance gap to the agent's inference.

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 100%, so the parameters are already well-documented. The description adds a small amount of high-level context by mentioning ISO 129 and ISO 286 fit, which helps interpret the tolerance-related parameters, but it does not meaningfully extend what the schema provides.

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 a specific verb and resource: 'Create a linear dimension.' It also notes optional tolerancing, which adds useful scope. However, it does not explicitly differentiate itself from the sibling dimension_aligned tool, relying on the name alone for that distinction.

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 dimension_aligned, dimension_angular, or dimension_radius. The description implies its use by naming 'linear dimension' but provides no conditions, exclusions, or comparison to sibling tools.

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

dimension_radiusRadius DimensionA

Create a radius dimension for a circle or arc, optionally toleranced.

ParametersJSON Schema
NameRequiredDescriptionDefault
fitNoISO 286 fit code resolved for the measured radius value. Mutually exclusive with tol_*.
layerNoLayer name
chord_xYesPoint on the circle/arc X (determines angle)
chord_yYesPoint on the circle/arc Y
center_xYesCircle/arc center X
center_yYesCircle/arc center Y
tol_modeNoISO 129 tolerance display: none | symmetric | deviation | limit | basic.none
tol_lowerNoLower deviation (mm)
tol_upperNoUpper deviation (mm)
leader_lengthNoLength of the leader line
text_overrideNoReplace the measured text ('<>' keeps the measurement)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, so the mutating nature is known. The description adds the 'optionally toleranced' detail, which is useful context, but it does not disclose placement behavior, interaction with existing dimensions, or other side effects.

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

Conciseness5/5

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

The description is a single compact sentence that is front-loaded with the core action and resource. It contains no filler, repetition, or unnecessary detail.

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

Completeness4/5

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

Given the fully documented input schema, the presence of an output schema, and the simple annotation-creation nature of the tool, the description is sufficiently complete. Minor gaps like dimension placement or leader behavior are reasonably left to the schema and output 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 100%, so all 11 parameters are already documented in the schema. The description only adds the 'optionally toleranced' hint, which loosely maps to the tol_* parameters, but adds little beyond schema coverage.

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'), a specific resource ('radius dimension'), and the target geometry ('circle or arc'), plus the optional tolerancing behavior. This clearly distinguishes it from sibling tools like dimension_diameter and dimension_linear.

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 phrase 'for a circle or arc' provides clear context about when this tool applies. It does not explicitly name alternatives or state when not to use it, but the geometry context is enough for an agent to route correctly in most cases.

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

dimstyle_createStyles: Create Dimension StyleA

Create a dimension style: preset values first, then overrides.

Refuses, before anything is written: an unknown preset; an override key outside the 33-variable whitelist (the 17 preset variables plus DIMTOL, DIMTP, DIMTM, DIMTOLJ, DIMTFAC, DIMLFAC, DIMRND, DIMATFIT, DIMTMOVE, DIMCLRD/E/T, DIMSAH, DIMBLK1/2, DIMCEN); a value outside its range (DIMDEC 0-8, sizes > 0, DIMTAD 0-4, DIMDSEP one character, lineweights an AutoCAD code); a name that already exists (use dimstyle_modify); a user DIMBLK/DIMBLK1/DIMBLK2 naming a block the drawing does not define (built-in arrowheads need none); a DIMTXSTY that is neither an existing text style nor a bundled preset (ISOCP, ISOCPEUR, ARIAL, ROMANS — those are created on both engines, textstyle_created; live, a preset whose font file the seat lacks is refused the same way, nothing written). On the live engine a write ActiveX still refuses after the style is added is rolled back — previous style current, the half-made entry deleted. With set_current the next dimension carries the style on both engines.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew dimension style name, e.g. ISO-25, ANSI, MECH-A3
presetNoiso-25 (ISO 129-1, 2.5 mm, comma) | ansi (ASME Y14.2, 3 mm, point); omit for the ISO-25 base
overridesNoDIM* variables applied on top of the preset, e.g. {DIMTXT: 3.5, DIMDSEP: '.', DIMTAD: 0}
set_currentNoAlso make it the current dimension style

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, so the description carries the burden and does so thoroughly: full list of pre-write refusals, atomicity ('before anything is written'), the live-engine rollback of a failed ActiveX write, and the fact that nothing is written on refusal. This is well beyond what the annotation provides.

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?

Front-loaded with the operation and the input ordering, then the refusal rules. Dense but largely earned; the long semicolon-chained sentence and comma splices reduce scannability slightly, though little is truly redundant.

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?

An output schema exists, so return values need not be explained, and for a mutation tool with only readOnlyHint=false the description supplies the missing failure modes, rollback behavior, and side effects. An agent has enough to call it correctly and predict refusals.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds real semantics the schema lacks: the 33-variable override whitelist, per-variable ranges (DIMDEC 0-8, DIMDSEP one character, DIMTAD 0-4, lineweight codes), and the text-style acceptance rules. That meaningfully extends beyond the generic 'DIM* variables' schema text.

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 and resource ('Create a dimension style') and immediately scopes the two inputs (preset values first, then overrides). It also differentiates itself from the sibling dimstyle_modify by naming the condition under which that tool is the right choice.

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 routes the agent: duplicate names must go to dimstyle_modify, and set_current is described as the way to make the next dimension carry the style. The preset/override ordering gives operational guidance rather than just context.

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

dimstyle_listStyles: List Dimension StylesA
Read-only

Every DIMSTYLE table entry with the seventeen preset variables (DIMTXT, DIMASZ, DIMEXE, DIMEXO, DIMGAP, DIMTAD, DIMTIH, DIMTOH, DIMDEC, DIMDSEP, DIMLUNIT, DIMZIN, DIMBLK, DIMTXSTY, DIMLWD, DIMLWE, DIMSCALE).

Headless, values is what the DXF stores (the schema default where an entry omits a code). On the live engine ActiveX has no per-style getters, so values is read for the current style only and the other rows carry values: null, values_available: false — dimstyle_set_current a style to read it. Never refuses on an open drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With only `readOnlyHint` available from annotations, the description adds substantial behavioral context: headless mode returns DXF-stored values, live engine values are only readable for the current style, other rows return `values: null` and `values_available: false`, and the tool never refuses on an open drawing. This is exactly the kind of operational quirk an agent needs before calling 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.

Conciseness4/5

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

The description is front-loaded with what the tool returns and then adds the important live-engine caveats. It is somewhat dense and lists all seventeen variables even though an output schema exists, but the information earns its place and the structure supports scanning.

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?

Given a zero-argument, read-only list tool with an output schema and only `readOnlyHint` in annotations, the description supplies the critical missing context about headless vs live behavior and null values. It does not need to explain return values because the output schema covers 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?

The tool has zero input parameters, so there is nothing for the description to document beyond what the schema already shows. Baseline 4 is appropriate because parameter semantics are simply not applicable.

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 exactly what the tool returns: every DIMSTYLE table entry together with the seventeen preset dimension variables. It also distinguishes the tool from `dimstyle_set_current` by explaining how live-engine value reading differs. An agent can identify this as a dimension-style listing tool without opening the schema.

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 an explicit alternative for the live engine case: `dimstyle_set_current` must be used to make a style current if the agent needs its `values`. It does not explicitly state the general when-to-use condition, but the purpose makes that evident and the key when-not/alternative is documented.

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

dimstyle_modifyStyles: Modify Dimension StyleA

Change variables on an existing dimension style.

changed names only the variables that actually moved — re-setting a value to itself is not a change. dimensions_using_style lists the dimensions already drawn with it; headlessly rerender_required: true says they still show the old style until redrawn (AutoCAD re-renders on the next regen). Refuses a missing style, an empty overrides, a key outside the whitelist, a value outside its range, a DIMTXSTY that does not exist, a user arrowhead block the drawing does not define — all before any write. On the live engine, editing a non-current style makes it current for the duration of the call and the previous style is restored — also when a write fails midway (its unsaved overrides are discarded, which is AutoCAD's own DIMSTYLE rule).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExisting dimension style name
overridesYesDIM* variables to change, e.g. {DIMDEC: 3, DIMTXT: 3.5}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With readOnlyHint=false already marking this as a mutation, the description adds substantial behavioral detail: validation before any write, what counts as a change, headless vs live-engine behavior, temporary current-style switching, and restoration/discard behavior on failure. This goes well beyond what the annotations provide and is exactly the kind of transparency agents need for a mutation tool.

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 front-loaded with the core action and then organized into compact clauses about validation, output effects, and engine behavior. It is somewhat long because it also mentions return-related fields despite an output schema existing, but every sentence still carries useful information.

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 mutation tool with nested overrides and an output schema, the description is complete enough to invoke safely. It covers pre-write validation, live-engine side effects, headless behavior, and failure restoration. Nothing critical an agent needs before calling the tool 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?

Schema coverage is 100%, so the schema already documents both parameters. The description still adds meaningful semantics: overrides cannot be empty, keys must be in a whitelist, values must fall within ranges, DIMTXSTY must exist, user arrowhead blocks must be defined, and re-setting a value to itself is not a change. This clearly exceeds the baseline 3.

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 first sentence gives a specific verb and resource: 'Change variables on an existing dimension style.' This clearly distinguishes it from sibling tools such as dimstyle_create, dimstyle_set_current, and dimstyle_list. An agent can identify the operation without opening the schema.

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 establishes clear context: use this on an existing style with non-empty overrides to change DIM* variables. It also lists several refusal conditions, which implicitly define when not to use it. It does not explicitly name sibling alternatives, 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.

dimstyle_set_currentStyles: Set Current Dimension StyleA

Set $DIMSTYLE and load the style's variables as the current DIM* settings — what a live seat's DIMSTYLE Restore does — so dimension_* and dimension_auto draw with it on both engines. Per-dimension tolerances, fits and text overrides still apply on top. Refuses a style the drawing does not hold. Returns previous and changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDimension style to make current (case-insensitive)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With only readOnlyHint=false in annotations, the description carries the load and delivers: it mutates $DIMSTYLE, applies on both engines, per-dimension tolerances/fits/text overrides still override, refuses unknown styles, and reports previous and changed. None of this is derivable from structured fields.

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?

Three dense sentences, front-loaded with the primary effect before the caveats and refusal. Content earns its place, though the 'what a live seat's DIMSTYLE Restore does' analogy adds length without much distinct information.

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 one-parameter mutation tool with an output schema, the description covers what changes, what still overrides it, the failure condition, and the return fields. 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.

Parameters3/5

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

Schema coverage is 100% and the single 'name' parameter is already documented as case-insensitive in the schema. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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 and resource plus the precise effect: sets $DIMSTYLE and loads the style's variables as current DIM* settings. It also names the affected downstream tools (dimension_* and dimension_auto) and distinguishes itself from dimstyle_list/create/modify by describing the restore-style behavior.

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?

Makes the use case clear (make a style current so dimension_* draws with it) and states a prerequisite condition — it refuses a style the drawing does not hold. It does not explicitly route to siblings like dimstyle_list for discovery or dimstyle_create if the style is missing, so it stops short of full when/when-not guidance.

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

document_activateActivate DocumentA

Make one open document the active one; reports previous.

Matches the full path first, then the file name; an ambiguous name is refused with the candidates, an unknown one with the list of open documents. Headless, a document quarantined after an abandoned call cannot be switched away from — drawing_new, drawing_open or closing it are the ways out. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_pathYesA name from document_list (`gear.dxf`, `untitled-2`) or the full path

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds substantial behavioral context beyond that: match priority (full path before file name), refusal behavior for ambiguous names (with candidates) and unknown names (with open-document list), and a headless quarantine restriction with escape routes. This is exactly the kind of extra context the lower bar for annotated tools rewards.

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?

Front-loaded with the core purpose in the first clause, then behavior, then edge cases. Mostly tight with zero wasted words. The trailing 'Pack: settings · lean: no.' is cryptic metadata that does not clearly help an agent select or call the tool.

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 one-parameter activation tool with an output schema, the description covers purpose, name resolution, error cases, and the headless quarantine edge case. Return values are handled by the output schema, so nothing an agent needs 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?

Schema description coverage is 100% and there is one parameter, so the schema already documents the accepted value forms. The description goes further by specifying resolution order (full path first, then file name) and the failure modes tied to that parameter, adding meaning beyond the schema.

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

Purpose5/5

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

States a specific verb ('Make ... active') and resource ('one open document'), and explicitly names the observable result ('reports `previous`'). An agent can distinguish it from siblings like document_list, document_close, drawing_open, and drawing_new without opening any schema.

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 opening sentence provides clear context: use it to switch among already-open documents. The headless quarantine note adds an explicit when-not case with named alternatives (drawing_new, drawing_open, closing). However, it does not broadly route the agent to document_list for discovering valid names or distinguish the tool from drawing_open outside that edge case.

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

document_closeClose DocumentA
Destructive

Close a document and report saved, discarded_changes and the new active.

Refusals, all before anything is closed: unsaved changes with neither save nor discard; save on a document that has never been saved (no path to write — live, Close(True) would open AutoCAD's Save dialog and block the COM thread); save together with discard. Closing the last document leaves the backend with none open, which every tool already reports. drawing_close is the same operation for the active document with its 1.4 contract kept. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNoWrite unsaved changes to the document's own path first
discardNoClose even with unsaved changes, dropping them
name_or_pathNoA name from document_list or the full path; omit for the active document

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation: it explains why save on a never-saved document is refused (live Close(True) would open AutoCAD's Save dialog and block the COM thread), clarifies that refusals happen before anything is closed, and notes the downstream effect of closing the last document.

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 purpose and result contract are front-loaded in the first sentence, and the refusal list earns its space. The trailing "Pack: settings · lean: no." and the 1.4-contract reference are cryptic without external context and dilute density slightly.

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 destructive close operation with an output schema already covering return values, the description covers the remaining risk surface completely: refusal conditions, path preconditions, and the no-documents-left edge case.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds genuine meaning on top: it documents the interaction between save and discard (mutually exclusive, and required when changes are unsaved) and the path precondition for save, which the schema does not express.

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?

Opens with a specific verb+resource ("Close a document") and states the exact reporting contract (saved, discarded_changes, active). It also explicitly differentiates itself from the sibling drawing_close, so an agent can distinguish the two 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?

Names the alternative (drawing_close is the same operation for the active document) and enumerates the when-not conditions under which the call is refused (unsaved changes with neither save nor discard; save on a never-saved document; save plus discard). Selection conditions are left to nothing.

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

document_listList DocumentsA
Read-only

Every open document with name, path, active, saved and entity_count.

Headless, the server keeps its own registry: drawing_new / drawing_open add an entry (untitled-N or the file path) instead of replacing the only one, and document_activate chooses which one every later tool targets. Live, this is AutoCAD's Documents collection. No refusals: an empty backend answers with an empty list. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, so safety is covered. The description adds genuine behavioral context beyond that: headless services keep their own registry where drawing_new/drawing_open append entries instead of replacing, live mode maps to AutoCAD's Documents collection, and an empty backend yields an empty list with no refusals.

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 return fields are front-loaded in the first line and the behavioral notes follow in compact sentences. The trailing 'Pack: settings · lean: no.' is unexplained internal jargon that costs a bit of clarity, but overall it is appropriately sized.

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 an output schema present, return-value detail is technically redundant, and readOnlyHint covers safety, yet the description still contributes the headless-vs-live registry semantics that an agent needs to interpret the list correctly. Nothing critical appears to be missing for a zero-parameter list tool.

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

Parameters4/5

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

There are zero input parameters, so the baseline is 4; nothing in the schema needs compensating for. The description's mention of list-entry fields is return-value detail, not parameter semantics, and does not detract.

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 and resource ('Every open document') and enumerates the returned fields, so the agent immediately knows this is an enumeration of open documents rather than a mutation. It is clearly distinguishable from siblings like document_activate and document_close, which it explicitly names.

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 explains the headless registry model and that document_activate chooses the target of later tools, which implies when this list is useful, but it never states an explicit when-to-use or when-not-to-use rule versus related tools. Usage is inferable rather than directed.

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

drawing_apply_iso_layersDrawing: Apply ISO Layer Set (bootstrap)A

Bootstrap a full ISO-conformant layer set with correct colors and lineweights. Idempotent — existing layers are not modified.

Refused by name: a standard that is not one of mech, pid, iso13567, arch.

ParametersJSON Schema
NameRequiredDescriptionDefault
standardNoLayer set: mech (DIN/ISO mechanical), pid (P&ID), iso13567 (CAD layer naming), arch (ISO 13567-style architectural: walls, poche, doors, windows, stairs, furniture, sanitary, grid, rooms, dimensions, symbols, overhead).mech

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare destructiveHint=false; the description adds the genuinely useful behavioral traits of idempotency ('existing layers are not modified') and refusal semantics for unknown standards. This is real value beyond the structured fields, though it omits any note on scale of side effects or interaction with existing layer states.

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?

Three tight sentences that front-load the primary action, with no filler. The final sentence is slightly telegraphic ('Refused by name'), but nothing is wasted.

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?

An output schema exists so return values need no explanation, and the description covers the action, idempotency guarantee, and input validation for a single-parameter tool. Nothing essential to correct invocation is missing.

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 100% and the enum values are already fully enumerated in the schema, so the baseline is 3. The description only restates the accepted standard names in its refusal sentence, adding validation semantics but no new per-value meaning beyond what the schema lists.

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?

Specific verb ('Bootstrap') plus a concrete resource ('full ISO-conformant layer set with correct colors and lineweights'), so the effect is unambiguous. It does not, however, differentiate itself from closely related siblings like template_apply_layers or drawing_apply_standard, which an agent could easily confuse it with.

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 bootstrap framing implies the usage context, and the refusal note scopes the valid inputs, but there is no explicit when-to-use versus template_apply_layers or drawing_apply_standard. Guidance is inferable rather than stated.

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

drawing_apply_standardDrawing: Apply Drafting StandardA

One call for the common case: the standard's dimension style (created if missing, then current), its text style (created if missing, then current), the shared units, and with layers the mech layer set (ANSI layer naming is company-specific, so both standards share it).

Every item reports created or already present; settings.changed names only the variables that moved, so a second call reports nothing. An existing ISO-25 / ANSI style is reused as it is, not reset — use dimstyle_modify to change one. Refuses an unknown standard, or a units variable it cannot read back, before any write; the underlying style refusals (dimstyle_create, textstyle_create) apply unchanged. In the lean profile (Task 13).

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsNoAlso write INSUNITS mm, LUNITS/AUNITS decimal, LTSCALE 1, DIMSCALE 1
layersNoAlso bootstrap the mech layer set with ISO 128 lineweights
standardYesiso (ISO-25 / ISOCP, decimal comma) | ansi (ANSI / ROMANS, decimal point)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With only readOnlyHint=false available in annotations, the description carries the burden well and discloses non-obvious behavior: idempotency ('a second call reports nothing'), non-destructive reuse of existing ISO-25/ANSI styles rather than reset, per-item created/already-present reporting, and atomicity ('refuses ... before any write'). It also propagates the underlying style-tool refusal semantics, which an agent cannot infer from the schema.

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?

Front-loaded with the core behavior and then the reporting/refusal semantics; most sentences earn their place. The trailing 'In the `lean` profile (Task 13)' is an opaque internal reference that adds no actionable information and slightly dilutes the close.

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

Completeness4/5

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

For a three-parameter, mutating tool with an output schema, the description covers what changes, idempotency, atomicity, and failure modes, so return values need no explanation. The unexplained 'lean profile (Task 13)' reference and the absence of guidance against the standard/layer sibling tools are the only notable gaps.

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 100%, so all three parameters are already documented with concrete values (INSUNITS mm, LTSCALE 1, ISO 128 lineweights, iso/ansi values), establishing a baseline of 3. The description adds only marginal extra meaning — that the mech layer naming is shared across standards — which is useful rationale but not new invocation syntax.

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 and resource ('apply drafting standard') and enumerates exactly what gets set: dimension style, text style, shared units, and optionally the mech layer set. An agent can distinguish it from the granular siblings dimstyle_create/textstyle_create/dimstyle_set_current because the description explicitly frames it as the bundled 'one call for the common case'.

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 frames the intended use ('one call for the common case') and names an alternative for a related need ('use dimstyle_modify to change one'), plus an explicit refusal path for unknown standards. It does not, however, differentiate from close siblings that also bootstrap standards/layers, such as drawing_apply_iso_layers or template_apply_layers, so routing against those is left to inference.

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

drawing_auditAudit DrawingA

Audit the drawing: repair every fixable structural problem, and report it.

This mutates the drawing. fixes lists repairs that have ALREADY been applied, so save afterwards to keep them; errors lists problems that could not be repaired. On the live COM backend AutoCAD applies repairs but hands back no counts, so they arrive as null with detail: "unavailable" rather than as zero.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint annotation by stating that the drawing is mutated, repairs are already applied, results are exposed as 'fixes' and 'errors', and saving is required to persist changes. It also discloses a backend-specific behavior where counts arrive as null with detail 'unavailable' rather than zero, which is genuinely useful and not available from structured fields.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, then adds crucial behavioral and output-context details. Every sentence earns its place: mutation warning, save requirement, fixes/errors semantics, and backend null-count behavior. There is no filler.

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 tool with an output schema present, the description is complete: it explains the tool's core behavior, mutating side effects, persistence requirement, output field meaning, and a non-obvious backend quirk. An agent has enough context to invoke it correctly and interpret results.

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 schema already fully covers parameter semantics with 100% coverage. The description correctly spends no space on parameters, and the baseline of 4 applies for a parameterless tool.

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 a specific action ('Audit the drawing') and the resource, defining what audit means: repair fixable structural problems and report results. It is clear and actionable, but it does not explicitly differentiate itself from sibling tools like validation_check, drawing_preflight, or drawing_critique.

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: when you want structural problems fixed and reported, use this tool. It also warns that the tool mutates the drawing and that saving is required afterward. However, it provides no explicit guidance about when not to use it or which alternative tools to prefer for non-mutating validation or inspection.

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

drawing_closeClose DrawingA
Destructive

Close the active document. If save is True (default), the drawing is saved to its current path before closing; an untitled document is closed and warning says its changes were discarded (headless) or the call is refused (live, where the alternative is a modal Save dialog). The active-document case of document_close; after the last document is closed, call drawing_new or drawing_open before any other tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNoSave the drawing before closing

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only supply destructiveHint=true; the description adds substantial behavioral context beyond that: the save-to-current-path default, the untitled-document data-loss path with a `warning` in headless mode, and the refusal/modal Save dialog in live mode. This is exactly the kind of destructive-consequence detail agents need.

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?

Three sentences, front-loaded with the core action, and each sentence earns its place. The middle sentence packing headless/live/untitled/modal behavior is dense and slightly hard to parse on first read.

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?

Output schema exists, so return values need no explanation, yet the description still flags the `warning` field that matters. Destructive semantics, sibling routing, and the post-close precondition are all covered for a one-parameter tool.

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

Parameters4/5

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

Schema coverage is 100% and the schema already says 'Save the drawing before closing', so the baseline is 3. The description goes further by explaining what saving actually does (writes to the current path) and what happens when it cannot (untitled document), adding meaning beyond the schema text.

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+resource ('Close the active document') and explicitly differentiates itself from the sibling document_close by naming itself 'the active-document case of document_close'. An agent can distinguish the two without opening either 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?

Gives explicit routing: use this for the active document versus document_close otherwise, and states the post-condition ('after the last document is closed, call drawing_new or drawing_open before any other tool'). It also carves out behavior for untitled documents in headless vs live environments.

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

drawing_critiqueDrawing: Critique (premium quality checks)A
Read-only

Run premium-quality checks. Returns zero issues for a clean drawing.

Standard production gate: must return [] before drawing_finalize.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoSubset of: iso128, layer_color, dim_overlap, untrimmed_corner, duplicate_entities, construction_left, gdt, the P&ID focuses pid_dangling_line, pid_duplicate_tag, pid_incompatible_connection, pid_untagged_instrument, pid_illegal_tag, pid_unconnected_equipment (silent on a drawing with no P&ID symbols), and the mechanical focuses mech_missing_centreline, mech_unhatched_section, mech_view_misaligned, mech_duplicate_dimension, mech_thread_unrepresented, mech_bom_balloon_mismatch (silent on a drawing with no mechanical part), and the architectural focuses arch_room_unlabelled, arch_wall_gap, arch_opening_clash (silent on a drawing with no ACADMCP_ARCH record), and the topology focuses topo_dangling_endpoint, topo_near_miss, topo_interior_crossing (network layers no P&ID or architectural focus reads). None = run all.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral value beyond that: it returns zero issues for a clean drawing and acts as a blocking gate before finalize, which is a workflow constraint the annotations cannot express.

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?

Three tight sentences, front-loaded with the action and then the gate condition; no filler.

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?

An output schema exists so return values need no explanation, and the description supplies the gating semantics and clean-drawing outcome. The only omission is any hint of the diagnostic focus areas or relationship to the other check tools.

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 100% and the single optional focus parameter is exhaustively enumerated in the schema, including silence behavior per focus family. The description adds nothing about focus, so the baseline 3 applies.

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: runs premium-quality checks on a drawing and reports issues. It is clear enough on its own, but it never distinguishes itself from sibling diagnostics like validation_check, drawing_audit, drawing_preflight, or drawing_topology_check, leaving the agent to guess which checker applies.

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?

Gives a concrete usage rule: it is a standard production gate that must return [] before calling drawing_finalize. That is strong when-to-use context, though it offers no exclusions or explicit comparison to the other validation-flavored siblings.

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

drawing_deliverDrawing: Deliver Auditable BundleA
Destructive

Create a hashed, validated delivery bundle and verify DXF save/reopen parity.

The result status is success, failed_validation or failed_export. Failure intentionally keeps all generated artifacts for diagnosis.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatsNoRequested formats: dxf, pdf, png.
expectedNoOptional validator expectations for the drawing.
min_scoreNoMinimum accepted quality score.
output_dirYesOutput directory for drawing artifacts and manifest.json.
strict_critiqueNoBlock delivery on every non-info critique issue.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations include destructiveHint=true, and the description adds useful behavioral context by naming result statuses ('success', 'failed_validation', 'failed_export') and stating that failure intentionally keeps all generated artifacts for diagnosis. However, it does not explain what destructive action may occur, such as overwriting files in output_dir or clearing prior bundles.

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

Conciseness5/5

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

The description is compact and front-loaded with the core function, followed by failure statuses and artifact-retention behavior. Every sentence adds useful information without repetition or filler.

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 a complete input schema and an output schema present, the description covers the essential operation, possible result statuses, and failure behavior. The remaining gaps—explicit destructive-effect disclosure and sibling differentiation—are partially covered by annotations and purpose clarity, so this is moderately complete.

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 100%, so the input schema already documents all five parameters. The description adds no parameter-specific meaning beyond the schema, which keeps this at the baseline rather than higher.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a hashed, validated delivery bundle and verify DXF save/reopen parity.' This clearly distinguishes it from siblings like drawing_export_dxf, drawing_audit, and drawing_finalize, which do different work. The title 'Deliver Auditable Bundle' reinforces the purpose.

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 does not state when to use this tool versus alternatives such as drawing_export_dxf, drawing_audit, or drawing_finalize. It implies a final delivery/validation workflow but gives no explicit exclusions, prerequisites, or comparison with overlapping siblings.

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

drawing_diffDrawing: Diff Two RevisionsA

Compare two revisions of one drawing by geometric signature (spec §10).

Entities are matched exactly first (type, layer, geometry rounded to tol, text, block, attributes - handles do not matter), then by handle while handles look stable, then by type + layer + nearest position within move_tol; what is left is added or removed. The report counts changes by layer and type, lists each changed entity with what changed (moved by, text from -> to, attribute from -> to, radius from -> to, ...), compares the block definitions when both revisions are DXF files or the headless current document, and groups the changes into clusters.

Read-only unless markup=True: then revision clouds are drawn around the model-space clusters on the current document, which must be the newer revision, and filed as one revision row - the only write this tool makes.

Refused before anything is read: markup=True with new_path (the clouds go on the current document), markup=True without a valid rev, markup=True on an engine without the revcloud capability (the live engine - capability: "revcloud"), a path that does not exist, a DXF over MAX_DXF_BYTES (the size and the variable named), a file that is not a readable DXF, and a non-positive tol or move_tol.

ParametersJSON Schema
NameRequiredDescriptionDefault
revNoRevision code for markup=True: one to three capitals or digits.
tolNoGeometry is compared rounded to this many drawing units.
limitNoRows kept per list (changed, added, removed).
markupNoDraw revision clouds around every cluster of change on the current document (the newer revision) and file them under `rev`.
move_tolNoAn unmatched entity is paired with the nearest one of its type and layer within this distance and reported as changed; default 2 % of the drawing's robust diagonal.
new_pathNoThe NEWER revision: a DXF path, or omitted for the current document.
old_pathYesThe OLDER revision: a DXF path (a DWG only on the live engine, which exports it read-only).
descriptionNoRevision-row text for markup=True; default: the counts.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, so the description carries the burden and does so richly: it discloses the matching algorithm and fallback strategy, the one write it performs (revision clouds + one revision row), engine capability requirements ('revcloud'), MAX_DXF_BYTES limits, and the full list of pre-read refusals. This is far beyond what the annotation states.

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?

Three tight paragraphs, front-loaded with the core comparison semantics before the markup caveat and the refusal list. Dense but each sentence carries weight; the refusal enumeration is long but operationally useful for an agent deciding whether a call will succeed.

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?

An output schema exists, so return values need not be re-specified, yet the description still summarizes the report shape (per-layer/type counts, per-entity change detail, block-definition and cluster grouping). Combined with the algorithm and refusal documentation, an agent has everything needed to invoke this 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains how `tol` participates in the exact-match stage, how `move_tol` pairs leftover entities, and how `markup`/`new_path`/`rev` interact (markup=True with new_path is refused). That cross-parameter interaction is not derivable from the schema alone.

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?

Opens with a specific verb+resource and scope: 'Compare two revisions of one drawing by geometric signature.' No sibling tool performs a revision diff, and the description makes the entity-matching basis explicit, so the agent can distinguish it from audits, validation, or drawing_understand.

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 strong context: it explains that the tool is read-only unless markup=True, that markup requires the current document be the newer revision and a valid `rev`, and it enumerates refusal conditions. It does not, however, explicitly route between this tool and adjacent diagnostics (drawing_audit, validation_check, drawing_understand), so it stops just short of full when/when-not guidance.

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

drawing_export_dwgDrawing: Export DWGA

Write a real DWG — not a DXF under a .dwg name.

On a live AutoCAD seat this is Document.SaveAs with the matching AcSaveAsType, which (as AutoCAD's own SaveAs does) leaves the session bound to the file it just wrote. Headlessly it needs the ODA File Converter; when that is absent the call is refused with capability: "dwg_write" and the refusal names the install route and drawing_export_dxf, which writes a DXF AutoCAD opens unchanged. Check system_capabilities first: the ezdxf flag is re-evaluated at call time, so installing the converter changes it without a restart. An unknown version is refused by name with the six.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFull path of the .dwg to write.
versionNoR2000 | R2004 | R2007 | R2010 | R2013 | R2018.R2018

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare destructiveHint=false, so the description carries the behavioral burden and does so richly: it discloses the session-binding side effect on a live seat, the headless ODA File Converter dependency, the exact refusal shape (`capability: "dwg_write"`), and the call-time re-evaluation of the ezdxf flag. This is far beyond what annotations provide.

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?

Front-loads the key distinction in the opening clause and each sentence carries operational content. Some detail (AcSaveAsType naming, ezdxf flag mechanics) is dense and slightly tangential, keeping it short of maximal conciseness, but nothing is padding.

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?

An output schema exists so return values need not be explained, and the description covers the failure modes, dependency, and prerequisite in full. An agent has everything needed to invoke it correctly or fall back.

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 100%, so both parameters are already documented and the baseline is 3. The description adds only the version-validation behavior ('unknown version is refused by name with the six'), which is behavioral rather than a schema-level clarification of parameter meaning.

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 and resource ('Write a real DWG') and immediately distinguishes it from the nearest sibling by warning it is 'not a DXF under a .dwg name.' An agent can tell this apart from drawing_export_dxf without opening either schema.

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?

Gives a clear prerequisite ('Check system_capabilities first'), a refusal/failure path ('when that is absent the call is refused'), and routes to the alternative drawing_export_dxf. It does not, however, explicitly compare against drawing_save_as as a preferred choice, so the when-to-choose guidance is strong but not fully exhaustive.

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

drawing_export_dxfExport DXFA

Export the current drawing as a DXF file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesOutput .dxf file path

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no readOnly or destructive annotations, the description carries the full burden of behavioral disclosure. It clearly states the primary effect (creating a DXF file from the current drawing), but it does not disclose whether an existing file at the path is overwritten, whether the drawing remains unchanged, or how failures are handled.

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. Every word contributes to identifying the action, the target, and the output format.

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

Completeness4/5

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

For a one-parameter export operation with an output schema available, the description plus the schema is sufficient for an agent to call it correctly. It covers the key context (current drawing, DXF format, required path), though it does not touch on overwrite behavior or prerequisites beyond the current drawing.

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

Parameters3/5

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

The schema provides 100% coverage with the path parameter described as 'Output .dxf file path'. The description adds no additional meaning to the parameter beyond what the schema already states, so the baseline of 3 is appropriate.

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'), a clear resource ('the current drawing'), and an explicit output format ('DXF file'). This differentiates it from the sibling drawing_export_pdf and other drawing management tools without relying on the schema.

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 'current drawing' implies the tool should be used when a drawing is active and the user needs DXF output, which provides clear context. However, it does not mention alternatives like drawing_export_pdf or drawing_save_as, nor does it state exclusions or conditions for choosing this tool over those siblings.

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

drawing_export_pdfExport PDFA

Export the current drawing (or a paper-space layout) to PDF.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesOutput .pdf file path
layoutNoPaper-space layout to plot (default: model space). COM plots the layout natively incl. viewport content; ezdxf renders the layout's own entities.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

Annotations provide only a title and no readOnly/destructive hints, so the description must disclose behavioral traits. It confirms the file-export action but does not mention whether existing PDFs are overwritten, whether the drawing is modified, or what is returned; it also leaves the active-document requirement implicit. The only added detail about backends (COM vs ezdxf) lives in the schema, not the description.

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 sentence containing only the essential action and scope, with the output format stated up front. No filler or redundant restatement of the title.

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

Completeness3/5

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

The tool has only two parameters and the schema already documents both, but with no output schema and no annotations, the description leaves the agent to infer return behavior and side effects. For a simple export command the essentials are present, but an explicit note about file creation/overwrite or a pointer to the layout-specific rendering behavior would make it fully self-contained.

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 100% for both parameters, so the description is not required to repeat them. The main description's 'current drawing (or a paper-space layout)' loosely aligns with the layout parameter, but it adds no syntax, format, or default semantics beyond the schema. Baseline 3 is appropriate.

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-resource pair ('Export ... to PDF') and identifies both model space and paper-space layout modes, which clearly distinguishes it from screenshot/deliver siblings. The parenthetical scope disambiguates what will be exported. It is not a tautology or vague.

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

Usage Guidelines3/5

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

The description implies use when a PDF of the current drawing or a named layout is needed, but it does not explicitly contrast with sibling tools like view_screenshot, drawing_finalize, or drawing_deliver, and gives no exclusions. An agent must infer the appropriate context from the 'to PDF' phrasing alone.

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

drawing_finalizeDrawing: Finalize (validate + save + screenshot)A
Destructive

Premium completion gate: runs BOTH the 8-step validator AND the premium critique focuses (iso128, layer_color, dim_overlap, untrimmed_corner, duplicate_entities, construction_left, gdt, plus the P&ID focuses pid_dangling_line, pid_duplicate_tag, pid_incompatible_connection, pid_untagged_instrument, pid_illegal_tag, pid_unconnected_equipment — silent on a sheet with no P&ID symbols, plus the mechanical focuses mech_missing_centreline, mech_unhatched_section, mech_view_misaligned, mech_duplicate_dimension, mech_thread_unrepresented, mech_bom_balloon_mismatch — silent on a sheet with no mechanical part, plus the architectural focuses arch_room_unlabelled, arch_wall_gap, arch_opening_clash — silent on a sheet with no ACADMCP_ARCH record, plus the topology focuses topo_dangling_endpoint, topo_near_miss, topo_interior_crossing — on network layers no P&ID or architectural focus reads, silent on every sheet this server draws), then saves to disk, exports a screenshot, and returns the DWG path.

Raises ToolError if any validator 'error' finding is present, or if critique reports an 'error' (or, with strict_critique=True, any critique issue). Critique warnings are surfaced under payload['critique'] without failing the gate by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
expectedNoOptional contract: {'part_type', 'helix_angle', 'must_have_bore', 'must_have_keyway'}
save_pathNoIf given, save drawing here before validation. Pass full path including extension.
screenshot_pathNoIf given, write PNG screenshot to this path.
strict_critiqueNoIf true, ANY critique issue (including warnings) fails the gate — the full premium discipline. Default false: only critique 'error' issues (e.g. leftover construction geometry) fail; warnings are surfaced in the payload.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only provide destructiveHint=true. The description adds substantial behavioral context: runs both validator and critique, lists focus areas, raises ToolError on errors, explains strict_critique behavior, and notes that warnings are surfaced in the payload. This is rich beyond what annotations provide.

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

Conciseness2/5

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

Extremely long and run-on, with the core action buried after a massive enumeration of critique focuses. It is not front-loaded; the essential purpose appears in the first sentence but is weighed down by an unnecessary focus list that could be omitted or summarized.

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?

Output schema exists, so return values need not be explained. The description covers failure modes and strict mode adequately for an agent to call the tool correctly, though the verbose focus list adds little value and makes the definition harder to parse.

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 100%, so the baseline is 3. The description repeats strict_critique semantics from the schema and only implicitly references save_path/screenshot_path; it adds little meaning beyond the schema for the four 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?

States specific verbs (validate, save, screenshot) and the resource (drawing finalization), and distinguishes itself as a 'premium completion gate' that combines the 8-step validator and premium critique, unlike siblings such as validation_check or drawing_critique that likely perform only one part. The agent can tell what this tool does without opening the schema.

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?

Implies usage as a final completion gate and explains failure conditions and strict_critique behavior, but does not explicitly name alternatives (e.g., 'use validation_check for validation only') or state when not to use it. The context is clear, but explicit routing is missing.

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

drawing_infoDrawing InfoA
Read-only

Get comprehensive metadata for the current drawing.

Returns: name, path, entity_count, layer_count, block_count, extents (min/max), units, version, backend name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description aligns by using 'Get' and listing no side effects. It adds expected return data beyond the annotation, including extents and units, which tells the agent what to expect without calling. It does not mention performance or dependencies, but for a read-only info tool that is acceptable.

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 two sentences with the purpose front-loaded. The return list is compact and information-dense without prose. No fluff or repetition.

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 zero-parameter read-only tool with an output schema, the description covers both what it does and what it returns. The 'current drawing' scope is explicitly stated. The only omission is explicit when-not-to-use guidance, but the tool's simplicity makes that non-critical.

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?

There are no parameters, so the empty schema offers nothing to explain. The description clarifies that the scope is the 'current drawing,' an implicit contextual parameter not captured in the schema. Baseline 4 is appropriate because the description adds useful context for a zero-parameter tool.

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 'Get comprehensive metadata for the current drawing' with a specific verb and resource. The enumerated return fields (name, path, entity_count, etc.) remove ambiguity about what 'info' means. It clearly differentiates from sibling mutation/export tools by focusing on read-only drawing-level metadata.

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?

Provides clear context that this applies to the current drawing, not a specified file or entity. It doesn't name alternatives or exclusions, but the scope strongly implies use when the agent needs a summary of the active drawing's properties. Since no sibling tool overlaps exactly, the lack of explicit alternative routing is minor.

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

drawing_newNew DrawingA

Create a new drawing, optionally from a template.

A bundled name resolves to templates/<name>.dxf headlessly and templates/<name>.dwt on the live engine (falling back to the DXF with source: "bundled_dxf" when no .dwt twin is committed); a path is used as given. The result carries template: {name|path, path, source}.

On the live engine only a genuine .dwt reaches Documents.Add — measured on AutoCAD 2026, Add(<file.dxf>) silently returns the default drawing — so a .dxf template (bundled or a path) is first converted through AutoCAD into a cached .dwt and template.dwt names it (template.dwt_cached says whether the conversion was reused). The drawing then really carries the template's layers, tabs and page setup.

Refused before anything is replaced: a bare name that is not in the catalogue (the message lists the five), a template path that does not exist, and a path outside the allowed directories. With bootstrap=True (default) the standard engineering linetypes and layers are ensured afterwards — idempotent on a template that already has them.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateNoBundled template name (drawing_template_list: iso_a3_mech, iso_a1_arch, iso_a3_pid, ansi_b_mech, ansi_d_arch) or a path to a .dwt/.dxf template file.
bootstrapNoAuto-load CENTER/HIDDEN/PHANTOM linetypes and create standard engineering layers (GEOMETRY, DIM, CENTER, HIDDEN, PHANTOM, HATCH, TEXT, TITLEBLOCK). Disable for vanilla DXF.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, yet the description discloses extensive behavior: refusal conditions before any replacement, the .dxf→.dwt conversion and caching on the live engine, the measured AutoCAD 2026 quirk, and idempotent bootstrap side effects (linetypes/layers added). This is far beyond what the annotation provides.

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?

Front-loaded with the core action, then layered detail in digestible paragraphs. It is long and parenthetical-heavy, but nearly every sentence carries non-obvious behavioral information, so the length is largely earned rather than padding.

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 complex tool with an output schema already covering return values, the description still explains the template result shape, refusal modes, engine-specific conversion, and bootstrap semantics. An agent has everything needed to invoke it correctly and anticipate side effects.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely deepens both parameters: it explains bundled-name→path mapping and the `source` field for template, and clarifies that bootstrap is idempotent and ensures standard linetypes/layers (disable for vanilla DXF), which the schema only summarizes.

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?

Opens with a precise verb+resource ('Create a new drawing') and immediately qualifies scope ('optionally from a template'). It is trivially distinguishable from siblings like drawing_open, drawing_template_list, and drawing_save, which the template-resolution detail reinforces.

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

Usage Guidelines4/5

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

It gives clear context for when the template argument produces which behavior, including bundled-name vs path resolution and the fallback to DXF. It stops short of explicitly naming alternatives (e.g. drawing_open for existing drawings) or stating when to leave template unset.

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

drawing_openOpen DrawingA

Open an existing DXF drawing file (DWG too, on the live COM backend).

T0.2: a .dwg path is refused up front when the active backend has no dwg capability. ezdxf sniffs content rather than extensions, so it would parse a mislabelled DXF-in-a-.dwg and this tool would answer with a document that does not exist in that format.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFull path to the .dxf file. .dwg needs a backend that can read it (the live COM backend); the headless ezdxf backend refuses it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only provide a title, so the description carries the behavioral disclosure burden. It does reveal important traits: DWG is only supported on the live COM backend, .dwg paths are refused without the dwg capability, and ezdxf sniffs content rather than extensions, which can produce a document that doesn't exist in the expected format.

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

Conciseness3/5

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

The opening sentence is clear and front-loaded, but the 'T0.2:' paragraph is verbose and jargon-heavy. The mislabelled-file caveat is useful but could be stated more concisely without the changelog-style prefix.

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

Completeness4/5

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

For a one-parameter tool with an output schema, the description covers the key contextual concern: backend-dependent DWG support and the refusal behavior. It does not mention what happens to the currently open drawing, but the description and schema together are adequate for basic invocation.

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

Parameters3/5

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

The schema describes the single path parameter with 100% coverage, including the DWG backend caveat. The description restates this information without adding new parameter-level specifics such as path format, absolute vs. relative paths, or file-existing requirements.

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 ('Open an existing DXF drawing file') and adds the DWG/backend condition. It is clear this loads an existing drawing, but it does not explicitly differentiate from siblings like drawing_new or drawing_save.

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 when to use the tool by saying 'existing drawing file', but it does not state alternatives such as drawing_new for creating a new drawing, nor does it explain when not to use this tool. The backend condition for DWG is useful but not framed as routing guidance.

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

drawing_planDrawing: Plan (commit intent before drawing)A

Commit a PlanSpec before any geometry is created.

The PlanSpec is stored on the backend and surfaced for reference during the workflow (it is not replayed as a critique). Always call this FIRST in a premium workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-form constraint notes.
scaleNoDrawing scale (1.0 = 1:1, 0.1 = 1:10, etc).
intentYesOne-line description of what this drawing represents.
dim_styleNoDefault dimensioning style: chain / baseline / ordinate / mixed.chain
spec_hashNoHash returned by the latest ready drawing_preflight.
sheet_sizeNoPaper size: A4 / A3 / A2 / A1 / A0.A3
view_countNo
layer_set_idNoLayer set to bootstrap: mech / pid / iso13567.mech
requirementsNoNormalized preflight requirements.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations, which only include destructiveHint=false, the description discloses several behavioral facts: the PlanSpec is stored on the backend, surfaced for reference, and not replayed as a critique. This adds meaningful side-effect and workflow context that annotations do not convey.

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?

Three short sentences deliver purpose, behavioral context, and workflow ordering with no filler. The most important constraint ('Commit before geometry is created') is front-loaded, and each sentence contributes distinct value.

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

Completeness4/5

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

The description covers the critical context an agent needs: what to do, when to do it, and what happens to the PlanSpec. It could more explicitly connect to drawing_preflight/spec_hash, but the output schema and 89% parameter coverage fill most remaining gaps.

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 89%, so parameters are already well documented in the input schema. The description does not add meaningful parameter-level detail beyond using the term 'PlanSpec', which is acceptable but not an improvement over the schema.

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

Purpose5/5

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

The description uses a specific verb-resource pair ('Commit a PlanSpec') and a clear temporal constraint ('before any geometry is created'). It also distinguishes itself from critique tools by stating it is 'not replayed as a critique', making the tool's role in the drawing workflow unmistakable.

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

Usage Guidelines4/5

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

It provides clear workflow context with 'Always call this FIRST in a premium workflow' and explicitly cautions that the PlanSpec is not a critique. It does not name alternative sibling tools explicitly, but the ordering guidance and exclusion of critique behavior give an agent enough direction to use it correctly.

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

drawing_preflightDrawing: PreflightA
Read-only

Validate and normalize requirements before committing a drawing plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
intentYesOne-line description of what this drawing represents.
dim_styleNochain / baseline / ordinate / mixed.chain
sheet_sizeNoA4 / A3 / A2 / A1 / A0.A3
view_countNo
layer_set_idNomech / pid / iso13567.mech
requirementsNoUnits, part_type, dimensions, tolerance_policy and optional constraints.
allow_assumptionsNoAllow documented defaults for units and tolerance policy.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and 'validate' aligns with that read-only profile. However, 'normalize' is ambiguous—whether it mutates data or returns normalized values is not clarified. The description adds workflow context but no deeper behavioral details such as default resolution or error 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?

A single, tightly worded sentence with no filler. The main action and timing are front-loaded, and every word contributes to the meaning.

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?

An output schema exists and annotations cover the read-only safety profile, so return values and side-effect warnings are not required in the description. However, the description does not clarify how this tool relates to workflow neighbors (drawing_plan, drawing_finalize, validation_check) or what 'normalize' entails, leaving some ambiguity for an agent selecting among similar tools.

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 75%, so the schema already documents most parameters. The description only references 'requirements' generically and does not add meaning to individual parameters beyond what the schema provides, so the baseline score applies.

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 a specific verb ('validate and normalize') and identifies the resource ('requirements') with a clear workflow marker ('before committing a drawing plan'). It conveys the tool's role effectively, though it does not explicitly distinguish it from similar validation/checking siblings like drawing_audit or validation_check.

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 'before committing a drawing plan' implies a specific workflow stage, giving some usage context. However, there is no explicit statement of when to prefer this tool over alternatives, nor any exclusions or mention of sibling tools.

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

drawing_properties_getDrawing Properties (read)A
Read-only

The DWGPROPS dialog as data: summary (title, subject, author, keywords, comments), summary_available, and custom ({key: value}).

On the live engine the summary comes from the document's SummaryInfo. The headless engine cannot read that stream, so the five summary fields are null with summary_available: false — not empty strings, which would claim the drawing has no title. Custom properties ($CUSTOMPROPERTYTAG / $CUSTOMPROPERTY header pairs) are read on both engines.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint annotation: it discloses the live vs headless engine divergence, that the five summary fields return null with summary_available=false rather than empty strings (and why that distinction matters), and that custom properties are readable on both engines. This is exactly the kind of non-obvious behavior an agent needs to avoid misreading results.

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?

Two tight paragraphs, front-loaded with the return shape, then the engine caveat that justifies the second paragraph. Every sentence earns its place; the only minor cost is the leading 'DWGPROPS dialog' jargon, which assumes familiarity with AutoCAD's dialog name.

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?

An output schema exists, so return-value explanation was optional, yet the description still supplies the engine-dependent semantics that the schema alone cannot convey. Nothing needed to interpret a call 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 there is nothing for the description to disambiguate; baseline 4 applies. The rich schema_description_coverage is irrelevant here since the input object is empty.

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+resource ('drawing_properties_get' as 'The DWGPROPS dialog as data') and enumerates exactly what is returned: summary, summary_available, custom. An agent can distinguish it from the sibling drawing_properties_set without opening either schema.

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 by the read-only nature and the returned fields, but the description never says explicitly when to call this versus alternatives such as drawing_properties_set or drawing_info. It does add the important nuance that results differ by engine, which is closer to behavioral than selection guidance.

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

drawing_properties_setDrawing Properties (write)A

Write DWGPROPS fields. Only the arguments given are touched; returns summary_written, custom_written and custom_deleted (a key that was never there is not reported deleted).

Refusals, before anything is written: a summary field on the headless engine (capability: dwgprops — SummaryInfo lives in the DWG, a DXF has no slot for it; custom properties still work headlessly), a non-string value (TypeError naming the field or key — nothing is coerced with str()), an empty custom key, a custom key to write that AutoCAD's AddCustomInfo would reject mid-write (measured on AutoCAD 2026: leading or trailing whitespace, or any of the thirteen characters " * , / : ; < = > ? \ |anywhere in the key; internal spaces, tabs and unicode are fine —ValueErrornaming the key, on both engines; a delete is exempt because RemoveCustomByKey never validates syntax, so a key that reached the drawing another way stays removable), two keys in one request that AutoCAD would call the same key (its key compare is a simple per-character case compare:Project/PROJECTandGrün/GRÜNare one key,Straße/STRASSE are two), a line break in a custom key or value (it corrupts the DXF on save), and headlessly a document older than R2004 (ValueError` — ezdxf only writes the custom-property header pairs for AC1018+, so they would vanish at save; save as R2004 or newer first). A key is matched to the drawing by that same rule on both engines and keeps its stored spelling when updated. On the live engine an exact spelling is changed with SetCustomByKey; otherwise AutoCAD decides — AddCustomInfo, and on its 'Duplicate key' SetCustomByKey; a delete is RemoveCustomByKey, and its 'Key not found' is reported as not deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoSummaryInfo Title
authorNoSummaryInfo Author
customNoCustom properties to write: {key: text}; a null value deletes the key. Keys not mentioned are left alone.
subjectNoSummaryInfo Subject
commentsNoSummaryInfo Comments
keywordsNoSummaryInfo Keywords

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply readOnlyHint=false; the description carries the rest and does so richly: partial-update semantics, the returned keys (summary_written/custom_written/custom_deleted), the not-deleted-on-missing-key nuance, engine-specific key-matching behavior (SetCustomByKey vs AddCustomInfo), and the case-compare and character-rejection rules. This is far beyond what structured fields provide.

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

Conciseness3/5

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

The purpose and return values are front-loaded, but the refusals material is a single dense paragraph with deep nested parentheticals that is hard to scan. Much of it is genuinely useful, yet the structure works against quick consumption.

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 mutation tool with no destructive annotation, the description covers write scope, refusal preconditions, cross-engine divergence, and return semantics. An output schema exists, yet the extra explanation of the returned keys is accurate and harmless; nothing needed to call it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: custom keys are matched by AutoCAD's case-compare rule, updates keep the stored spelling, and null deletes a key. The key-validation and case-collision details cannot be inferred from the schema's {key: text} description.

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?

Opens with a specific verb+resource ('Write DWGPROPS fields') and immediately scopes the mutation ('Only the arguments given are touched'), which lets an agent separate it from the read-side sibling drawing_properties_get without opening the schema.

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?

Clear about the write context and enumerates the exact conditions under which it refuses (headless SummaryInfo, non-string values, bad custom keys, line breaks, pre-R2004 documents) plus the delete-exemption. It never explicitly names drawing_properties_get as the read alternative, so the routing guidance is implied rather than stated.

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

drawing_purgePurge DrawingA

Purge all unused objects (layers, blocks, linetypes, styles) from the drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

Annotations contain only a title and no readOnly/destructive hints, so the description carries the full behavioral burden. It discloses that unused objects are removed but does not state that purging is destructive/irreversible, whether it can be undone, or whether confirmation is required.

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 states the action and scope with no filler. Every word contributes to understanding what the tool does.

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 parameterless tool with an output schema, the description covers the basic operation well. However, it omits the destructive nature and any guidance on when purging is appropriate, leaving a small but meaningful completeness gap.

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 and schema coverage is 100%, so there are no parameter semantics for the description to explain. Per the baseline for parameterless tools, no additional parameter documentation is 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?

The description uses a specific verb ('Purge') and identifies the exact resource: all unused objects (layers, blocks, linetypes, styles) from the drawing. It clearly distinguishes this from siblings like drawing_audit or entity_delete.

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 run a purge versus alternative cleanup/audit operations, nor any preconditions or exclusions. The usage context (e.g., before finalizing or saving) is only implied by the tool name.

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

drawing_redoRedoA

Reapply the operation you just undid.

Same history as drawing_undo, so the headless backend needs EZDXF_UNDO_DEPTH set. Anything drawn after an undo discards the redo branch — otherwise redo would restore a state that never existed, with geometry you had removed reappearing beside geometry you drew afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description reveals critical behavioral details: the headless backend environment variable requirement, the shared undo history, and the redo-branch discard semantics. This gives the agent important expectations about failure modes and state changes.

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 concise and well-structured: the core purpose is front-loaded in the first sentence, followed by necessary caveats. Every sentence adds meaningful information without redundancy.

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?

Given the tool's simplicity (no parameters) and the presence of an output schema, the description fully covers the operational context: how redo relates to undo, the environment prerequisite, and when redo becomes invalid. Nothing critical 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 has zero parameters, so parameter semantics are not a burden on the description. The baseline of 4 applies, and the description correctly focuses on behavioral context rather than 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 opening sentence 'Reapply the operation you just undid' uses a specific verb and resource, clearly defining the tool's purpose. It also implicitly distinguishes this from drawing_undo by describing the inverse operation while referencing the same undo history.

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 explains that redo shares history with drawing_undo and requires EZDXF_UNDO_DEPTH, which tells the agent when the tool will work. It also gives an explicit limitation: drawing after an undo discards the redo branch, making it clear when redo is no longer applicable.

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

drawing_refineDrawing: RefineB
Destructive

Run a bounded, transaction-safe critique/repair/re-critique loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoCritique focuses to repair; None runs all.
dry_runNoReturn the repair plan without modifying the drawing.
min_scoreNo
max_roundsNo
allowed_repairsNoOptional allowlist of repair focus names.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

The annotations already flag destructiveHint=true, and the description adds useful context by noting the loop is bounded and transaction-safe. However, it does not clarify what 'transaction-safe' means in practice—whether the tool starts its own transaction, requires transaction_begin/commit, or rolls back on failure—or what side effects a repair has on the drawing.

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?

One short, front-loaded sentence conveys the core behavior without filler. Every word adds meaning: 'bounded' hints at max rounds, 'transaction-safe' signals safety, and 'critique/repair/re-critique' describes the loop.

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?

Despite having an output schema and parameter descriptions, the tool definition is incomplete for a complex mutation tool. It does not explain how dry_run interacts with the loop, what triggers completion (min_score, max_rounds), or how transactions are scoped, leaving an agent uncertain about correct invocation and rollback behavior.

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?

The description adds no parameter-level meaning, and schema coverage is only 60%, leaving min_score and max_rounds undocumented in the schema. Focus, dry_run, and allowed_repairs have schema descriptions, but min_score's threshold meaning and max_rounds' relationship to the loop are not clarified; the vague 'bounded' in the description does not compensate.

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 and resource: it runs a bounded critique/repair/re-critique loop rather than a one-shot critique, which distinguishes it from drawing_critique. It could be more explicit by naming sibling tools such as drawing_critique or drawing_plan, so it is clear but not fully differentiated.

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 drawing_critique, drawing_preflight, or drawing_plan, and no exclusions or alternatives are named. The reader must infer that the loop is meant for iterative refinement; the description does not state this directly.

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

drawing_saveSave DrawingB

Save the current drawing. Optionally specify a new path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional save path; uses current path if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations provide only the title, so the description carries the full burden of behavioral disclosure. It states the save operation but does not disclose overwrite behavior, whether the current file is replaced, what happens if the file already exists, or whether the operation is destructive. For a mutation-like operation, this is a meaningful gap.

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 two short sentences with no filler. The core action is front-loaded, and the only parameter-related detail is stated efficiently. Every sentence 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?

This is a simple one-parameter tool with an output schema, so the description does not need to explain return values. However, the lack of differentiation from drawing_save_as and the absence of any mention of overwrite or default-path behavior leave the description slightly incomplete for an agent selecting between sibling tools.

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 100% for the single 'path' parameter, so the schema already documents its behavior well. The description adds the phrase 'specify a new path,' which is mildly useful but largely redundant with the schema's 'Optional save path; uses current path if omitted.' This matches the baseline for high 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 clearly states the action ('Save the current drawing') and the optional path parameter. However, it does not explicitly differentiate this from the sibling drawing_save_as, which appears to serve a very similar purpose when a new path is specified.

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 drawing_save versus drawing_save_as, nor any mention of what happens when omitting the path versus specifying one. The phrase 'Optionally specify a new path' actually blurs the line with drawing_save_as, so an agent cannot confidently decide which tool to invoke based on the description alone.

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

drawing_save_asSave AsA

Save current drawing to a new path/format (DWG, DXF, or DWT template).

The on-disk format is derived from the file extension so the bytes always match the name (N2) — e.g. 'part.dxf' writes DXF, not DWG. format overrides only when the path has no recognised extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFull destination path including extension
formatNoOutput format override: dwg, dxf, dwt. Default: derive from the path extension (the extension is authoritative).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide only a title, so the description carries the behavioral disclosure burden. It explains a non-obvious behavior: the on-disk format is derived from the file extension and format only overrides when the extension is unrecognized. This is valuable. It does not mention overwrite behavior or permissions, but the core behavioral quirk is well covered.

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 no redundancy. The first sentence states the core purpose; the second delivers the critical format-resolution rule. Every sentence earns its place.

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

Completeness4/5

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

For a two-parameter tool with an output schema, the description is largely complete: it covers the required path, the optional format override, and the format-resolution edge case. It could additionally mention overwrite semantics, but the essential information needed to call the tool correctly is present.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful nuance beyond the schema by clarifying that the extension is authoritative and by giving a concrete example ('part.dxf' writes DXF, not DWG). This helps the agent understand the relationship between path and format more deeply.

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 ('Save'), a clear resource ('current drawing'), and the distinguishing scope ('to a new path/format'), listing the supported formats DWG, DXF, and DWT. This differentiates it cleanly from siblings like drawing_save and drawing_export_dxf without needing to inspect schemas.

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 signals that this tool is for saving to a new path/format, which implies the appropriate use case versus drawing_save. It does not explicitly exclude alternatives such as drawing_export_dxf, but the 'new path/format' framing plus the format-resolution detail provides clear contextual guidance.

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

drawing_scale_checkUnderstand: Scale CheckA
Read-only

Is the drawing to scale against the reference - or a schematic whose lengths are lengths of drawn line, not of pipe? Read-only on both drawings.

Equipment tags are matched between the two (a Cyrillic look-alike such as Т4100 is the Latin T4100). Only a tag found exactly once in each is used; a tag found more than once (plan copies, a legend, a second sheet) is listed in ambiguous and takes no part. When a drawing holds several bodies of content (two copies of one plan), the pair of scopes - whole drawing or one cluster on each side - that matches the most tags is used and named in scope. For every two matched tags at least min_pair_mm apart on the reference, the ratio of their distances is taken (both in millimetres by each drawing's inferred unit, see drawing_understand). The result gives the matched tags, the median ratio, the quartiles and their range, the share of pairs within +/-10 % of the median, the same per room of the reference (or per cluster for tags in no room) in groups, and a verdict: to_scale (at least 80 % within the band; factor is the median, so a uniform other scale is recognised), schematic (50 % or less), partly in between, insufficient with fewer than three matched tags or no pair above the floor. Tag labels are not equipment centres; the band and the floor absorb that offset, and the result's notes say so.

Refused before anything is read: a reference or path that does not exist, a DXF over MAX_DXF_BYTES (the refusal names the size and the variable), a file the engine cannot parse (a DWG headlessly), and a min_pair_mm that is not a positive finite number.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoThe drawing to check (usually the P&ID); omitted: the current document.
referenceYesThe reference drawing of the same plant (a DXF, usually the layout): distances on it are the ones the other drawing is measured against.
min_pair_mmNoTag pairs closer than this on the reference (mm) are left out: a tag label is not an equipment centre.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With readOnlyHint=true already given, the description adds rich behavior: tag matching rules, Cyrillic/Latin normalization, ambiguity handling, multi-scope selection, the exact verdict thresholds (80%/50%, three-tag minimum), and the precise refusal conditions (missing file, MAX_DXF_BYTES, unparseable DWG, invalid min_pair_mm). This far exceeds the annotation baseline.

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 purpose is front-loaded in the first sentence and each subsequent block (matching, ratio/verdicts, refusals) is organized. It is dense and long with many parentheticals, so it is slightly heavier than strictly necessary, but little is pure filler.

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?

Given an output schema exists, the description still explains the returned fields (matched tags, median ratio, quartiles, groups, verdict) and covers edge cases, scope selection, and refusal behavior. An agent has everything needed to invoke it and interpret the result 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains that distances are compared in millimetres via each drawing's inferred unit (cross-referencing drawing_understand) and reinforces the min_pair_mm floor rationale as absorbing label-vs-centre offset.

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 opening sentence states a specific verb (check/verify) and resource (drawing scale vs. reference) and frames the core distinction between a to-scale drawing and a schematic. It is clearly distinguishable from siblings like drawing_understand and drawing_topology_check.

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 opening question and the refusal list make the applicable context clear, and it points to drawing_understand for the inferred unit. However, it never explicitly names an alternative tool or states when-not-to-use this one (e.g. vs. validation_check or drawing_diff).

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

drawing_settingsDrawing Settings (read / change)A

Read or change common AutoCAD drawing settings by friendly name.

A convenience facade over the system variables (INSUNITS, LUPREC, LTSCALE, DIMSCALE, DIMTXT, DIMASZ, DIMDEC, DIMDSEP, DIMZIN, TEXTSIZE, OSMODE, LIMMIN/ LIMMAX, GRIDMODE/GRIDUNIT, SNAPMODE/SNAPUNIT, ORTHOMODE, AUTOSNAP/POLARANG, PSLTSCALE, CANNOSCALE, LUNITS, AUNITS, DIMSTYLE, TEXTSTYLE) so the user can say "set units to mm, limits to A3 and the grid on" without memorising sysvar names. Call with no argument for a full snapshot; a write returns applied, changed ({key: [old, new]} — only what moved) and errors.

dim_text_height / dim_arrow_size / dim_decimals / decimal_separator / zero_suppression shape the dimension — text_size is TEXTSIZE, the height of a standalone TEXT entity, and does not touch dimensions.

Refusals, per key, nothing else rolled back: an unknown key; a value outside its range (grid/snap spacing > 0, polar_angle 0–360, precision 0–8, …); a malformed limits or annotation_scale; osmode / polar / polar_angle on the headless engine (capability: registry_sysvar — AutoCAD keeps them in the registry, a file cannot, and a headless snapshot reports them as None); dimstyle / textstyle when the backend has no styles contract. On the live engine annotation_scale must name a scale in the drawing's scale list (SCALELISTEDIT) and AutoCAD refuses the write on a paper-space layout with no active viewport; the headless engine adds the scale, seeding AutoCAD's default list first when the drawing has none, and refuses it on an R12 file (no OBJECTS section, so the value would vanish at save — save as R2000 or newer first; limits/grid/ortho survive). Headlessly, grid/snap are stored on the active VPORT and the annotation scale in the variable dictionary — the places AutoCAD reads them from.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsNoOmit to READ every setting; pass a dict to CHANGE them. Friendly keys: units (mm/cm/m/inch/feet), linear_precision, angular_precision, ltscale, dimscale, dim_text_height, dim_arrow_size, dim_decimals, decimal_separator ("." or ","), zero_suppression, text_size, point_mode, point_size, osmode, fillet_radius, limits ([[xmin,ymin],[xmax,ymax]]), grid (bool), grid_spacing, snap (bool), snap_spacing, ortho (bool), polar (bool), polar_angle (degrees), psltscale (bool), annotation_scale ("1:50"), linear_units (decimal|engineering|architectural|fractional|scientific), angular_units (degrees|dms|grads|radians|surveyor), dimstyle, textstyle (current style names). Example: {"units": "mm", "limits": [[0, 0], [420, 297]], "grid": true}.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes far beyond by disclosing that refusals are per-key with nothing else rolled back, which keys fail on the headless engine (osmode/polar, dimstyle/textstyle), the live-engine scale-list and paper-space viewport constraints, and the R12 no-OBJECTS save hazard. This is unusually rich behavioral disclosure.

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?

Front-loaded with the core read/change purpose, then progressively more specialized engine caveats. Every sentence carries operational information, though the long parenthetical sysvar list and multi-clause refusal paragraphs make it denser than strictly necessary.

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?

An output schema exists, so return-shape detail is optional, yet the description still names the write payload (applied, changed, errors). Combined with the refusal and engine-capability coverage, an agent has everything needed to call this correctly across live and headless backends.

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

Parameters4/5

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

Schema coverage is 100% and the schema already enumerates friendly keys and value formats, so baseline is 3. The description adds genuine semantics beyond the schema: it distinguishes dimension-shaping keys (dim_text_height, dim_arrow_size, etc.) from text_size (TEXTSIZE, standalone TEXT entity), and states refusal ranges such as grid/snap spacing > 0 and precision 0–8.

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 pair (read/change) and resource (common AutoCAD drawing settings by friendly name), and explicitly frames itself as a facade over named system variables. This distinguishes it from the raw system_get_variable / system_set_variable siblings without the agent needing to open any schema.

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?

Gives explicit invocation guidance: 'Call with no argument for a full snapshot', pass a dict to write, plus a per-key refusal catalogue. It implies rather than names the raw sysvar alternatives (system_set_variable), so it stops short of a full when-not-to-use statement, but context for use is clear.

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

drawing_template_listList Drawing TemplatesA
Read-only

The templates drawing_new(template=<name>) can start from.

Each row: standard (ISO/ANSI), sheet, paper, layout (the sheet tab's name), layer_set (mech / pid / iso13567), dimstyle / textstyle (ISO-25 / ISOCP or ANSI / ROMANS), scale, title_block (the ISO 5457 A3 frame, A3 sheets only), the settings applied, and files.dxf / files.dwt with present flags — the .dwt twins exist only once built on a live AutoCAD (scripts/smoke_settings_com.py --build-dwt). Never refuses; it reads a catalogue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint=true already covering the safety profile, the description adds genuine extra context: it 'never refuses' and reads a catalogue, and it discloses that `.dwt` twins only exist once built on a live AutoCAD with a specific script. That is a real behavioral precondition an agent would otherwise not know.

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?

Purpose is front-loaded in the first clause, and the field enumeration is dense but each item maps to a real column. The second half is somewhat heavily packed with backtick-delimited jargon, which costs a little readability.

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?

An output schema exists, so return values did not need describing, yet the description spends most of its length detailing row contents (standard, sheet, paper, layer_set, files.dxf/dwt flags). This is complete and non-misleading, but the emphasis is slightly misallocated toward schema-covered fields rather than usage.

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 the baseline is 4. The description instead characterizes the catalogue rows returned, which is a reasonable substitute and does not misstate any input semantics.

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 and resource and ties the tool directly to its consumer: the templates `drawing_new(template=<name>)` can start from. An agent can distinguish it from the sibling `drawing_template_save` and `template_list` without opening any schema.

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

Usage Guidelines4/5

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

It gives clear context for use ('the templates drawing_new can start from') and the assurance that it never refuses. It does not, however, explicitly name when NOT to use it or how it differs from the nearby `template_list` sibling, so a small amount of routing is left to inference.

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

drawing_template_saveSave As TemplateA

AutoCAD's SAVEAS → Drawing Template, on both engines.

Live AutoCAD writes a real .dwt (SaveAs(path, ac2018_Template)) and puts description into the template's summary Comments; the active document is rebound to the new file, as SAVEAS does. Headlessly a .dxf template is written — drawing_new(template=<path>) opens it — and a .dwt request is refused with capability dwt_write (the message names the DXF route and the COM route); a description is reported description_written: false because DXF has nowhere to keep it. Any other suffix, and any path outside the allowed directories, is refused before a byte is written.

Pack: core · lean: no (drawing_save_as is not lean either).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTemplate name for the report (default: the file stem).
pathYesDestination .dwt (live AutoCAD) or .dxf (either engine).
descriptionNoTemplate description → DWT summary Comments on the live engine.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, so the description carries the behavioral load and does it well: engine-dependent output format, document rebinding (SAVEAS side effect), refusal of non-.dwt/.dxf suffixes and out-of-allowed-directory paths before any bytes are written, and `description_written: false` on the DXF route. This is far beyond what the annotations convey.

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?

Front-loaded with the core verb and the engine split, then the edge cases. Dense but nearly every clause carries distinct information; the trailing 'Pack: core · lean: no' metadata is the only padding.

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?

Output schema exists, so return-value explanation isn't needed. For a save-as mutation with engine divergence, refusals, and a description-loss edge case, the description covers everything an agent needs to call it correctly, including the failure surface.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds value by tying `description` to the DWT summary Comments and confirming `path` must end in .dwt or .dxf. It does not elaborate on the `name` report parameter beyond what the schema already says.

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+resource (SAVEAS → Drawing Template) and immediately pins the two engines it works on. It explicitly names the sibling `drawing_save_as` and distinguishes itself from it, so an agent can select it without opening the schema.

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?

Gives clear conditional guidance: live AutoCAD writes a real `.dwt`, headless writes `.dxf`, and a `.dwt` request is refused with a named capability. It does not, however, spell out when an agent should prefer this over `drawing_save_as`, `drawing_export_dxf`, or `template_apply_layers` as alternatives — that routing is only implied.

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

drawing_topology_checkDrawing: Topology CheckA
Read-only

Topology of a line network (spec §11): dangling ends, near misses (end to end and end to line within gap) and interior crossings (two lines of one layer crossing away from their ends). Never modifies the drawing.

An end that touches another network line, any curve on another layer (a tank outline) or the box of any block reference (a valve, a pump) is connected. Arcs and bulged polyline segments are measured as true arcs; arcs are not tested for crossings. The default layers come with their classification as evidence.

Refused before any work: a path that does not exist or cannot be read, a layers entry that is not a layer of the drawing (the drawing's layers named), no layer classified as a network layer when layers is omitted (name them), a non-positive tol or gap, and a gap that does not exceed tol.

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNoTwo ends, or an end and a line, closer than this without touching are a near miss; default 0.2 % of the network's diagonal (never under 10 x tol).
tolNoWithin this distance two ends are joined.
pathNoA DXF to check instead of the current document; it is read, never opened or modified.
limitNoRows kept per list; counts are complete.
layersNoLayers to check; default: every layer the vocabulary classifies as piping or electrical with confidence >= 0.9.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and the description is consistent ('Never modifies the drawing') while adding substantial context beyond the annotation: how connectivity is defined (touching another line, a tank outline curve, or a block reference box), that arcs/bulged segments are measured as true arcs, that arcs are not tested for crossings, and the full set of refusal conditions.

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?

Front-loaded with the core purpose, then connectivity semantics, then refusals. Dense but every paragraph carries distinct information; the middle paragraph could be tightened slightly but nothing is wasted.

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?

An output schema exists so return values need not be described, and the description covers the remaining burden: input semantics, connectivity rules, refusal preconditions, and the read-only guarantee. An agent has everything needed to call 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: the gap-must-exceed-tol refusal constraint, that a layers entry must actually be a layer of the drawing, and that the default layers ship with their classification as evidence. These are semantic relations not derivable from the schema alone.

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?

Names a specific verb and resource ('Topology of a line network') and enumerates exactly what it detects: dangling ends, near misses, interior crossings. This clearly separates it from siblings like validation_check or drawing_diff without needing to open any schema.

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 useful preconditions (what gets refused: bad path, invalid layers, no network layer, non-positive tol/gap, gap <= tol) and states it never modifies the drawing, but it never says when to use this versus the sibling validation_check or drawing_understand. Usage is implied by the tool name rather than stated explicitly.

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

drawing_understandUnderstand: Describe DrawingA
Read-only

One report on a drawing somebody else made, every claim with its evidence and a confidence. Never modifies the drawing: a file is read as it is, and the current document through a snapshot (headless: the document in memory; live: a Document.Export DXF copy in a temporary folder, deleted after). An xref's own entities are not read - the host drawing is.

  • units: $INSUNITS as declared against the unit the geometry implies (text heights, wall thickness, door swings, labelled room areas, overall size - each item with its median and its value under every candidate unit). A disagreement is a warning with the numbers, never a silent correction.

  • extents: declared, computed and robust boxes and the outliers that stretch them, farthest first, by handle.

  • clusters: separate bodies of model-space content (plan copies, sheets, details), each with its box, entity count, commonest layers and tallest labels.

  • layers: entity count, drawn length (and metres in the inferred unit) and the discipline / service each most likely carries - the vocabulary's confidence (0.9) for a name keyword, 0.6 when most texts on the layer agree, 0.4 when fewer do.

  • equipment_tags (a tag found more than once is ambiguous), rooms (room labels in five languages, each with the wall-layer face it sits in and its measured area), languages (Latin / Turkish / Cyrillic character classes), blocks (named / anonymous, kinds by name), layouts, title_block and warnings.

Refused before anything is read: a path that does not exist, a DXF over MAX_DXF_BYTES (the refusal names the size and the variable), and a file the engine cannot parse (a DWG headlessly: ezdxf reads DXF only).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoDXF file to read (a DWG only on a live seat); omitted: the current document.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

With only a readOnlyHint annotation, the description carries the burden and does so richly: it explains the snapshot mechanism (in-memory for headless, a temporary Document.Export DXF for live, deleted after), that an xref's own entities are not read, that the host drawing is, and preconditions for refusal (nonexistent path, MAX_DXF_BYTES with the variable named, DWG unparsable headlessly). This is behavior far beyond the annotation.

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

Conciseness3/5

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

The behavioral framing is correctly front-loaded, but the description then enumerates output fields (units, extents, clusters, layers, equipment_tags, rooms, languages, blocks, layouts, title_block, warnings) at length, which duplicates the output schema and bloats the definition. Only the confidence-scoring rules (0.9/0.6/0.4) and unit-disagreement behavior clearly earn their space.

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 read-only analysis tool with an output schema, the description supplies everything an agent needs beyond structured fields: mutation stance, snapshot semantics, xref handling, confidence conventions, and the exact refusal set. Nothing material to correct invocation is missing.

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 100% and there is only one parameter, so the baseline is 3. The description reinforces path semantics (DXF read as-is; DWG only on a live seat; omitted means current document), but this largely restates what the schema field already documents, adding no new syntax or format detail.

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

Purpose4/5

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

The opening line states a specific verb and artifact: produce "one report on a drawing somebody else made, every claim with its evidence and a confidence." It clearly distinguishes itself from mutation siblings by declaring it never modifies the drawing. It does not, however, name or contrast itself against adjacent read/analysis siblings like drawing_info or analysis_layer_stats, so an agent must infer the split.

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 rather than stated: the tool is for understanding an existing drawing read-only. There is no explicit when-to-use/when-not or named alternative among the many analysis siblings (validation_check, drawing_critique, drawing_info). The refusal conditions tell the agent what will fail, which is useful context but not selection guidance.

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

drawing_undoUndoA

Undo the last drawing operation.

On the live COM backend this is AutoCAD's own undo. The headless backend has no journal, so a step is a full DXF snapshot and history is off by default — set EZDXF_UNDO_DEPTH to the number of steps you want. Measured cost of switching it on: 37x on entity creation (0.18 -> 6.65 ms per call). For a single checkpoint around a risky sequence, transaction_begin / transaction_rollback is far cheaper.

Drawing something after an undo discards the redo branch, as in AutoCAD.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only carry idempotentHint=false and destructiveHint=false. The description adds backend-specific behavior (COM native undo vs headless DXF snapshot journal), the off-by-default history, the measured 37x cost of enabling it, and the redo-branch side effect. This goes far beyond what the annotations reveal.

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 single-sentence purpose is front-loaded, followed by three tightly focused paragraphs: backend behavior, cost with cheaper alternative, and redo side-effect caveat. Every sentence earns its place with no filler.

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?

Covers purpose, backend differences, required configuration, performance cost, cheaper alternatives, and the redo-discard side effect, which is nearly everything an agent needs. It does not state the return value or behavior when there is nothing to undo, and no output schema exists to fill that gap; these are minor omissions.

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

Parameters4/5

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

The input schema has zero properties, so the 0-parameter baseline of 4 applies. The description adds the EZDXF_UNDO_DEPTH environment variable as the only relevant configuration knob, which is adjacent to parameters but not one itself, so it slightly exceeds the baseline.

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 opening sentence states a specific verb and resource: 'Undo the last drawing operation.' It is immediately distinguishable from destructive siblings like entity_delete and from transaction_rollback, which the description explicitly names and differentiates.

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?

Gives explicit when-to-use guidance: on the headless backend history is off by default and requires setting EZDXF_UNDO_DEPTH, and it names transaction_begin/transaction_rollback as the far cheaper alternative for a single checkpoint. The redo-discard caveat further informs correct usage.

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

entity_array_polarPolar ArrayA

Create a polar (circular) array of copies around a center point.

count is unbounded, so the same result-shaping applies as for the rectangular array: fields=["handle"] when the geometry is already known.

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesTotal number of items in the array
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
handleYesEntity handle to array
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.
center_xYesArray center X
center_yYesArray center Y
fill_angleYesTotal angle to fill in degrees (360 for full circle)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The description adds useful behavioral context beyond the annotations: it notes that count is unbounded and recommends fields=["handle"] when geometry is already known. However, it does not elaborate on side effects, error conditions, or what happens to the original entity beyond calling them "copies."

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 core purpose. The second sentence provides a practical tip, though it assumes familiarity with the rectangular array's "result-shaping" behavior, which slightly reduces self-contained clarity.

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 a complete input schema and an output schema available, the description does not need to repeat return details. It covers the main operation and a key edge case, but it leaves some behavioral details, such as rotation direction and handling of the original entity, to inference.

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

Parameters4/5

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

The input schema already covers 100% of parameters, so the baseline is 3. The description adds extra meaning by explaining that count is unbounded and by giving concrete guidance on the fields parameter, which is not fully captured in the schema.

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

Purpose5/5

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

The description states a specific verb and resource: "Create a polar (circular) array of copies around a center point." It clearly identifies the operation and differentiates it from the rectangular array sibling by explicitly naming the polar/circular geometry.

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 makes the basic use case clear and references the rectangular array's result-shaping behavior, but it does not explicitly state when to choose this tool over alternatives like entity_array_rectangular or entity_copy. The usage context is implied rather than fully articulated.

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

entity_array_rectangularRectangular ArrayA

Create a rectangular array of copies. Returns info of all created copies.

rows x cols is unbounded, so this is a result-heavy tool despite being a create: a 40x40 grid hands back 1600 full records. fields=["handle"] is usually all a caller needs from it.

ParametersJSON Schema
NameRequiredDescriptionDefault
colsYesNumber of columns
rowsYesNumber of rows
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
handleYesEntity handle to array
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.
col_spacingYesSpacing between columns (X direction)
row_spacingYesSpacing between rows (Y direction)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the readOnlyHint=false annotation, the description discloses a important behavioral trait: rows x cols is unbounded, so even a 40x40 grid returns 1600 full records, making it a result-heavy tool. It also warns that fields=['handle'] is usually sufficient, which is valuable cost-awareness context not present in annotations.

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

Conciseness5/5

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

The description is compact and well-structured: the first sentence states the core action and return value, and the second paragraph adds a high-value behavioral warning with a concrete example. There is no redundant or filler content.

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

Completeness4/5

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

For a 7-parameter create tool with an output schema, the description covers the most important contextual risk—large result sets—and provides a mitigation. It does not explicitly compare against entity_array_polar, but the schema and output schema carry the mechanical details, leaving only minor gaps.

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 100%, so the parameters are already well documented. The description adds one useful semantic hint—that fields=['handle'] is usually enough—but it does not further explain rows, cols, spacing, or compact beyond what the schema already provides.

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 the operation: 'Create a rectangular array of copies' and explicitly says it returns info of all created copies. The 'rectangular' qualifier distinguishes it from sibling entity_array_polar while still identifying this as a create-type tool.

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 useful invocation guidance, such as recommending fields=['handle'] because the tool is result-heavy. However, it does not explicitly state when to choose this tool over entity_array_polar or other array/create alternatives, so the when-to-use vs alternatives dimension is only implied.

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

entity_batch_createBatch Create EntitiesA

Create multiple entities in a single call for better performance.

Each entity dict must have a 'type' key and the parameters for that type. Example: [{"type": "line", "x1": 0, "y1": 0, "x2": 100, "y2": 0}, {"type": "circle", "cx": 50, "cy": 50, "radius": 25}]

Denser than cad_batch for many entities of the same kind (no per-step tool name), and usable as one step of a cad_batch. Use cad_batch when the calls differ, must be ordered, or must feed each other.

ParametersJSON Schema
NameRequiredDescriptionDefault
entitiesYesList of entity definitions. Each dict must have 'type' and type-specific params. Types: line, circle, arc, polyline, rectangle, text, point

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations only declare readOnlyHint=false, so the description must carry behavioral weight. It does add performance intent and the batch-composition behavior vs cad_batch, but it does not disclose failure semantics, atomicity, or limits on batch size. This is useful but not rich enough to exceed a mid score.

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?

Every part earns its place: purpose, required structure, example, and the comparative guidance with cad_batch. It is compact, front-loaded with purpose, and the example is directly useful rather than filler.

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

Completeness4/5

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

For a single-parameter tool with an output schema, the description covers the essential call-shape, example, and relationship to cad_batch. It does not mention edge cases like invalid entity types or partial failures, but those are secondary given the schema richness and sibling context.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes beyond schema by giving a concrete two-entity example showing exact dict shapes for line and circle, and by emphasizing the required 'type' key in a direct, actionable way.

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

Purpose5/5

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

The description opens with a clear verb-resource pair: 'Create multiple entities in a single call.' It explicitly positions this against cad_batch and the single-entity create tools, making its role in the sibling set apparent.

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?

The description gives explicit when-to-use guidance: use for better performance, use for many entities of the same kind, and use cad_batch when calls differ, must be ordered, or must feed each other. It also notes this tool can be a step inside cad_batch.

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

entity_batch_modifyBatch Modify EntitiesA

Apply multiple modifications in a single call.

Example: [{"handle": "1A", "action": "move", "dx": 10, "dy": 20}, {"handle": "2B", "action": "delete"}]

Covers move/rotate/scale/delete/set_properties only. For anything else, for ordering, or to feed one step's result into the next, use cad_batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationsYesList of operations. Each dict: {handle, action, ...params}. Actions: move(dx,dy), rotate(base_x,base_y,angle_deg), scale(base_x,base_y,factor), delete, set_properties(layer,color,...)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

注解仅提供readOnlyHint=false,没有破坏性提示。描述没有明确说明这是修改操作的影响(如是否可逆、对原图的影响),但也没有与注解矛盾。示例和操作列表提供了基本行为预期,但缺少对副作用或事务性的深入说明。

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?

描述结构紧凑:先说明核心功能,再用示例演示,最后给出边界条件和替代工具指引。每句话都有信息量,但示例占用了部分空间,略可精简。

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?

该工具只有一个参数且schema已完整覆盖,描述提供了操作类型和界线,足以让代理正确调用。但与cad_batch的区分已明确,整体对于简单批量修改场景已足够。缺少的仅是更深入的行为副作用或失败模式说明,这属于轻微不足。

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

Parameters4/5

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

虽然schema对operations参数的描述覆盖率为100%,但描述中提供的操作含义(dx/dy、base_x/base_y/angle_deg、factor等)和示例补充了schema未详细说明的参数格式,帮助代理正确构造操作字典。

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

Purpose5/5

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

描述以具体动词'Apply multiple modifications in a single call'开头,明确了资源和批量操作的核心目的。示例进一步澄清了输入格式,而'Covers move/rotate/scale/delete/set_properties only'清晰界定了范围,足以与cad_batch等兄弟工具区分。

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?

描述明确说明了支持的操作集合,并直接指出对于其他操作、需要排序或需要步骤间依赖的场景应使用cad_batch。这为代理提供了清晰的何时用此工具以及何时转向替代方案的条件。

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

entity_chamferChamfer Two EntitiesA

Bevel a corner with a chamfer line. Returns info on the new chamfer LINE. V1 supports LINE+LINE only.

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoIf true, trim source entities to the tangent points (AutoCAD default)
dist1YesChamfer distance along first line
dist2NoChamfer distance along second line (None = symmetric, dist2=dist1)
handle1YesFirst entity handle
handle2YesSecond entity handle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already signal that the tool is not read-only (readOnlyHint: false) and not marked destructive, so mutation is expected. The description adds a version/entity-type constraint and return-type hint, but it does not disclose that the default trim=true behavior may trim or modify the source lines; that key side effect appears only in the 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?

Two tight sentences with no filler: the action and result are front-loaded, and the key limitation is stated immediately after. Every sentence earns its place.

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

Completeness4/5

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

Given the rich input schema, output schema, and annotations, the description is largely sufficient: it clearly states the LINE+LINE-only constraint and the new chamfer LINE result. It would be slightly more complete if it mentioned the default trimming behavior or pointed to entity_fillet for arc fillet cases, but those are covered or inferable from structured data.

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 100%, so the structured parameter documentation already explains every argument including trim behavior and dist2 symmetry. The description itself adds no parameter-level meaning beyond the general line-line context.

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 ('Bevel'), names the resource ('a corner with a chamfer line'), and clarifies the resulting object is a chamfer LINE. The explicit 'V1 supports LINE+LINE only' further distinguishes it from related fillet/trim operations.

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 conveys the intended use case: chamfering a corner formed by two line entities, with the explicit limitation 'LINE+LINE only' acting as a when-not for other entity types. It does not name an alternative like entity_fillet for non-line corners, 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.

entity_change_spaceChange SpaceA

AutoCAD's CHSPACE: move entities across spaces, rescaled by the viewport.

Geometry is transformed by the viewport's own matrix so it stays the same size on screen — a move without that transform would leave a 100 mm feature as 100 mm of paper inside a 1:2 viewport.

Refused per entity for dimensions (unless freeze_dimensions), ACIS solids, tables and proxies, viewports, and entities already in the target space; refused outright for a twisted or non-plan viewport. Entities that end up outside the viewport or off the sheet are moved and flagged, not refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlesYesEntity handles to move.
directionNoto_paper (model -> sheet) or to_model (sheet -> model).to_paper
viewport_handleYesViewport that defines the model-to-paper mapping.
freeze_dimensionsNoBake each dimension's current measurement into its text before scaling.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the sparse annotations by explaining the viewport transformation rationale, per-entity refusal conditions, the freeze_dimensions exception, and the important 'moved and flagged, not refused' fallback for entities outside the viewport or sheet. This gives the agent a realistic picture of side effects and failure modes.

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 dense but every sentence earns its place: the core purpose, the transformation rationale, the refusal conditions, and the flagging behavior. It is front-loaded with the most important information and uses a concrete example to clarify the scaling behavior without unnecessary fluff.

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 tool with 4 parameters, an output schema, and non-trivial edge cases, the description is complete. It covers what the tool does, how scaling works, which entity types are refused, when the whole operation is refused, and how out-of-bounds results are handled. Nothing critical is missing 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic context beyond the schema: it explains the role of the viewport as the mapping source and clarifies what freeze_dimensions does in the context of dimension refusals. This helps the agent reason about parameter relationships and edge cases.

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

Purpose5/5

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

The description opens with a specific, unambiguous statement: 'move entities across spaces, rescaled by the viewport.' This clearly identifies the operation and distinguishes it from sibling tools like entity_move or entity_scale, since it explains the cross-space, viewport-driven transformation.

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 use case is strongly implied by the description, but it never explicitly states when to prefer this tool over alternatives such as entity_move or viewport_set_scale. The refusal list tells agents when the tool cannot be used, but it does not directly mention alternative tools or conditions that would route an agent elsewhere.

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

entity_copyCopy EntityA

Copy an entity and move the copy by (dx, dy, dz). Returns info of the new copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
dxYesX displacement for the copy
dyYesY displacement for the copy
dzNoZ displacement
handleYesEntity handle to copy

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate the operation is not read-only and not destructive. The description adds that a new copy is created, that it is displaced by (dx, dy, dz), and that information about the new copy is returned. This gives useful behavioral context beyond the annotations.

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

Conciseness5/5

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

The entire description is a single, front-loaded sentence with no filler. It states the operation, the displacement behavior, and the return value efficiently.

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 relatively simple copy-with-offset operation, the description, complete input schema, output schema, and annotations together provide enough context. There are no ambiguous behaviors or missing prerequisites that would prevent correct invocation.

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 100%, so all parameters are already documented with meaningful descriptions. The description's mention of (dx, dy, dz) aligns with the schema but adds no extra semantic detail beyond what the schema already provides.

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 ('Copy') and resource ('entity'), and specifies the displacement behavior and return value. This clearly distinguishes it from sibling tools like entity_move or entity_mirror.

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 intended use is implied by the verb 'copy' and the displacement parameters, but there is no explicit guidance on when to choose this tool over alternatives such as entity_move or entity_mirror. No exclusions or alternative routing are provided.

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

entity_create_arcCreate ArcA

Create a circular arc. Angles are in degrees, measured counter-clockwise from the positive X axis.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYesCenter X
cyYesCenter Y
colorNoACI color code
layerNoLayer name
radiusYesArc radius
end_angleYesEnd angle in degrees
start_angleYesStart angle in degrees (0 = right, CCW positive)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false, so the description adds meaningful behavioral context by defining the angular convention: degrees, counter-clockwise, and relative to the positive X axis. This clarifies how start_angle and end_angle are interpreted. No contradiction with annotations.

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

Conciseness5/5

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

Two short, front-loaded sentences with no filler. Every sentence carries useful information; the purpose leads, and the geometry convention follows.

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

Completeness4/5

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

Given the output schema exists and parameter descriptions cover all fields, the description is nearly complete. The main minor gap is not explicitly stating the sweep direction or start/end ordering, though the counter-clockwise angle convention strongly implies it.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds value by stating a single consistent convention for angles across both start and end parameters, which is not fully explicit in the end_angle schema entry.

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 and resource: 'Create a circular arc.' This clearly distinguishes it from sibling creation tools like entity_create_line and entity_create_circle, and there is no tautology or ambiguity.

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 this tool is for circular arcs rather than full circles or other entity types, but it does not explicitly state when to prefer this over entity_create_circle or provide exclusions/alternatives.

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

entity_create_block_refInsert Block ReferenceA

Insert a block reference (instance of an existing block definition).

Refused before any write, on both engines: a name that is not a block definition in this drawing (block 'X' is not defined — check block_list), a layout block (*Model_Space / *Paper_Space, a reference cycle) and a non-string name. The same gate as block_insert; this tool is the no-attributes form.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesInsertion X
yYesInsertion Y
nameYesBlock definition name (must exist in drawing)
layerNoLayer name
scale_xNoX scale factor
scale_yNoY scale factor
rotationNoRotation angle in degrees

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With only readOnlyHint=false available, the description adds meaningful behavior: it enumerates the refusal conditions enforced before any write (undefined block name, layout blocks *Model_Space/*Paper_Space, non-string names) and quotes the exact error text. It does not cover how layer/scale/rotation are applied, so not a full 5.

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?

Front-loads the core action in one sentence, then the failure conditions. The heavy backtick/parenthetical style is slightly dense but each clause carries real information, so it stays efficient.

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?

An output schema exists so return values need not be described, and the description supplies the missing piece for a mutation tool: the pre-write validation gate. Coverage of mutation semantics and sibling routing is strong, with only the parameter-level behavior of layer/scale/rotation left unaddressed.

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 100%, so all seven parameters are already documented in the schema. The description reinforces that name must reference an existing block definition but adds no format or syntax detail beyond the schema; baseline 3 applies.

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 and resource ('Insert a block reference') and immediately defines it as an instance of an existing block definition. It explicitly distinguishes itself from the sibling block_insert by being 'the no-attributes form', so an agent can differentiate without opening schemas.

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?

Points to block_list as the way to verify a valid name and clarifies the relationship to block_insert. It gives clear context but stops short of an explicit 'use block_insert instead when attributes are needed' routing rule.

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

entity_create_circleCreate CircleA

Create a circle at (cx, cy) with given radius.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYesCenter X
cyYesCenter Y
colorNoACI color code
layerNoLayer name
radiusYesCircle radius

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The annotation readOnlyHint=false already signals a mutating operation, and the description adds that the operation creates a circle at a specific center and radius. It does not describe side effects beyond creation, but for a simple 'create' tool this is acceptable and not contradictory with annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It communicates the core operation and the essential parameters immediately while leaving parameter details to the fully covered schema.

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

Completeness4/5

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

For a low-complexity creation tool with a fully described schema and an output schema present, the description covers the essential invocation context. The main gaps are lack of usage guidance and no mention of optional parameter behavior, but the schema fills those gaps adequately.

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 100%, so the structured schema already documents all five parameters. The description adds minimal meaning beyond the schema, mainly linking cx/cy to center coordinates and radius to the given radius, but it does not enrich optional parameters like color or layer.

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: 'Create a circle at (cx, cy) with given radius.' This clearly differentiates entity_create_circle from sibling creation tools like entity_create_arc, entity_create_ellipse, and entity_create_rectangle by entity type and defining parameters.

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 use when a circle entity needs to be created, but it does not explicitly state when to choose this over alternatives or mention any exclusions. For a straightforward creation tool this is minimally adequate, but there is no explicit routing guidance.

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

entity_create_ellipseCreate EllipseA

Create an ellipse. major_x/major_y define the major axis vector from the center.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYesCenter X
cyYesCenter Y
colorNoACI color code
layerNoLayer name
ratioNoMinor-to-major axis ratio (0 < ratio ≤ 1)
major_xYesMajor axis endpoint X (relative to center)
major_yYesMajor axis endpoint Y (relative to center)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already indicate a write operation via readOnlyHint=false, so repeating that is unnecessary. The description adds the geometric interpretation of the major axis vector, which is useful, but it does not disclose defaults, drawing-state requirements, or side effects beyond what the annotations already signal.

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 with the core action front-loaded and no filler. Every word serves a purpose: identifying the entity type and clarifying the key geometric parameter.

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

Completeness4/5

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

The schema covers all parameters and an output schema exists, so return-value documentation is unnecessary. The description provides the essential geometric concept for correct invocation. Minor gaps such as the meaning of a null ratio default or drawing-state prerequisites are not critical for this simple creation tool.

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 100%, so the baseline is 3. The description adds the 'vector from the center' framing for major_x/major_y, but the schema already describes them as 'relative to center.' It adds no extra meaning for ratio, color, or layer, though those are already documented in the schema.

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

Purpose5/5

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

The description clearly states the operation: 'Create an ellipse.' It also adds a meaningful geometric detail about major_x/major_y defining the major axis vector from the center, which distinguishes this from sibling entity creation tools like entity_create_circle or entity_create_line.

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 when an ellipse is needed, but it does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it. An agent must infer selection primarily from the tool name and resource type.

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

entity_create_hatchCreate HatchB

Create a hatch fill pattern inside a closed boundary polygon.

ParametersJSON Schema
NameRequiredDescriptionDefault
angleNoPattern rotation angle in degrees
colorNoACI color code
layerNoLayer name
scaleNoPattern scale factor
patternYesHatch pattern name: SOLID, ANSI31, ANSI32, STEEL, GRAVEL, etc.
boundary_pointsYesClosed boundary as list of [x, y] points

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations only declare readOnlyHint=false, so the description carries the burden of behavioral disclosure. It states that a closed boundary polygon is required, but it does not explain what happens if the boundary is not closed, whether the boundary is consumed or preserved, or what side effects occur beyond creating the hatch.

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, direct sentence with no redundant phrasing. It front-loads the core action and resource, and every word contributes meaning. There is no unnecessary detail or filler.

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

Completeness3/5

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

The schema fully documents parameters and an output schema exists, so return-value documentation is not needed. However, the description does not help an agent navigate the many related hatch and entity-creation tools, nor does it clarify behavioral requirements like boundary validation. It is minimally viable but leaves selection and edge-case reasoning to the agent.

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 100%, so all six parameters are already documented with meaningful descriptions. The function description adds no parameter-level detail beyond what the schema provides, which is acceptable but not additive. The baseline of 3 applies because the schema handles parameter semantics completely.

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 action ('Create') and resource ('hatch fill pattern') with a meaningful scope qualifier ('inside a closed boundary polygon'). It clearly signals creation rather than editing or modifying, which distinguishes it from tools like hatch_edit or hatch_set_gradient, though it does not explicitly name any sibling alternative.

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 this tool should be used instead of related hatch tools such as hatch_add_boundary, hatch_set_gradient, or hatch_edit. The phrase 'inside a closed boundary polygon' implies a prerequisite, but the description does not say when to prefer this tool over alternatives.

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

entity_create_lineCreate LineA

Create a line from (x1,y1) to (x2,y2). Returns entity info with handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesStart X coordinate
x2YesEnd X coordinate
y1YesStart Y coordinate
y2YesEnd Y coordinate
z1NoStart Z coordinate (default 0)
z2NoEnd Z coordinate (default 0)
colorNoACI color code 1-255, 256=ByLayer, 0=ByBlock
layerNoLayer name (default: current layer)
linetypeNoLinetype name (e.g. 'DASHED', 'CENTER')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations supply readOnlyHint=false, so the description is consistent with a mutating create operation. It adds one behavioral detail beyond the schema—'Returns entity info with handle'—but does not describe other side effects or prerequisites such as requiring an open drawing.

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 sentence that front-loads the action and endpoints and adds a useful return-value note. There is no filler or repetition of schema details.

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

Completeness4/5

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

For a 9-parameter create tool this is fairly lean, but the schema and output schema carry the parameter and return details. The description lacks usage context distinguishing line from polyline or arc, yet covers the essential operation and return handle, so it is adequate but not exhaustive.

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 100%, with each parameter including z1/z2 defaults and color/layer/linetype semantics documented. The description only restates the core x/y endpoints and adds no new parameter-level meaning, so the baseline of 3 applies.

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 resource ('a line') with exact endpoint coordinates, making the tool's function unmistakable. The resource name also differentiates it from the many entity_create_* siblings listed in context.

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 is given, and no alternative tools are mentioned. The intended use is implied by the name and description, but an agent is not told to prefer this over entity_create_polyline or entity_create_arc for multi-segment or curved geometry.

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

entity_create_mtextCreate MTextA

Create a multi-line text entity (MTEXT) with word-wrap at the specified width.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesInsertion point X
yYesInsertion point Y
textYesText content (supports \P for paragraph breaks, {\H...;} for formatting)
colorNoACI color code
layerNoLayer name
widthNoText box width in drawing units
heightNoCharacter height in drawing units
rotationNoRotation in degrees, CCW from +X

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate this is not read-only, and the description aligns by saying 'Create', which signals mutation. The description adds the concrete behavioral detail of word-wrap at a specified width, but does not disclose other side effects like whether an entity ID is returned or how defaults behave beyond what the schema already provides.

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 that states the key action, resource type, and distinguishing feature (word-wrap at width). Every word earns its place with no redundancy.

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

Completeness4/5

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

For a create-entity tool with a fully documented 8-parameter schema and an output schema present, the description provides enough context for selection and invocation. It could improve by explicitly referencing entity_create_text as the single-line alternative, but the core information is complete.

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 100%, so all eight parameters are already fully documented in the schema. The description only reiterates the width concept without adding new parameter semantics, so the baseline score of 3 applies.

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 ('Create') with a specific resource ('multi-line text entity (MTEXT)') and adds a distinctive behavior ('word-wrap at the specified width'). This clearly differentiates it from sibling tools like entity_create_text, which creates single-line text.

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 conveys the tool is for multi-line text with word-wrap, which gives an agent contextual grounds to select it over entity_create_text or other create-entity tools. However, it does not explicitly state when not to use it or name alternatives.

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

entity_create_pointCreate PointB

Create a point marker entity at (x, y).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesPoint X coordinate
yYesPoint Y coordinate
colorNoACI color code
layerNoLayer name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

The annotations block appears to duplicate the input schema and provides no standard hints like readOnlyHint or destructiveHint. The description only states that a point marker is created; it does not disclose coordinate system assumptions, current-layer behavior, units, or whether anything is returned.

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 concise sentence with the key action and positional arguments front-loaded. There is no filler or redundant content.

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 creation tool, the description plus schema is mostly adequate: required coordinates and optional styling parameters are covered. However, with no meaningful annotations and no output schema, return behavior, coordinate system, and current-drawing side effects are left unstated.

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

Parameters3/5

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

The schema already documents all parameters, including defaults for color and layer. The description adds only that the point is created at (x, y), which is essentially restating the schema's parameter descriptions. No additional semantic value is provided.

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 ('Create') and resource ('point marker entity') and includes the key positional arguments (x, y). This clearly distinguishes it from sibling entity creation tools like entity_create_line or entity_create_circle.

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 point_from_snap or other entity_create_* tools. There are no exclusions, prerequisites, or context cues to help an agent choose correctly.

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

entity_create_polylineCreate PolylineA

Create a lightweight 2D polyline through the given points.

Example: points=[[0,0],[100,0],[100,100],[0,100]], closed=true → rectangle

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoACI color code
layerNoLayer name
closedNoWhether to close the polyline
pointsYesList of [x, y] coordinate pairs

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The description adds the 'lightweight 2D' qualifier and a concrete closed-rectangle example, giving some context beyond the readOnlyHint=false annotation. However, it does not disclose behavior around null color/layer defaults, coordinate system assumptions, or minimum point requirements, which would be useful for a create operation.

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 extremely concise: one defining sentence plus an illustrative example. Every part earns its place, and the key information is front-loaded.

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

Completeness4/5

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

For a simple tool with full schema coverage and an output schema, the description is largely sufficient for an agent to invoke it correctly. The main gap is the lack of explicit routing guidance and default-value behavior, but the core invocation is clearly conveyed.

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 100%, so the parameters are already fully documented in the schema. The example clarifies the points format and shows how 'closed=true' affects the result, but it essentially restates schema information rather than adding new semantic meaning.

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 and resource: 'Create a lightweight 2D polyline through the given points.' This clearly identifies the tool's function and differentiates it from siblings like entity_create_line or entity_create_rectangle by using the distinctive polyline concept. The example further reinforces the intended behavior.

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 on when to prefer this tool over alternatives such as entity_create_line, entity_create_rectangle, or entity_create_spline. The example implies a use case but does not state when a polyline is appropriate or when another entity creation tool should be chosen instead.

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

entity_create_rectangleCreate RectangleA

Create a closed rectangular polyline between two corner points.

Convenience wrapper around entity_create_polyline.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesFirst corner X
x2YesOpposite corner X
y1YesFirst corner Y
y2YesOpposite corner Y
colorNoACI color code
layerNoLayer name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already establish the safety profile (readOnlyHint=false, idempotentHint=false), so the description's burden is lighter. It adds genuinely useful behavioral context beyond annotations: the result is a single 'closed' polyline rather than four line segments or an open polyline, and it delegates to entity_create_polyline. However, it does not disclose effects on current drawing state, error conditions, or coordinate-system assumptions, leaving notable gaps.

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, no filler. The primary action and result shape are front-loaded, and the sibling-routing note earns its place in the second sentence. Every word contributes.

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?

Complete for a simple convenience wrapper: the schema documents all parameters with defaults, annotations cover mutation and non-idempotency, and an output schema exists so return values need no explanation. The wrapper note contextualizes behavior via entity_create_polyline. The only minor gap is that axis-alignment/current-UCS assumptions are implied but not explicitly stated, which is reasonably inferable from the two-corner-point geometry.

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 100% — all six parameters (x1, y1, x2, y2, color, layer) already have meaningful descriptions with defaults. The description's 'between two corner points' is consistent with the schema's 'First corner'/'Opposite corner' but adds no new parameter-level meaning. Baseline 3 applies since the schema does the heavy lifting.

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 and resource: 'Create a closed rectangular polyline between two corner points.' The geometry is precisely defined (closed, rectangular, between two corners), and the wrapper note names entity_create_polyline, distinguishing it from the many other entity_create_* siblings without needing their schemas.

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 phrase 'Convenience wrapper around entity_create_polyline' gives clear context that this is the specialized path for rectangles, implicitly telling the agent to use this instead of hand-building a polyline with entity_create_polyline. It provides a clear usage context but does not explicitly state when-not-to-use or enumerate alternatives like entity_create_line or entity_create_circle.

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

entity_create_revcloudCreate Revision CloudA

Draw a revision cloud: a polyline whose every segment carries an arc.

A segment_length longer than the shortest edge is refused — the result would carry no arcs at all and would be a plain polyline reported as a cloud.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoTarget layer. Empty uses the current layer.
closedNoClose the path back to the first point.
pointsYesPath corners as [[x, y], ...].
segment_lengthYesApproximate arc length of each cloud bump, in drawing units.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint: false), the description discloses an important behavioral guardrail: a segment_length longer than the shortest edge is refused because it would produce a plain polyline misrepresented as a cloud. This tells the agent about a failure mode that is not visible in the schema or annotations.

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

Conciseness5/5

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

The description is two sentences and every part earns its place: the first states the core purpose and geometry, the second explains the key edge-case restriction. It is front-loaded and free of fluff or redundant restating of the title.

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?

Given 100% schema description coverage, an output schema, and a non-destructive annotation, the description covers the non-obvious failure mode and the entity's defining behavior. An agent has enough to invoke the tool correctly without needing extra documentation.

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 schema already documents all four parameters with clear descriptions, so the baseline is 3. The description adds extra semantic value by explaining the relationship between segment_length and edge length, a constraint not present in the schema. This helps the agent reason about valid inputs.

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

Purpose5/5

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

The description opens with a specific verb and resource—'Draw a revision cloud'—and immediately defines the entity as 'a polyline whose every segment carries an arc,' which clearly distinguishes it from siblings like entity_create_polyline or entity_create_line. This gives an agent a precise, non-tautological understanding of what the tool does.

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 context by specifying exactly when this tool is relevant: when a revision-cloud polyline is needed. It does not explicitly name alternatives or say 'use entity_create_polyline instead for plain polylines,' so it stops short of the highest score, but the context is unambiguous.

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

entity_create_splineCreate SplineA

Create a NURBS spline curve passing through the specified fit points.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoACI color code
layerNoLayer name
fit_pointsYesList of [x, y] fit points the spline passes through

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, so the description needn't restate that this mutates the drawing. The description conveys the fit-point-to-spline behavior but does not disclose details like whether the spline is degree-3, whether endpoints are included automatically, or how the result is returned. With an output schema present, some of that burden is reduced.

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?

One sentence that names the entity, the construction method, and the input data. No filler, no repetition of schema details, and the core behavior is front-loaded.

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

Completeness4/5

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

For a creation tool with an output schema, full schema documentation, and straightforward inputs, the description is nearly sufficient. It could add a note about the minimum number of fit points or default layer/color behavior, but the current level is adequate for an agent to select and invoke the tool.

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 100%, so the schema already documents fit_points, layer, and color. The description adds the key semantic detail that the spline passes through those fit points, which is valuable. However, it does not clarify coordinate space, units, or constraints on the points (e.g., at least two points). Baseline 3 is appropriate given full schema coverage.

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'), a resource ('NURBS spline curve'), and the defining behavior ('passing through the specified fit points'). This clearly distinguishes it from sibling creation tools like entity_create_line or entity_create_ellipse.

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 clearly implies the tool is for creating splines with fit points, which is enough context for an agent choosing among entity creation tools. However, it does not explicitly state when to prefer this over alternatives (e.g., polyline, arc, or ellipse) or mention any constraints (e.g., minimum number of fit points).

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

entity_create_tableCreate TableB

Create a native COM table or an explicitly-labelled ezdxf composite table.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
rowsYesData rows; every row must have the same length
layerNoTarget layerTEXT
titleNoOptional title row
headersNoOptional column header row
row_heightNo
text_heightNo
column_widthsNoOptional explicit widths per column

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

The annotation readOnlyHint=false already signals mutation, so the description is not required to restate that. It adds minor behavioral context by revealing the two possible table representations (COM vs ezdxf composite), but it does not explain what 'explicitly-labelled' means or how the choice is made, and it says nothing about side effects or coordinate behavior.

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 with no filler and gets straight to the point. However, the phrase 'explicitly-labelled ezdxf composite table' is dense and may require unpacking, so it is not perfectly clear despite being concise.

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?

While the schema covers parameter details and an output schema exists, the description fails to clarify the operational distinction between the two table types or when each is produced. For a 9-parameter creation tool, this missing behavioral context is a notable gap that an agent would need to resolve to use the tool fully correctly.

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

Parameters3/5

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

Schema description coverage is 78% and every parameter has its own description, so the schema carries the parameter-level burden. The tool description adds no parameter-specific meaning beyond the schema, which is acceptable given the high 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 states a clear action ('Create') and a specific resource ('table'), distinguishing it from the many entity_create_* siblings like line, circle, and text. The clause about native COM vs ezdxf composite table adds specificity, though the jargon may be opaque to agents unfamiliar with the CAD library.

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 other entity creation tools, nor any mention of prerequisites or conditions determining whether to create a COM table versus an ezdxf composite table. The description leaves usage entirely to inference.

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

entity_create_textCreate TextA

Create a single-line text entity (DTEXT/TEXT).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesInsertion point X
yYesInsertion point Y
textYesText content to display
colorNoACI color code
layerNoLayer name
heightNoText height in drawing units
rotationNoRotation angle in degrees

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, correctly flagging this as a mutation operation, and the 'Create' verb is consistent with that — no contradiction. The description adds only the DTEXT/TEXT primitive clarification, which carries mild behavioral weight (single-line semantics), but discloses nothing about side effects such as whether omitted color/layer fall back to current drawing settings or which space the entity is created in. With annotations covering the basic safety profile, the added context is thin but acceptable.

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?

Eight words in a single sentence, with the verb, the key differentiator ('single-line'), and the primitive mapping all front-loaded. There is zero filler and nothing duplicating schema fields. This is exemplary sizing for a simple create tool.

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

Completeness4/5

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

The tool is a simple 7-parameter create operation; the schema documents every parameter with defaults and an output schema exists, so the description's minimalism is not costly. The main omission is explicit routing to entity_create_mtext for multi-line text, which the agent must infer from the 'single-line' qualifier alone. For this complexity level, the definition is largely complete with that single usage 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 100% — x, y, text, color, layer, height, and rotation all have meaningful descriptions and defaults in the schema itself, so the description need not repeat them. The description adds no parameter-level detail, but at this coverage level the schema carries the burden fully. Baseline 3 applies.

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 (create), a resource (text entity), and the crucial qualifier 'single-line,' which distinguishes it from the entity_create_mtext sibling. The parenthetical '(DTEXT/TEXT)' maps the tool to the underlying CAD primitive, removing ambiguity about which command family this invokes. It stops short of explicitly naming entity_create_mtext as the alternative, which would earn 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 Guidelines3/5

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

The 'single-line' qualifier implies this tool is for simple text labels, implicitly excluding multiline/paragraph text, so an agent can infer basic usage context. However, the description never explicitly says when to choose this over entity_create_mtext or other entity_create_* siblings, and provides no when-not conditions or alternative routing. The usage guidance is implied, not stated.

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

entity_create_wipeoutCreate WipeoutA

Create a WIPEOUT that hides drawing content behind its outline.

Refuses fewer than three points: a zero-area mask hides nothing while reporting success.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoTarget layer. Empty uses the current layer.
pointsYesClosed polygon as [[x, y], ...]; at least 3 points.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Goes beyond the destructiveHint annotation by disclosing the hiding behavior and the refusal condition for invalid point counts, explaining why fewer than three points is rejected. This prevents an agent from passing degenerate geometry that would silently produce a useless mask.

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 states the purpose, the second handles an important edge case. No redundancy, filler, or repetition of schema information.

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

Completeness4/5

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

Contains the essential behavioral context and edge-case handling for a tool with only two well-documented parameters. It does not explicitly state the return value (and no output schema is present), but the core call semantics are complete and unambiguous.

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

Parameters3/5

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

The input schema already documents both parameters well ('layer' default and 'points' format). The description adds the context that points form the outline and reinforces the 3-point minimum, but provides no new parameter-level semantics beyond what the schema states.

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 ('Create'), resource ('WIPEOUT'), and its defining behavior ('hides drawing content behind its outline'), distinguishing it clearly from sibling entity creation tools like entity_create_hatch or entity_create_polyline.

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?

Provides no guidance on when to choose this tool over alternatives, such as when a wipeout is preferable to a hatch or other masking approach. The 'Refuses fewer than three points' note is a boundary condition, not selection guidance.

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

entity_deleteDelete EntityA
Destructive

Permanently delete an entity by its handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesEntity handle to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The description adds 'permanently,' which conveys irreversibility beyond the destructiveHint annotation's basic destructive classification. It also makes the handle-based targeting explicit, though it does not describe failure modes or cascade effects; annotations already cover the read-only/destructive profile.

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

Conciseness5/5

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

A single front-loaded sentence states the action and the key qualifier ('permanently') before the parameter. Every word earns its place with no filler.

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

Completeness4/5

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

For a one-parameter destructive operation with a high-coverage schema, an output schema, and safety annotations, the description covers what the tool does and how to identify the target. It is slightly light on guidance about batch alternatives, but that gap is already captured in usage guidance.

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 100%, and the handle parameter is already described in the schema as 'Entity handle to delete.' The description's 'by its handle' reinforces the parameter's role but adds no new format, source, or validation 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 ('delete'), names the resource ('entity'), and specifies the selection mechanism ('by its handle'). It clearly distinguishes from sibling tools like entity_delete_many because it identifies single-entity deletion by handle.

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 choose this tool over alternatives. The presence of entity_delete_many suggests a related batch operation, but the description does not mention it or provide selection criteria.

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

entity_delete_manyDelete Multiple EntitiesA
Destructive

Delete multiple entities in one call. Returns count of deleted entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlesYesList of entity handles to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The description aligns with annotations: it is a write/destructive operation and returns a count. It adds the return-count contract and batching behavior, which is useful, but it does not disclose partial-failure or irreversibility details beyond what destructiveHint already signals. No contradiction with annotations.

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

Conciseness5/5

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

Two short sentences each add value: the first states the action, the second the successful return value. No filler, redundant clauses, or repetition of the schema/annotations.

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

Completeness4/5

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

For a one-required-parameter destructive batch delete with an output schema and annotations, the description plus schema covers the main contract. It stops short of explaining behavior when a handle is invalid, whether deletion is atomic, or whether the count reflects only successful deletions, but overall it is sufficient for a low-complexity call.

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 100% and the only parameter, handles, is already documented as a list of entity handles to delete, so the description adds no additional parameter semantics. Baseline 3 is appropriate because the schema carries the parameter burden.

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 a specific verb ('Delete'), names the resource ('multiple entities'), and adds the batching scope ('in one call'), so the core action is unambiguous. It does not explicitly contrast with sibling entity_delete, though the name and 'multiple' phrasing make the distinction inferable.

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 'in one call' implies the tool is for batching deletions, which is a usage signal. However, no when-to-use/when-not-to-use guidance or alternative (e.g., entity_delete for a single entity) is provided, so the agent must infer selection from the name.

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

entity_edit_geometryEdit GeometryA

Edit the defining geometry of an existing entity in place (no delete/recreate).

CIRCLE: cx/cy/radius · LINE: x1/y1/x2/y2 · ARC: cx/cy/radius/start_angle/end_angle. Any argument left out is unchanged; the handle is preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxNoNew center X (CIRCLE/ARC)
cyNoNew center Y (CIRCLE/ARC)
x1NoNew start X (LINE)
x2NoNew end X (LINE)
y1NoNew start Y (LINE)
y2NoNew end Y (LINE)
handleYesHandle of an existing CIRCLE, LINE, or ARC
radiusNoNew radius (CIRCLE/ARC)
end_angleNoNew end angle in degrees (ARC)
start_angleNoNew start angle in degrees (ARC)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=false and destructiveHint=false; the description adds that edits happen in place, the handle is preserved, and omitted arguments leave values unchanged. This is meaningful behavioral context beyond the annotations and is consistent with them.

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?

Three terse lines: purpose, per-type parameter mapping, and preservation rule. Every sentence carries information and it is front-loaded.

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

Completeness4/5

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

For a 10-parameter, mid-complexity tool with output schema and annotations, the description covers the essential cross-parameter constraints and omit behavior. It doesn't explicitly address invalid parameter/entity-type combinations (e.g., passing x1 for CIRCLE), but that is reasonably inferable from the per-type mapping.

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

Parameters4/5

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

Schema covers 100% with individual descriptions, but the description adds entity-type parameter groups (CIRCLE/LINE/ARC) and the 'left out is unchanged' semantics that the null defaults alone don't convey. That meaningfully augments the schema.

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

Purpose5/5

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

States a specific verb ('Edit') and resource ('defining geometry of an existing entity'), and clarifies scope with 'in place (no delete/recreate)'. This distinguishes it from entity_create_* and other modify tools such as entity_mirror/entity_trim, making its purpose unmistakable.

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?

Shows it applies to existing entities and explicitly excludes delete/recreate, and the per-entity parameter mapping guides correct use. It doesn't name sibling alternatives (e.g., entity_create_line vs this) nor give explicit when-not conditions beyond the delete/recreate exclusion, but the context is clear enough.

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

entity_edit_textEdit TextA

Edit an existing text label in place — change its content, height, or rotation.

Use this to rename/relabel without deleting and recreating (which would lose the handle). Works on both TEXT and MTEXT.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoNew text content (unchanged if omitted)
handleYesHandle of an existing TEXT or MTEXT entity
heightNoNew text height (unchanged if omitted)
rotationNoNew rotation in degrees (unchanged if omitted)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds useful behavioral context by highlighting that the operation preserves the handle ('without deleting and recreating (which would lose the handle)') and by clarifying supported entity types ('Works on both TEXT and MTEXT').

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 two concise sentences with the primary action front-loaded and the usage rationale placed immediately afterward. Every sentence contributes meaningful information without redundancy.

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 single-required-parameter mutation tool with full schema coverage and an output schema present, the description covers the essential purpose, supported entity types, and the key benefit of in-place editing. Nothing critical is missing for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents each parameter, including defaults and 'unchanged if omitted' semantics. The description's phrase 'content, height, or rotation' restates the parameter names but adds no new semantic detail beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Edit') and resource ('existing text label') and clearly lists the changeable properties: content, height, or rotation. It distinguishes itself from create/delete operations by emphasizing 'in place' and explicitly noting it works on both TEXT and MTEXT.

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 a clear usage context: 'Use this to rename/relabel without deleting and recreating (which would lose the handle).' This explains when to choose this tool, though it does not name alternative tools or provide explicit when-not-to-use conditions.

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

entity_extendExtend EntityA

Extend target to meet boundary. If end_x/end_y is None, the target endpoint nearest the boundary is auto-selected.

V1 supports LINE+LINE only. Raises if the lines are parallel.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_xNoX of a point near the endpoint to extend (None = auto)
end_yNoY of a point near the endpoint to extend (None = auto)
target_handleYesHandle of the line being extended
boundary_handleYesHandle of the boundary line

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description reveals the auto-selection behavior for None endpoints, the LINE+LINE support limitation, and the explicit failure condition for parallel lines. These are actionable behavioral details that help an agent predict outcomes.

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?

Three tight sentences: the core operation is front-loaded, followed by the selection rule and the support/error constraints. Every sentence earns its place; no filler or redundant restatement of the tool name.

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?

With an output schema present and full parameter documentation, the description covers operation, parameter behavior, supported geometry, and error conditions. Nothing needed to invoke the tool 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 schema already documents all four parameters (100% coverage), but the description adds the important semantic that None end_x/end_y means 'nearest endpoint to the boundary is auto-selected,' which clarifies what 'auto' means beyond the schema. This is real added value, though modest.

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 ('Extend') with clear resources: target and boundary. It immediately distinguishes itself from sibling geometry tools like entity_trim and entity_fillet by naming the operation and the object relationship.

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 a clear usage context: extend a line target to a line boundary. The 'V1 supports LINE+LINE only' constraint explicitly excludes non-line inputs, and the parallel-line error tells the agent when the operation is not applicable. It does not name alternative tools, but the constraint provides enough routing guidance.

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

entity_filletFillet Two EntitiesA

Round a corner with a tangent arc. Returns info on the new ARC entity (or the first source line for radius=0). V1 supports LINE+LINE only.

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoIf true, trim source entities to the tangent points (AutoCAD default)
radiusYesFillet radius (>= 0; 0 = sharp corner / corner-merge)
handle1YesFirst entity handle
handle2YesSecond entity handle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already signal that this is not read-only and not flagged destructive. The description adds useful behavioral detail: it returns information about the newly created ARC entity, and for radius=0 it returns the first source line instead. It also discloses the LINE+LINE-only limitation, which helps set expectations before invocation.

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

Conciseness5/5

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

The description is compact and front-loaded. The core purpose appears in the first sentence, followed by return behavior and a critical version constraint. Every sentence carries useful information and there is no filler.

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?

With a complete input schema, an output schema, annotations, and a description that states the supported entity types and return behavior, the tool definition gives an agent everything needed to invoke it correctly. No critical operational context is missing for the stated LINE+LINE scope.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the return behavior for radius=0 and by indicating that handle1 and handle2 must both be lines. This gives the agent a better mental model of how the parameters relate to the operation.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Round a corner with a tangent arc.' It also distinguishes the tool from siblings like entity_chamfer by describing the geometry produced, and it clearly scopes the tool with 'V1 supports LINE+LINE only.'

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 makes the intended use clear: fillet two line entities with a tangent arc. It also gives a concrete when-not condition by stating LINE+LINE is the only supported input. It does not explicitly name alternatives such as entity_chamfer, but the use case is clear enough for an agent to select it appropriately.

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

entity_getGet EntityA
Read-only

Get all properties of a specific entity by its handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesEntity handle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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, so the safety profile is covered. The description adds the scope ('all properties') but does not disclose edge-case behavior such as what happens for an invalid handle, partial results, or performance implications. No contradiction exists, and the description adds modest behavioral context beyond the annotation.

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 sentence with no filler, front-loaded with the operation and target. It earns its place entirely; nothing could be removed without losing meaning.

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

Completeness4/5

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

For a one-parameter, read-only tool with an output schema present, the description covers the core need. The only notable gap is the lack of explicit error behavior for a nonexistent handle, but the output schema and annotations already carry much of the contextual load.

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 100%, so the only parameter 'handle' is fully documented in the schema. The description adds the phrase 'specific entity' but does not clarify handle format or lookup semantics, so value beyond schema is minimal — baseline 3 applies.

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 action ('Get') on a specific resource ('all properties of a specific entity' identified by handle). It clearly conveys the tool's function and is distinguishable from sibling tools like entity_list or analysis_entity_stats, though it does not explicitly name an alternative.

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 used when you have a specific entity handle and need all its properties, and the readOnlyHint annotation confirms safe use. However, it provides no explicit when-to-use vs alternatives or exclusion criteria, leaving the agent to infer routing from context.

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

entity_get_xdataGet Entity XDATAC
Read-only

Extended entity data as {app: [values]}. An app with no XDATA is simply absent.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesEntity handle
app_nameNoRegistered application name; omit for every app

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

readOnlyHint=true already establishes this as a safe read, so the bar is lower, and the description does add real behavioral value: the return is a map of app to value list, and apps without XDATA are omitted rather than returned empty. It stops there, saying nothing about missing entities, empty results overall, or handle validity.

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?

Two tight sentences with no filler, and the return-shape information leads. It could be a touch more informative given the space it saves, but nothing is wasted.

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 an output schema present, the description need not explain return values, yet it partially does. For a simple annotated read tool with full schema coverage this is close to adequate, but the absence of any usage context or handling of entities lacking XDATA entirely leaves a 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 coverage is 100% and both parameters are documented there (including 'omit for every app'), so the schema does the heavy lifting. The 'app with no XDATA is simply absent' note slightly illuminates the app_name filter but adds no syntax or formatting detail beyond the schema.

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

Purpose3/5

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

The description conveys that this returns extended entity data keyed by app, and the title supplies the verb, but the text itself never states the action ("retrieve/return XDATA for an entity"). It reads as a return-shape footnote rather than a purpose statement, so an agent must infer intent from the name/title.

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 versus alternatives, no mention of the obvious counterpart entity_set_xdata, and no note on prerequisites such as the entity existing or having XDATA attached. Usage must be fully inferred.

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

entity_listList EntitiesA
Read-only

List entities in the drawing with optional type and layer filters.

Returns handle, type, layer, color, and type-specific properties. Use handles with entity_get, entity_move, entity_delete, etc.

This is the most expensive result on the server — the full record runs ~250 characters per entity, and properties.bounding_box alone is about a third of it. When all you need is handles, say so::

entity_list(layer_filter="GEOMETRY", fields=["handle", "type"], compact=True)

Paging honesty: a plain list has nowhere to say that more entities followed the page, so compact=True is the only mode that reports total, truncated and next_offset — all measured against the same filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum entities to return
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
offsetNoNumber of entities to skip
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.
type_filterNoFilter by entity type: LINE, CIRCLE, ARC, LWPOLYLINE, TEXT, MTEXT, INSERT, HATCH, etc.
layer_filterNoFilter by layer name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With readOnlyHint=true already covering safety, the description adds substantial behavioral insight: the large per-entity payload cost, the role of bounding_box in that cost, the fact that plain list mode cannot communicate truncation, and that only compact mode reports total, truncated, and next_offset. This goes well beyond the annotations and helps the agent anticipate performance and pagination 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 front-loaded with the core purpose, then return shape, then the most important performance caveat, then a concrete usage example, then the paging subtlety. Every sentence carries actionable information; the length is justified by the tool's complexity and the need to warn about expensive results and truncation behavior.

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?

The description covers filters, return fields, field projection, nested properties, performance characteristics, the two result shapes, paging edge cases, and downstream usage of returned handles. An output schema exists and readOnlyHint is declared, so the description does not need to restate return-value structure or safety. Nothing important for selecting and invoking this tool 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 input schema already documents all six parameters with 100% coverage, so the baseline is 3. The description adds meaning beyond the schema by explaining why fields projection matters, giving a concrete example with layer_filter, fields, and compact, and clarifying exactly which result envelope supports truncation reporting. This is useful semantic guidance layered on top of an already-complete schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List entities in the drawing with optional type and layer filters.' It immediately states what is returned (handle, type, layer, color, type-specific properties) and how handles flow into sibling tools like entity_get, entity_move, and entity_delete. This fully differentiates it as the general entity-listing tool.

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 strong practical context: it warns that entity_list is the most expensive server result, shows exactly when to use fields and compact, and explains the paging limitation. It also tells agents to pass returned handles to downstream entity operations. It stops short of explicitly naming alternative list-like tools or saying 'use X instead when...', so it is clear but not exhaustive.

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

entity_mirrorMirror EntityA

Mirror an entity across a line defined by two points. Returns the mirrored copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesMirror line first point X
x2YesMirror line second point X
y1YesMirror line first point Y
y2YesMirror line second point Y
handleYesEntity handle
delete_originalNoDelete original after mirroring

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already establish non-read-only and non-destructive hints, so the description only needs to add extra behavior. It adds that a mirrored copy is returned, but it does not mention the effect of delete_original (preserving or deleting the original) or any other side effects. This is acceptable 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.

Conciseness5/5

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

Two short sentences with no filler: the operation, the mirror-line definition, and the return behavior are front-loaded. Every sentence earns its place.

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

Completeness4/5

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

For a six-parameter transform with complete schema coverage, an output schema, and safety annotations, the description plus structured data is largely sufficient. The only notable omission is explicit linkage between delete_original and the original entity's fate, though the schema default already covers this.

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 100%, with each parameter (handle, x1, y1, x2, y2, delete_original) already documented. The description's mention of a line defined by two points maps to x1/y1/x2/y2 but adds no new semantic detail beyond the schema.

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

Purpose5/5

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

The description states a specific operation ('Mirror an entity') and the geometric method ('across a line defined by two points'), plus the output ('returns the mirrored copy'). This clearly distinguishes it from sibling transforms like entity_move, entity_copy, and entity_rotate.

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 obvious use case—mirroring an entity—but gives no explicit guidance on when to prefer this over sibling tools such as entity_copy or entity_rotate, nor any exclusions or conditions. Usage is implied by the operation name rather than stated.

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

entity_moveMove EntityA

Move an entity by the specified displacement vector (dx, dy, dz).

ParametersJSON Schema
NameRequiredDescriptionDefault
dxYesX displacement
dyYesY displacement
dzNoZ displacement
handleYesEntity handle (hex string from entity_list or entity_create_*)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, establishing this is a non-read-only and non-destructive mutation. The description goes beyond annotations by specifying that movement is by a displacement vector rather than absolute coordinates or a target point, giving agents useful behavioral context about how the transformation is applied.

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, compact sentence states the verb, object, and relevant parameters with no filler. The essential concept (relative displacement vector) is front-loaded, and every word earns its place.

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 simple four-parameter transformation tool with full schema descriptions, annotations, and an output schema, the description is complete. It conveys the core behavior, and nothing critical like return value or prerequisites is missing given the structured context.

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 100%, so the schema already documents handle, dx, dy, and dz with meaningful descriptions. The tool description adds little beyond restating the displacement vector concept, which is already captured in parameter descriptions. It does not clarify units, coordinate system, or sign conventions, but the baseline for full schema coverage is appropriate.

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 ('Move') and a clear resource ('an entity') plus the exact displacement vector parameters (dx, dy, dz). This precisely distinguishes it from sibling entity tools like entity_rotate or entity_copy, and there is no ambiguity about what the tool accomplishes.

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 implies when to use the tool: whenever an entity needs a relative displacement. It does not explicitly name alternatives or exclusion conditions, but among the large sibling list there is no competing move-like tool, so the context is sufficient and no misleading guidance is present.

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

entity_offsetOffset EntityB

Create a parallel copy of a line, circle, or polyline at the given distance.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesEntity handle (line, circle, or polyline)
side_xNoX coordinate of a point on the offset side (optional)
side_yNoY coordinate of a point on the offset side (optional)
distanceYesOffset distance (positive = outward/right)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's job is to add context beyond that. 'Create a parallel copy' usefully implies the original entity is preserved, and the line/circle/polyline scope is stated. However, it does not disclose how the offset side is determined when side_x/side_y are omitted, what happens for unsupported entity types, or whether the new entity is selected afterward.

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 15-word sentence that front-loads the verb and resource, then specifies the operand types and the distance qualifier. Every word carries meaning; there is no filler, redundancy, or buried critical information.

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 that an output schema exists and annotations cover the safety profile, the core operation is adequately stated. The main gap is the ambiguous interaction between the sign of distance and the optional side_x/side_y point: the description does not clarify which takes precedence or what happens when a side point is omitted. For a moderate-complexity tool, this is a meaningful but not crippling omission.

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 100%, so the schema fully documents handle, distance, side_x, and side_y. The description contributes nothing about parameters beyond the schema's 'positive = outward/right' distance semantics. Per the rubric, the baseline of 3 applies when the schema does the heavy lifting.

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 ('Create') and resource ('a parallel copy of a line, circle, or polyline'), and the phrase 'parallel copy... at the given distance' captures the essence of offset in a way that inherently distinguishes it from sibling operations like entity_copy, entity_move, or entity_mirror. It does not explicitly name sibling alternatives, so it stops just 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?

No guidance is given on when to use this tool versus alternatives such as entity_copy, entity_mirror, or entity_move. There are no exclusions, prerequisites, or scenarios mentioned. The agent must infer appropriate usage entirely from the tool name and the sibling list.

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

entity_rotateRotate EntityA

Rotate an entity around a base point by the specified angle.

ParametersJSON Schema
NameRequiredDescriptionDefault
base_xYesRotation base point X
base_yYesRotation base point Y
handleYesEntity handle
angle_degYesRotation angle in degrees (positive = counter-clockwise)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already indicate a mutating but non-destructive operation, and the description does not contradict them. It adds the geometric semantics of rotating around a base point, but it does not disclose whether the original entity is modified in place, whether undo is available, or what the tool returns.

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, compact sentence with no filler or redundant wording. The core operation and its main semantic constraint are stated directly and efficiently.

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

Completeness4/5

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

For a straightforward transformation tool, the combination of a clear one-sentence description, fully documented required parameters, annotations, and an output schema covers the essentials. The main gap is the absence of any guidance about coordinate systems or effects on related entities, but this is not critical for basic invocation.

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 100%, and the schema already explains each parameter, including the counter-clockwise convention for angle_deg. The description only repeats the general concepts of base point and angle without adding 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 action (rotate), the target (an entity), and the two key parameters (base point and angle). It reads as more than a restatement of the name, though it does not explicitly contrast with sibling transform tools like entity_move or entity_scale.

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 intended use is implied: when an entity needs to be rotated around a base point, this is the tool. However, the description gives no explicit when-not-to-use conditions or alternatives, making it less helpful for an agent deciding among the many sibling entity-operation tools.

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

entity_scaleScale EntityA

Scale an entity uniformly from a base point.

ParametersJSON Schema
NameRequiredDescriptionDefault
base_xYesScale base point X
base_yYesScale base point Y
factorYesScale factor (>1 enlarges, <1 shrinks)
handleYesEntity handle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already communicate that this is a write operation (readOnlyHint=false) and not flagged destructive. The description adds meaningful geometric behavior — uniform scaling from a base point — but does not disclose whether the original entity is modified in place, whether undo is supported, or whether there are entity-type restrictions.

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 sentence with no filler. The core action, uniform scaling, and base-point anchoring are all expressed efficiently and up front.

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

Completeness3/5

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

The description covers the core operation, and the schema plus annotations supply parameter and mutation context. However, for a transform tool in a large sibling set, it omits practical context such as whether the original entity is altered or a new entity is produced, and whether any entity types are unsupported.

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?

All four parameters are fully described in the input schema, including the factor semantics with exclusiveMinimum. The description's 'uniformly' clarifies that the factor applies isotropically, but it adds little parameter meaning beyond what the schema already provides.

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 ('scale') and resource ('entity'), and adds the two key distinguishing qualifiers: uniform scaling and a base point. This is enough for an agent to tell it apart from sibling transform tools like entity_move, entity_rotate, entity_mirror, or entity_offset.

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 instead of alternatives such as entity_move, entity_rotate, entity_mirror, or entity_copy. The only implied usage context comes from the tool's name and one-line description.

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

entity_select_smartEntity: Smart Select (semantic predicate)A
Read-only

Select entities by semantic predicate instead of memorising handles.

Uncapped. The usual next step is dimension_auto(handles), so fields=["handle"] is normally all this needs to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.
predicateYesPredicate dict (all keys optional, AND-ed): type (e.g. 'LINE'), layer (name), near ([x,y,radius]), length_range ([min,max], LINE/ARC only), color (ACI int).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the useful 'Uncapped' behavior and the workflow hint about returning handles, which goes slightly beyond the annotations and schema. It does not describe pagination or truncation behavior, though the compact parameter and output schema already carry some of that information.

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 two short sentences with no filler. The core purpose is stated first, and the second sentence provides actionable workflow guidance. 'Uncapped' is terse but meaningful behavior information.

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

Completeness4/5

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

Given the rich input schema, output schema presence, and readOnlyHint annotation, the description covers the essential selection purpose and common next step. It lacks explicit routing among the many selection-related sibling tools, but an agent can invoke this tool correctly using the schema plus the description's guidance.

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

Parameters4/5

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

Schema description coverage is 100%, and the schema itself documents predicate, fields, and compact in detail. The description adds practical guidance beyond the schema by recommending fields=['handle'] for the typical dimension_auto workflow, which helps the agent choose parameter values more effectively.

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 and resource ('Select entities') and the method ('by semantic predicate instead of memorising handles'). This clearly distinguishes it from handle-based entity access, though it does not explicitly differentiate it from sibling tools like analysis_select_by_type or analysis_select_by_layer.

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 'instead of memorising handles' implies use when the caller has semantic criteria rather than known handles, and 'the usual next step is dimension_auto(handles)' provides concrete workflow context. However, it does not explicitly state when to prefer this over selection/analysis siblings, nor mention any exclusions.

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

entity_set_propertiesSet Entity PropertiesA

Change one or more properties of an entity (layer, color, linetype, lineweight, visibility).

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoNew ACI color (256=ByLayer, 0=ByBlock, 1-255=specific)
layerNoNew layer name
handleYesEntity handle
visibleNoSet entity visibility
linetypeNoNew linetype name (e.g. 'DASHED', 'CENTER', 'ByLayer')
lineweightNoLineweight in 0.01mm units (-3=ByLayer, -2=ByBlock)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already signal a non-read-only, non-destructive mutation, and the description is consistent with them. The phrase 'one or more' adds partial-update context, but the description does not state whether omitted/null properties are preserved, or how invalid values or entities are handled.

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 contains the verb, target, and complete property scope. There is no filler, redundancy, or restating of schema details.

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

Completeness4/5

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

For a focused property-update tool, the combination of description, 100% schema parameter documentation, and an output schema is sufficient for correct invocation. The main missing context is usage guidance and explicit no-change semantics for omitted properties, but these are relatively minor at this complexity level.

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 100%, so parameters are already fully documented with details such as ACI color meanings and lineweight units. The description merely lists property names and adds no parameter semantics beyond what the schema provides.

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 ('Change') with a clear resource ('properties of an entity') and enumerates the exact property set: layer, color, linetype, lineweight, visibility. This distinguishes it from geometric editing siblings like entity_move, entity_scale, and entity_edit_geometry.

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 property list gives an implied use case: call this tool when modifying entity display/classification properties rather than geometry. However, it provides no explicit exclusions or alternatives, such as when to prefer entity_change_space, entity_edit_geometry, or layer_modify.

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

entity_set_xdataSet Entity XDATAA

Replace the named app's XDATA on one entity; an empty list removes it.

Limits are AutoCAD's and are enforced before writing: 255 characters per string and 16 KB per entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesEntity handle
valuesYesValues typed by kind: strings (≤255 chars) → 1000, ints → 1071, floats → 1040, [x,y] → 1010
app_nameYesRegistered application name (created if missing)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations alone only say readOnlyHint=false, so the description carries real weight: it discloses that existing XDATA for that app is overwritten, that an empty list deletes it, and that 255-char/16 KB AutoCAD limits are enforced before writing (i.e., validation precedes the write). It stops short of stating what happens to other apps' XDATA on the same entity or how limit violations are reported.

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, front-loaded with the core action and the removal case, followed by the constraints. Every clause carries information an agent would otherwise have to guess; nothing is padding.

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

Completeness4/5

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

For a mutation tool with minimal annotations and an output schema, the definition covers purpose, destructive replacement semantics, deletion behavior, and input limits. The remaining gap is operational context — permission/app-registration expectations and what a rejection looks like — though 'enforced before writing' partially covers the latter.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning not in the schema: the empty-list semantics of 'values' (delete) and the per-entity 16 KB ceiling, which is absent from the parameter docs. handle and app_name gain no extra 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 states a precise verb and resource: 'Replace the named app's XDATA on one entity,' plus a removal case. It clearly implies the read counterpart (entity_get_xdata) and distinguishes itself from generic setters like entity_set_properties, but it never names a sibling to route the agent explicitly.

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 only implied: an agent can infer this is the write-side of per-app XDATA manipulation, and the empty-list case effectively describes the removal workflow. However, there is no statement of prerequisites, when to prefer this over entity_set_properties, or whether existing XDATA should be read first — and 'Replace' implies clobbering that the caller must plan for.

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

entity_trimTrim EntityA

Trim target against cutter, keeping the segment containing (keep_x, keep_y).

V1 supports LINE+LINE only. Cutter is treated as an infinite ray (AutoCAD's default 'implied extend' trim mode). Raises if the lines are parallel.

ParametersJSON Schema
NameRequiredDescriptionDefault
keep_xYesX of a point on the side of the target to KEEP
keep_yYesY of a point on the side of the target to KEEP
cutter_handleYesHandle of the cutting line
target_handleYesHandle of the line being trimmed

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the cutter behaves as an infinite ray, that only LINE+LINE is supported in V1, and that parallel lines cause an error. The phrase 'keeping the segment' also communicates that the discarded portion is effectively removed, which is important behavioral context for a mutating operation.

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 three tight sentences with no filler. It front-loads the core operation, then states scope, geometric behavior, and error condition. Every sentence contributes useful information.

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 focused 4-parameter trimming tool with an output schema and annotation hints, the description is complete enough: it covers the operation, entity-type restriction, geometric mode, keep-side semantics, and the parallel-line failure case. Nothing essential 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 input schema already documents all four parameters, so the baseline is 3. The description adds semantic value by explaining the geometric relationship between target and cutter, clarifying that the cutter is treated as an infinite ray, and indicating how keep_x/keep_y select the surviving segment.

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 the action: trim `target` against `cutter` and keep the segment containing a keep point. It also includes the key differentiator that only LINE+LINE is supported and that the cutter is treated as an infinite ray, which makes it distinguishable from similar sibling tools like entity_extend or entity_fillet.

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 this tool is for line-line trimming and explicitly restricts usage to LINE+LINE, which gives the agent a clear boundary. However, it never names alternative tools or explains when to prefer entity_trim over entity_extend or entity_fillet, so the selection guidance remains mostly implicit.

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

gd_frameGD&T: Feature Control Frame (ISO 1101)A

Draw an ISO 1101 feature control frame from LINE + TEXT primitives.

Renders identically on COM and ezdxf. Referenced datums are recorded so the gdt critique focus flags any datum with no matching datum feature.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesFrame bottom-left corner X.
yYesFrame bottom-left corner Y.
layerNoLayer (defaults to the active DIM layer).
datumsNoOrdered datum references, e.g. ['A','B']. Required for orientation/location/runout characteristics.
heightNoFrame height (mm); text scales with it.
symbolYesGeometric characteristic: straightness, flatness, circularity, cylindricity, profile_line, profile_surface, angularity, perpendicularity, parallelism, position, concentricity, symmetry, circular_runout, total_runout.
diameterNoPrefix ⌀ for a cylindrical (diametral) tolerance zone.
modifierNoMaterial-condition modifier: M (MMC), L (LMC), S (RFS).
toleranceYesTolerance zone value (mm).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only mark destructiveHint=false, so the description carries the behavioral burden. It adds two non-obvious behaviors: identical output across COM and ezdxf, and recording of referenced datums so that critique can match them against datum features. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences, with the core action front-loaded and each additional sentence providing non-obvious information. No filler or repeated schema content.

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?

Together with a 100% documented schema and an output schema, the description is execution-ready: it states what the tool draws, its cross-backend guarantee, and how datums affect downstream critique. No critical invocation details are 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?

Schema coverage is 100%, so the baseline is 3. The description adds one meaningful semantic by explaining that provided datums are recorded for critique validation, but it does not enrich the other parameters beyond what the schema already states.

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 first sentence names a specific verb ('Draw'), a standard ('ISO 1101'), and a distinct object ('feature control frame'), with an implementation clue ('from LINE + TEXT primitives'). That separates it from entity-creation and drawing-CAD siblings even without naming an alternative.

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 is given. The description implies the use case through 'Draw an ISO 1101 feature control frame' and the note about recorded datums for critique, but an agent must infer the boundary with related tools like datum_feature.

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

gear_draw_helical_front_viewGear: Helical Front ViewA

Deterministic helical gear front view: full involute outline (40 pts/flank), pitch/base/outer/root circles, helix symbol, optional bore + keyway.

Returns a handle bundle plus 'metadata' for downstream gear_draw_section_aa.

ParametersJSON Schema
NameRequiredDescriptionDefault
handNoHelix hand: 'RH' (right) or 'LH' (left).RH
teethYesNumber of teeth.
moduleYesModule (mm). Pitch radius = module*teeth/2.
center_xNo
center_yNo
helix_angleYesHelix angle in degrees.
keyway_depthNoKeyway depth into hub (t2).
keyway_widthNoKeyway width (b). Auto from DIN 6885 if bore set and this is None.
bore_diameterNoOptional bore diameter (mm). Adds a centered hole.
pressure_angleNoPressure angle (deg). Standard: 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only mark destructiveHint false, so the description carries most of the behavioral burden. It discloses determinism, the geometric construction detail (40 pts/flank, circle set), optional bore/keyway, and the handle+metadata return shape—valuable beyond the schema. It could mention whether the operation inserts entities into the active drawing, but the handle return implies this.

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, front-loaded with the core purpose and geometry output, then the downstream workflow note. Every clause earns its place; no filler or repetition of schema details.

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?

Given the rich input schema, output schema, and the workflow hint toward gear_draw_section_aa, the description is complete for correct selection and invocation. It captures deterministic behavior, output contents, and return contract without needing to restate parameter documentation.

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 80%, and parameter descriptions already include defaults, ranges, and formulas. The tool description adds only 'optional bore + keyway', which mirrors schema default nulls; it contributes little parameter meaning beyond the schema, so baseline 3 applies.

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 a specific operation: generating a deterministic helical gear front view, with concrete elements (involute outline, pitch/base/outer/root circles, helix symbol, bore/keyway). This clearly separates it from gear_draw_spur_front_view and gear_draw_section_aa.

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

Usage Guidelines4/5

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

It provides clear context: use this for a helical gear front view, and the returned metadata is explicitly meant for downstream gear_draw_section_aa. It lacks an explicit exclusion such as 'use gear_draw_spur_front_view for spur gears', but the workflow context is enough to route an agent.

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

gear_draw_section_aaGear: Section A-A ViewA

Deterministic side cross-section of a gear created by gear_draw_*_front_view. Includes top/bottom/left/right boundaries, bore lines, keyway notch, ANSI31 hatch.

ParametersJSON Schema
NameRequiredDescriptionDefault
x_offsetYesX position to place the section view.
face_widthYesGear face width (mm).
gear_metadataYesThe 'metadata' dict returned by gear_draw_helical_front_view or gear_draw_spur_front_view.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

The description adds useful behavioral context beyond the sparse annotation (destructiveHint: false): it asserts determinism and lists the exact geometry the resulting section contains. However, it does not disclose prerequisites (e.g., that the referenced gear/front view must already exist), failure conditions, or how the section interacts with the current drawing state, leaving gaps in behavioral disclosure.

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 states the core purpose and dependency, the second lists output components. Concise, front-loaded, with no filler or repetition of structured fields.

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

Completeness3/5

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

The description plus schema covers the essential workflow — create a front view, capture metadata, draw the section — and the presence of an output schema covers return values. What's missing is geometric context the agent needs: the reference frame for x_offset, alignment conventions for the section relative to the front view, and behavior on invalid metadata.

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 100% — all three parameters (gear_metadata, x_offset, face_width) already carry meaningful descriptions, including face_width units and the metadata provenance. The tool description itself adds no parameter-level meaning, so the baseline 3 applies as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly identifies the operation — a 'Deterministic side cross-section of a gear created by gear_draw_*_front_view' — and enumerates the output contents (boundaries, bore lines, keyway notch, ANSI31 hatch), which distinguishes it from the front-view drawing tools in its sibling set. It stops short of a 5 because it doesn't explicitly contrast itself with related section tools like keyway_draw_section.

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 context is implied through the dependency expressed in the description and the gear_metadata parameter, which states the metadata must come from gear_draw_helical_front_view or gear_draw_spur_front_view. There is no explicit statement of when to prefer this tool over section-view or keyway alternatives, so the guidance is adequate but not directive.

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

gear_draw_spur_front_viewGear: Spur Front ViewB

Deterministic spur gear front view (no helix symbol).

ParametersJSON Schema
NameRequiredDescriptionDefault
teethYes
moduleYes
center_xNo
center_yNo
keyway_depthNo
keyway_widthNo
bore_diameterNo
pressure_angleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations only provide destructiveHint: false, so the description carries most of the burden. It adds 'Deterministic' (repeatable output) and 'no helix symbol' as behavioral traits beyond the annotations, but discloses nothing about whether geometry is created in the drawing or how the output behaves.

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?

A single, front-loaded sentence with no filler; the key differentiator is placed compactly. It is appropriately short, though borderline under-specified as a noun phrase rather than an actionable statement.

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?

With 8 parameters, a drawing-creating tool, and minimal annotations, the description is too thin: no guidance on geometry placement, units, or what gets inserted into the drawing. The output schema covers return values, but the agent is left to infer most behavioral context.

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 the description provides no information about any of the 8 parameters (module, teeth, center_x, keyway, bore, pressure_angle). Parameter names are self-explanatory, but the description fails to compensate for the total lack of schema descriptions.

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 identifies the resource (spur gear front view) and a distinguishing trait (no helix symbol), which separates it from gear_draw_helical_front_view. However, it lacks an explicit verb like 'draws/creates', leaving the action implied by the tool name.

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 parenthetical '(no helix symbol)' implies that helical gears with a helix symbol belong to gear_draw_helical_front_view, but no alternative is named explicitly and no when-to-use/when-not-to guidance is given.

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

hatch_add_boundaryAdd Hatch BoundaryA

Add one boundary path built from typed edges - an island inside the hatch.

Typed edges exist because a boundary that only accepts vertex lists silently straightens every curve it is given. Every edge is validated before any is written, so a malformed list refuses instead of leaving a half-built path. Both engines: headlessly the edges become an edge path; on a live seat each becomes a temporary LINE, true ARC or ELLIPSE appended as an inner loop and then deleted (a chain of lines becomes one polyline). A loop that does not close is refused by AutoCAD and nothing is added.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgesYesTyped edges: {'type':'line','start':[x,y],'end':[x,y]} | {'type':'arc','center':[x,y],'radius':r,'start_angle':a,'end_angle':b,'ccw':true} | {'type':'ellipse','center':[x,y],'major_axis':[x,y],'ratio':r}
handleYesHandle of an existing HATCH.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

With only destructiveHint=false in the annotations, the description carries the load and does so richly: it discloses all-or-nothing validation ('every edge is validated before any is written'), the two engine paths (edge path headless, temporary LINE/ARC/ELLIPSE on a live seat that are deleted), and the failure mode of non-closing loops. This is exactly the behavioral context an agent cannot get from structured fields, and it does not contradict destructiveHint=false.

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?

Purpose is front-loaded in the first sentence, followed by a rationale-then-behavior structure. It is moderately long at five sentences and somewhat dense, but each sentence adds either rationale, atomicity, engine behavior, or failure mode, so little is wasted.

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?

An output schema exists, so return values need not be explained. Given a two-parameter mutation tool with only a single annotation, the description still covers atomicity, engine-specific effects, and failure handling, leaving nothing an agent needs in order to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both 'handle' and 'edges' including the three edge types, making 3 the baseline. The description explains the rationale behind typed edges but adds no syntax, format, or unit detail beyond what the schema provides.

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 and resource ('Add one boundary path built from typed edges') and immediately scopes it ('an island inside the hatch'), which separates it from hatch creation siblings like entity_create_hatch. It stops short of naming a specific sibling or contrasting with hatch_edit, so it is clear but not explicitly differentiated.

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 explains why typed edges exist and what happens with malformed input, but never states when to reach for this tool versus hatch_edit, entity_create_hatch, or boundary_trace. Usage is only implied by the operation described, with no explicit conditions or alternatives.

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

hatch_editEdit HatchA

Edit an existing hatch in place.

Omitted parameters are left alone — a partial edit that resets the rest is data loss. changed reports which attributes actually moved, so re-setting a value to what it already was comes back as an empty list rather than a false positive.

ParametersJSON Schema
NameRequiredDescriptionDefault
angleNoNew pattern angle in degrees.
colorNoNew ACI colour.
scaleNoNew pattern scale (> 0).
styleNoIsland style: normal, outer or ignore. Empty leaves it alone.
handleYesHandle of an existing HATCH.
patternNoNew pattern name. Empty leaves it alone.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond the sparse annotation (destructiveHint=false) by revealing the partial-edit contract: omitted parameters are left untouched, so the tool will not reset unspecified values. It also explains the `changed` result semantics, including the empty-list behavior for no-op updates.

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?

Three short sentences with no filler. The key action is front-loaded, and the behavioral caveats are stated compactly without repeating schema details.

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?

Given the output schema covers return shape and the annotations cover the non-destructive hint, the description adds exactly the missing operational context: partial edits are safe, and changed results distinguish real changes from no-ops. The single required parameter and optional fields are sufficiently documented in the schema.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds valuable cross-parameter semantics: omitted parameters are left alone, tying the null/empty defaults to a 'no change' meaning across all optional fields, which is not obvious from the individual schema descriptions alone.

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 ('Edit') and a specific resource ('an existing hatch') with the modifier 'in place,' which clearly distinguishes it from creation tools like entity_create_hatch or hatch_add_boundary. The scope is immediately understandable.

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 phrase 'existing hatch' gives clear context: use this when modifying an already-created hatch, not when creating one or adding geometry. It does not explicitly name alternatives or exclusions, but the implied usage boundary is strong.

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

hatch_materialMaterial Hatch (ISO 128-50)A

Section-hatch a cut face with the pattern ISO 128-50 gives its material.

Refusals: an unknown material (named, with the full list, before anything is drawn), neither boundary nor handles (or both), a boundary with fewer than three points, and a non-positive scale. With handles the loop is chained by boundary_from_entities, which the COM engine refuses (capability boundary_trace) - pass boundary on a live seat, or run headlessly. The HATCH layer is created first when the drawing lacks it: ActiveX refuses an entity on an absent layer and would otherwise leave the hatch orphaned on layer 0.

The payload states its own accuracy, as analysis_measure_entity does: area is the polygon actually hatched, boundary_area the exact area of the chained loop, and accuracy is "exact" or "flatten_tolerance" - an arc edge reaches entity_create_hatch as chords, so a curved cut face is hatched to within HATCH_FLATTEN_SAGITTA of itself rather than being replaced by its chord polygon. With handles, the outline boundary_from_entities draws is scaffolding and is deleted; traced reports its handle and whether the delete succeeded. A loop enclosing no area is refused instead of writing a HATCH of area 0.0.

ParametersJSON Schema
NameRequiredDescriptionDefault
angleNoReplaces the material's own pattern angle (degrees) when given.
layerNoOverride the HATCH role layer.
scaleNoMultiplies the material's own pattern scale.
handlesNoEntities to chain into one closed loop instead of a boundary.
boundaryNoClosed boundary as [[x, y], ...] — at least three points.
materialNoMaterial name; an unknown one is refused with the list.steel

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations carry only destructiveHint=false, so the description bears the behavioral burden and does so richly: it enumerates every refusal (unknown material with list, neither/both boundary and handles, <3-point boundary, non-positive scale, zero-area loop), explains the HATCH layer auto-creation and why (ActiveX refuses entities on absent layers), and discloses the accuracy semantics of area/boundary_area/accuracy and the scaffolding deletion with `traced`.

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?

Front-loaded with the one-line purpose before the dense constraint paragraphs, and every clause carries information (refusals, layer handling, payload accuracy). It is long but not padded; a slightly tighter grouping of the refusal list would improve it.

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 6-parameter creation tool with no required params, an output schema present, and only destructiveHint=false in annotations, the description covers refusals, prerequisites, capability limitations, and return-payload semantics — nothing an agent needs to call 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?

Schema coverage is 100%, so the schema already documents each field; the baseline would be 3. The description goes beyond it by explaining the mutual exclusivity of `boundary` vs `handles`, the chaining/scaffolding behavior of `handles`, and how `scale` and `material` validation interact with the refusals — genuine added meaning.

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 (section-hatch) and resource (a cut face) with the governing standard ISO 128-50, and implicitly separates itself from the generic siblings hatch_add_boundary and entity_create_hatch by tying the pattern to the material. An agent can tell what this produces without opening the schema.

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?

Gives strong conditional guidance: use `handles` only when the loop can be chained, but the COM engine refuses `boundary_from_entities` (capability `boundary_trace`), so pass `boundary` on a live seat or run headlessly. It does not explicitly contrast with hatch_add_boundary/entity_create_hatch, which keeps it from a 5.

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

hatch_set_gradientSet Hatch GradientA

Fill a hatch with a gradient instead of a pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoGradient name: LINEAR, CYLINDER, CURVED, SPHERICAL, HEMISPHERICAL.LINEAR
tintNoTint value used with one_color (0-1).
color1YesStart colour as [r, g, b].
color2YesEnd colour as [r, g, b].
handleYesHandle of an existing HATCH.
centeredNo0 = one-sided, 1 = centred.
rotationNoGradient angle in degrees.
one_colorNoBlend color1 towards the background instead of color2.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations provide destructiveHint: false and readOnlyHint is absent (meaning not read-only). The description 'Fill a hatch with a gradient instead of a pattern.' adds minimal behavioral context beyond the annotations. It does not disclose any side effects, such as whether the original pattern is permanently replaced or whether the operation is reversible, which would be valuable for a mutation tool. With annotations covering destructive hint, the description adds some but not substantial behavioral context.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's core function. It includes the key contrast ('instead of a pattern') without wasting words. This is appropriately sized for a tool with a well-documented input schema.

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

Completeness3/5

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

Given the tool's moderate complexity (8 params, 3 required) and a full output schema, the description adds minimal contextual information beyond the schema. It is complete enough to understand the tool's primary purpose, but lacks details on when to use it compared to hatch_edit or entity_set_properties. Since an output schema exists, return values don't need explanation. However, a brief note on prerequisite conditions (e.g., the hatch must exist) would improve completeness.

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 100%, so the schema already documents all parameters. The description does not add any detail about parameter semantics, but since every parameter has a description in the schema, the baseline of 3 applies. The description does not explain how parameters interact (e.g., how one_color relates to color2 being unused), but the schema descriptions are sufficiently clear for an agent to proceed.

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 'Fill a hatch with a gradient instead of a pattern.' clearly identifies the tool's action (fill), resource (hatch), and the specific effect (gradient instead of pattern). It distinguishes this from sibling tools like entity_create_hatch (which creates a hatch) and hatch_edit (which edits hatch properties in general), though it doesn't explicitly name an alternative tool.

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 a clear context for when to use this tool: when you want to fill a hatch with a gradient instead of a pattern. However, it does not distinguish when to use this over hatch_edit or entity_set_properties, which could also modify a hatch's fill. There are no explicit exclusions or alternatives, so the agent must infer that this is the specialized gradient tool from the tool name and sibling list.

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

image_attachSheet: Attach ImageA

Attach a raster underlay at the file's own aspect ratio. Both engines.

scale is drawing units per pixel, so the placed size is the image's pixel size times scale and the payload reports both. Refusals, all before anything is written: a file that does not exist, a file no image reader can open (named), a non-positive or non-finite scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoInsertion X (WCS).
yNoInsertion Y (WCS).
pathYesFull path of the raster image.
scaleNoDrawing units per pixel: an 800x400 image at 0.1 is 80x40 mm.
rotationNoRotation in degrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only carry destructiveHint=false, so the description adds real value by enumerating the refusal conditions and stressing that all refusals happen 'before anything is written' — a meaningful atomicity guarantee. It also hints the payload reports both pixel size and placed size.

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?

Front-loaded with the core action in the first sentence, then scale semantics, then a compact refusal list. The refusal list is slightly telegraphic fragments ('a file that does not exist, a file no image reader can open (named)'), but it is efficient and information-dense.

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 an output schema present, the description need not explain returns; it covers the action, scaling semantics, and failure modes. The main omission is the absence of any routing guidance relative to sibling attach/insert tools.

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 100%, so the baseline is 3. The description restates the `scale` semantics (drawing units per pixel, placed size = pixel size × scale) already present in the schema, adding only marginal extra meaning for x/y/rotation.

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 ('Attach a raster underlay') with the key scoping behavior ('at the file's own aspect ratio') and notes it works in both engines. It is clearly distinct from sibling insert-like tools (block_insert, xref_attach) by virtue of the raster resource, though it does not name any sibling explicitly.

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 by the refusal conditions (file must exist, must be readable, scale must be positive/finite), which tells the agent what preconditions to satisfy, but there is no explicit when-to-use vs. alternatives guidance (e.g. vs. xref_attach or hatch_add_boundary).

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

keyway_draw_keyed_boreKeyway: Keyed Bore (front view)A

Bore + DIN 6885 keyway in front view. Auto-sizes keyway from bore if width/depth omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoGEOMETRY
center_xYes
center_yYes
keyway_depthNo
keyway_widthNo
bore_diameterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With only destructiveHint=false in annotations, the description carries meaningful behavioral disclosure: it specifies DIN 6885 compliance and auto-sizing from the bore when width/depth are omitted. It does not describe side effects like creation of entities, but these are conventional for a draw command and no contradiction 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, purpose first and key behavior second, with no filler. Every sentence contributes to selection and invocation.

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

Completeness4/5

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

For a six-parameter drawing operation with an output schema, the description covers the view, standard, and auto-sizing behavior needed to invoke correctly. The only minor gap is not explicitly routing section-view requests to keyway_draw_section, but the front-view cue is sufficient.

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

Parameters4/5

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

Schema description coverage is 0%, so the prose must add meaning. The auto-size sentence clarifies exactly what happens when keyway_width/keyway_depth are null, and center_x/center_y/bore_diameter are self-explanatory naming. The layer default is already visible in 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 identifies what is produced: a bore plus DIN 6885 keyway in front view, and the front-view qualifier helps separate it from the keyway_draw_section sibling. It lacks an explicit main verb such as 'draws' or 'creates', but the tool name and title remove ambiguity.

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 front-view designation is explicit, giving the agent a clear context for selecting this tool over the section-view keyway tool. It does not name alternatives or provide when-not-to-use conditions, so it does not reach the strongest guidance level.

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

keyway_draw_sectionKeyway: Side SectionC

Side cross-section view of a keyed bore.

ParametersJSON Schema
NameRequiredDescriptionDefault
center_xYes
center_yYes
face_widthYes
keyway_depthNo
keyway_widthNo
bore_diameterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

The only annotation is destructiveHint=false, and the description does not disclose whether the tool creates drawing entities, modifies the current drawing, or depends on an open document. It does not clarify placement behavior, units, or side effects beyond stating what the view is.

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 easy to parse, though it is so minimal that brevity comes at the expense of useful detail.

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?

With six parameters, four required, and zero schema descriptions, a single noun phrase is not enough for an agent to invoke the tool correctly. The description omits parameter relationships, units, optionality semantics, and any behavior context, leaving a significant completeness gap.

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 0%, and the description does not mention any of the six parameters. It does not explain required inputs like center_x, center_y, bore_diameter, and face_width, nor the optional keyway_depth and keyway_width, so it adds no meaning beyond the raw schema.

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

Purpose4/5

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

The description states the tool produces a 'Side cross-section view of a keyed bore', which clearly identifies the resource and the specific view orientation. It lacks an explicit verb, but the intent is clear and it is distinguishable from the sibling keyway_draw_keyed_bore by the 'side section' framing.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of alternatives such as keyway_draw_keyed_bore or gear_draw_section_aa. The description does not mention prerequisites, common use cases, or exclusions.

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

layer_createCreate LayerB

Create a new layer with specified properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew layer name
colorNoACI color code (1=Red, 2=Yellow, 3=Green, 4=Cyan, 5=Blue, 7=White)
linetypeNoLinetype nameContinuous
lineweightNoLineweight (-3=ByLayer, 0=0.00mm, 13=0.13mm, 25=0.25mm, 50=0.50mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior on its own. It only states the creation action and gives no detail about side effects, behavior on duplicate names, whether the layer becomes current, or what the response contains. For a mutation operation this is a significant gap.

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, efficient sentence with no redundant wording. It front-loads the primary action, but it omits any contextual or behavioral details that could make it more informative without adding bulk.

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 simple create tool, the description covers the basic operation, but it lacks information about return values, error conditions (e.g., duplicate layer names), and interaction with the current layer state. With no annotations or output schema, an agent has insufficient context to anticipate the tool's full behavior.

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

Parameters3/5

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

The input schema already provides full descriptions and defaults for name, color, linetype, and lineweight, including value enumerations for color and lineweight. The description adds no parameter-specific meaning beyond the phrase 'specified properties', so it neither improves nor degrades schema coverage. Baseline 3 is appropriate.

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 ('Create') and resource ('a new layer'), clearly distinguishing it from sibling tools that modify, freeze, lock, delete, or list layers. The phrase 'with specified properties' signals the tool's scope without ambiguity.

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 intended use is implied: call this tool when a new layer is needed. However, there is no explicit guidance about when not to use it, such as duplicate name handling or alternatives like layer_modify or layer_set_current. The context is adequate for obvious cases but lacks exclusion criteria.

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

layer_deleteDelete LayerA
Destructive

Delete a layer. The layer must have no entities. Layer '0' cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to delete (layer must be empty)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds meaningful behavioral context beyond the annotations by specifying that the layer must have no entities and that Layer '0' is permanently protected, which are important constraints for a destructive operation.

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 two short sentences with no filler. It front-loads the core action and immediately follows with the most critical constraints, making it easy for an agent to parse and act on.

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 single-parameter destructive tool with an output schema and clear annotations, the description covers all essential operational details: the action, the emptiness requirement, and the protected Layer '0'. Nothing necessary for correct invocation 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 schema already provides 100% coverage for the 'name' parameter, describing it as the layer name to delete and noting it must be empty. The description adds the additional constraint that Layer '0' cannot be deleted, which is not present in the schema and helps agents avoid passing an invalid value.

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 ('Delete') and resource ('layer'), and reinforces the core operation with the precondition that the layer must have no entities and that Layer '0' is protected. This makes the tool's purpose unambiguous and distinguishes it from sibling layer tools like layer_modify or layer_freeze.

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 states the conditions under which deletion is allowed: the layer must be empty and Layer '0' cannot be deleted. It does not explicitly name alternatives or when not to use this tool, but the constraints effectively tell an agent when deletion is invalid, which is strong practical guidance for a destructive operation.

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

layer_freezeFreeze LayerA

Freeze a layer (makes it invisible and unselectable, faster regeneration).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to freeze

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations carry only the title and no safety hints, so the description bears the full burden. It clearly discloses the freeze effects: invisible, unselectable, and faster regeneration. This is useful behavioral context beyond the 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 compact sentence with no filler. The core action is front-loaded and the behavioral effects are provided in a parenthetical that earns its place.

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

Completeness4/5

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

For a simple one-parameter tool with an output schema, the description covers what the tool does and its key behavioral effects. It lacks comparison to closely related layer state tools, but the operation itself is adequately specified.

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 100%, with the single 'name' parameter already described as 'Layer name to freeze'. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.

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 and resource ('Freeze a layer') and adds distinctive behavioral detail: invisible, unselectable, faster regeneration. This clearly differentiates from siblings like layer_hide or layer_lock.

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 states what the tool does but gives no guidance on when to choose it over alternatives such as layer_hide, layer_lock, or layer_thaw. The performance benefit hints at one use case, but no explicit when/when-not 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.

layer_hideHide LayerA

Turn off a layer (entities invisible but still processed in regeneration).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to turn off

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With only a title annotation, the description carries the burden of behavioral disclosure. It clearly states the two key effects: entities become invisible but remain processed during regeneration. It does not explicitly mention reversibility or restrictions such as current-layer behavior, but the core state change is honestly and precisely described.

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-structured sentence with a behavior parenthetical. Every word contributes meaning, and there is no filler or redundant restatement of the tool name.

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

Completeness4/5

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

For a low-complexity tool with one required parameter, an output schema, and a precise behavior note, the description is nearly complete. The only missing context is edge-case behavior such as whether the current layer can be hidden or whether this setting persists through save/reopen, but these are minor for selecting and invoking the tool.

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

Parameters3/5

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

The schema already provides 100% coverage for the single parameter, including 'Layer name to turn off'. The tool description adds no parameter-specific syntax or format details beyond that, so the baseline of 3 is appropriate.

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 ('turn off') and resource ('layer'), and the parenthetical 'still processed in regeneration' precisely distinguishes this from the sibling layer_freeze tool. An agent can tell exactly what operation it performs without opening the schema.

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 behavior note about regeneration provides an implied decision point (use hide when the layer must remain in regeneration, as opposed to freezing), but it never names layer_freeze, layer_show, or layer_isolate, nor states when not to use this tool. Guidance is implicit rather than explicit.

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

layer_isolateIsolate LayerA

Hide all layers except the specified one (layer isolation).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to keep visible (all others will be hidden)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description clearly discloses the side effect that all other layers will be hidden, which is important behavioral context beyond the readOnlyHint=false annotation. It does not mention whether the previous visibility state can be restored, but the core mutating behavior is transparent.

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 communicates the tool's entire behavior with no filler. Key information is front-loaded and the parenthetical 'layer isolation' reinforces the conceptual name without adding bulk.

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

Completeness4/5

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

For a single-parameter mutating tool with 100% schema coverage and an output schema present, the description is largely complete. It fully specifies the operation's effect. The only minor gap is not explaining how to undo the isolation, but this does not prevent correct invocation.

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 100%, and the parameter description already states that the named layer stays visible while all others are hidden. The tool description adds no new parameter-level detail, so the baseline score of 3 is appropriate.

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 ('hide') and resource ('all layers'), with a precise exception ('except the specified one'). This clearly distinguishes layer_isolate from sibling tools like layer_hide and layer_show by describing a unique all-except-one behavior.

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 intended use case is implied by the description: use this when you want to focus on a single layer and hide everything else. However, it does not explicitly state when to prefer this over layer_hide/layer_show, nor does it mention any prerequisites or restoration behavior.

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

layer_listList LayersA
Read-only

List all layers with their properties (color, linetype, frozen, locked, visibility).

Never truncated — a drawing's whole layer table is returned — so a compact envelope here always reports truncated=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds a meaningful behavioral guarantee beyond the readOnlyHint annotation: 'Never truncated — a drawing's whole layer table is returned — so a compact envelope here always reports truncated=false.' This tells the agent exactly what to expect about completeness and the truncation field, which is genuinely useful and not present in the annotation.

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 only two sentences: the first states the core purpose and returned properties, the second front-loads the critical no-truncation behavior. There is no repetition, fluff, or unnecessary detail—every sentence earns its place.

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 read-only list tool with a full output schema, the description covers all necessary context: what is listed, what properties are included, and the completeness guarantee. The parameter schemas and annotations handle the rest, so nothing important is missing for correct invocation.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is a 3, but the description adds real value by listing the default returned properties and clarifying that the compact envelope always reports truncated=false, which is not in the schema text. It reinforces and complements the detailed schema documentation for both fields and compact.

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 and resource: 'List all layers' and enumerates the exact properties returned (color, linetype, frozen, locked, visibility). It clearly distinguishes this read-only listing tool from mutation siblings like layer_modify, layer_freeze, layer_delete, and even from linetype_list by focusing specifically on layer state.

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 makes the intended use context clear—retrieve the complete layer table with all properties—and its 'whole layer table' phrasing signals this is the go-to inspection tool. It does not explicitly say 'use this instead of layer_modify' or list exclusions, but the context is strong enough to guide a capable agent.

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

layer_lockLock LayerA

Lock a layer (entities visible but cannot be selected or modified).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to lock

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations provide only a title, so the description carries the behavioral burden. It does disclose the key state change: entities are visible but cannot be selected or modified. However, it does not mention behavior for unknown layer names, idempotence, or side effects on existing selections or editing workflows.

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 sentence that front-loads the action and includes only the essential behavioral clarification. There is no filler or redundant wording.

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

Completeness4/5

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

For a one-parameter command with an output schema, the description sufficiently explains the operation's effect for basic invocation. It is slightly thin on alternative routing and edge-case behavior, but those are not critical for calling the tool correctly.

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

Parameters3/5

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

The schema fully documents the single parameter 'name' with 100% coverage. The description adds no additional meaning about the parameter beyond what the schema already provides, so the baseline of 3 applies.

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 ('lock') and resource ('a layer') and defines the behavioral effect: entities remain visible but cannot be selected or modified. This clearly differentiates it from unlock, freeze, hide, and modify 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 explicit guidance on when to use this tool instead of related layer commands such as layer_freeze, layer_hide, or layer_unlock. An agent would have to infer the appropriate context from the tool name and sibling list.

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

layer_modifyModify LayerA

Modify an existing layer's color, linetype, and/or lineweight.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to modify
colorNoNew ACI color code
linetypeNoNew linetype name
lineweightNoNew lineweight value

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already signal that the tool mutates state but is not destructive, so the description carries a lighter burden. It adds helpful context by specifying 'existing layer' and limiting the mutation to color, linetype, and/or lineweight, but it does not disclose behavior such as what happens if the layer does not exist or whether omitted properties remain unchanged.

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, repetition, or unnecessary structure. Every word contributes to identifying the action, target, and affected properties.

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

Completeness4/5

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

For a simple property-update tool, the combination of a clear one-sentence description, a fully documented schema, safety annotations, and an output schema is largely sufficient for correct invocation. The only notable gap is edge-case behavior, such as null semantics or errors for nonexistent layers, which the current text leaves implicit.

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 schema covers 100% of parameters with clear descriptions, so the baseline is already solid. The description adds useful meaning with 'and/or', clarifying that the caller may modify any subset of color, linetype, and lineweight in a single call, which is not explicitly stated in the field descriptions. It does not add units or ranges for lineweight, but that is a minor gap given schema coverage.

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 ('modify'), a targeted resource ('existing layer'), and the exact properties affected (color, linetype, lineweight). It is easily distinguished from sibling layer operations like layer_freeze, layer_lock, and layer_hide, which target different behaviors.

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 explains what the tool does but gives no explicit guidance on when to choose it over related alternatives such as layer_set_current, layer_create, or entity_set_properties. No exclusions, prerequisites, or routing signals are provided, so usage context must be inferred entirely from the name and schema.

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

layer_set_currentSet Current LayerA

Set the active/current layer for new entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to set as current

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already communicate that the operation mutates state but is not destructive. The description adds the useful detail that the effect targets only new entities, but it leaves the likely precondition that the layer must already exist implicit and gives no error 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, front-loaded sentence with no filler or redundancy. Every word contributes to explaining the operation and its scope.

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 one-parameter tool this is nearly complete, and an output schema exists so return values do not need explanation. The gap is the unstated existence precondition: the agent is not told it should verify via layer_list or create the layer first, which could lead to a failed call.

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

Parameters3/5

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

The input schema already fully documents the only parameter, 'name', as 'Layer name to set as current' (100% coverage). The tool description adds no parameter-specific meaning or format guidance, so it meets the baseline without enhancing it.

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

Purpose4/5

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

The description clearly identifies the operation ('set') and the target resource ('active/current layer'), and scopes it to new entities. It is clear enough to be distinguished from layer_create, layer_modify, and layer_delete, though it does not explicitly name an alternative.

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?

'For new entities' provides a clear usage context: call this before creating entities when you want them placed on a specific layer. It does not explicitly state when not to use it or mention layer_list/layer_create, so it stops short of full alternative routing.

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

layer_showShow LayerA

Turn on a layer that was previously turned off.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to turn on

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With only a title annotation and no read-only/destructive hints, the description carries the disclosure burden. 'Turn on a layer' clearly describes the state change, but it does not mention error behavior for unknown layers, behavior on already-visible layers, or any permissions/side effects.

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

Conciseness5/5

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

One short sentence that front-loads the verb and resource, with zero filler or redundant restatement of the title.

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

Completeness4/5

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

For a one-parameter, non-nested tool with a complete schema and an output schema, the description supplies the essential state-transition context ('previously turned off') needed to select it. It could add a brief note on already-on or frozen layers, but nothing critical is missing.

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

Parameters3/5

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

The input schema already fully documents the single required 'name' parameter as 'Layer name to turn on' (100% coverage). The tool description adds no extra semantic detail beyond what the schema provides, so it stays at the schema-driven baseline.

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 a specific verb ('Turn on') and resource ('a layer'), and anchors the operation to the 'previously turned off' state, so an agent can tell it targets visibility rather than freeze/lock state. It does not explicitly name a sibling for contrast, so it misses the top score.

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

Usage Guidelines3/5

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

It implies the right condition for invocation: use when a layer is currently off. However, it gives no explicit guidance about related layer tools (e.g., layer_thaw or layer_hide), no when-not-to-use conditions, and no alternatives.

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

layer_state_deleteDelete Layer StateA
Destructive

Remove the named state's XRECORD. Layers themselves are untouched. Refusal: an unknown name (lists the saved ones). Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA name from layer_state_list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, so the safety profile is covered. The description does add genuinely useful behavior: the refusal path for an unknown name (it lists the saved ones). The trailing "Pack: settings · lean: no" is opaque filler that conveys little an agent can act on.

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?

Front-loaded with the destructive action and its scope, and the layer-vs-state distinction comes early. It is short, but the fragmentary "Pack: settings · lean: no" earns little and reads as internal shorthand.

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

Completeness4/5

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

For a single-parameter tool with an output schema and a destructiveHint annotation, the description covers scope, the layer-safety caveat, and the error path. Only the opaque trailing fragment leaves a 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 coverage is 100% and the schema itself says the name must come from layer_state_list. The description reinforces this only indirectly via the refusal clause. Baseline 3 is appropriate when the schema carries the parameter definition.

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 and resource ("Remove the named state's XRECORD") and immediately separates the tool from layer_delete by stating "Layers themselves are untouched." That contrast makes the resource unambiguous, though the term XRECORD is internal jargon an agent may not know.

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 "Layers themselves are untouched" line implicitly routes the agent away from layer_delete, but there is no explicit when-to-use guidance relative to layer_state_save/layer_state_restore, and no prerequisites stated. Usage is inferable rather than described.

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

layer_state_listList Layer StatesA
Read-only

Every state under ACADMCP_LAYERSTATES with its description and layer count. These are the server's portable states, not AutoCAD Layer States Manager entries. No refusals. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, but the description adds real context beyond that: the states are the server's own portable states rather than AutoCAD Layer States Manager entries, and 'No refusals' tells the agent the call always succeeds. That is meaningful behavioral information not present in the annotations.

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

Conciseness4/5

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

Three short sentences, front-loaded with the scope and the disambiguation. The trailing 'Pack: settings · lean: no' metadata is cryptic but appears to be a house convention rather than filler.

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 zero-parameter, read-only list tool with an output schema, the description covers everything an agent needs: what is listed, what the entries are not, and that the call will not be refused. Return values are already in the output schema.

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 the baseline is 4. There is nothing for the description to document, and it correctly does not invent parameter behavior.

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?

Names the resource (layer states), the scope (every state under ACADMCP_LAYERSTATES), and the returned fields (description and layer count). Critically, it disambiguates from AutoCAD Layer States Manager entries, a confusingly similar concept an agent could easily conflate.

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 rather than stated: an agent can infer this is the read step before layer_state_restore/delete, but no sibling is named and no when/when-not guidance is given. 'No refusals' hints at reliability but is not a usage rule.

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

layer_state_restoreRestore Layer StateA

Apply a saved state to the layers that still exist.

missing_layers (in the state, not in the drawing) are skipped, never created; new_layers (in the drawing, not in the state) are untouched; applied says how many layers and which properties moved. Refusals: an unknown state name (lists the saved ones), a property outside the eight (names the index). Live, a layer AutoCAD refuses to change (freezing the active layer, making a frozen layer current) lands in warnings instead of failing the call; the state's current layer is thawed before it is made current when frozen is being restored, so save → freeze → restore round-trips. Portable server states, not Layer States Manager entries. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA name from layer_state_list
propertiesNoSubset of on, frozen, locked, color, linetype, lineweight, plot, current; omit for all

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes far beyond that, disclosing skip/untouched semantics, refusal reasons (unknown name, out-of-range property index), the live-warning path for layers AutoCAD won't change, and the thaw-before-current round-trip behavior. That is exactly the mutation behavior an agent needs before invoking.

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?

Front-loads the core action and packs substantial detail into few sentences with no filler prose. The trailing "Pack: settings · lean: no." is terse metadata of unclear value and slightly detracts from an otherwise tight description.

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?

Even though an output schema exists (applied/warnings/missing_layers/new_layers), the description covers the edge cases an agent must anticipate: skipped layers, untouched layers, refusals, and warning-vs-failure semantics. Nothing needed to call this correctly is missing.

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 100% and the schema already enumerates the eight properties and the `name` source, so the description is largely restating structured data. It adds only marginal nuance (property index naming on refusal, the current-layer thaw interaction with the `frozen` property).

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 and resource ("Apply a saved state to the layers that still exist") and immediately scopes behavior: missing layers skipped/never created, new layers untouched. This distinguishes it cleanly from layer_state_save/delete/list and from the Layer States Manager.

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?

Clarifies the domain boundary ("Portable server states, not Layer States Manager entries") and points at layer_state_list as the source of valid names. However, it never explicitly routes the agent to layer_state_save, layer_state_delete, or view_named_restore, so the when-not/alternative guidance is implied rather than stated.

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

layer_state_saveSave Layer StateA

Snapshot every layer's on/frozen/locked/color/linetype/lineweight/plot flags plus the current layer as a named state stored in the drawing.

These are the server's own portable layer states: JSON chunks in an XRECORD under the ACADMCP_LAYERSTATES dictionary. They live in the file and travel with it, work on both engines, and do not appear in AutoCAD's Layer States Manager (LAYERSTATE). Same name replaces (replaced: true). Refusals: an empty or control-character name, a non-string description. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesState name, e.g. PLOT-SET or DESIGN
descriptionNoFree text stored with the state

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only give readOnlyHint=false and destructiveHint=false; the description goes well beyond that, disclosing the XRECORD/ACADMCP_LAYERSTATES storage location, file portability, cross-engine behavior, non-visibility in LAYERSTATE, overwrite semantics, and the specific refusal conditions. That is exactly the mutation-context an agent needs.

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?

Front-loads the core action in one sentence, then layers storage, replacement and refusal facts compactly. The trailing 'Pack: settings · lean: no.' is server-internal jargon that consumes space without informing tool selection.

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?

With an output schema present, return values need not be explained, and the description still covers storage format, overwrite behavior and failure modes. Nothing material for correct invocation 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?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine constraint semantics beyond the schema: the name must be non-empty and free of control characters, and the description must be a string. Those are validation rules the schema does not encode.

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 precise verb+resource and enumerates exactly what is captured (on/frozen/locked/color/linetype/lineweight/plot flags plus current layer) into a named state. It is trivially distinguishable from siblings layer_state_list, layer_state_restore and layer_state_delete.

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?

Explains the storage model and the key operational rule (same name replaces, returning replaced: true), and implicitly separates itself from AutoCAD's own Layer States Manager. It never explicitly says when to prefer this over layer_state_restore or layer_state_list, so routing is clear but not spelled out.

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

layer_thawThaw LayerA

Thaw a frozen layer, making it visible and selectable again.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to thaw

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only provide a title, so the description carries the behavioral disclosure burden. It successfully explains the observable effect: the layer becomes visible and selectable again. It does not disclose potential failure modes or permissions, but for a simple state-change tool this is reasonably complete.

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 sentence with no filler. Every word adds meaning, and the core action is front-loaded.

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?

With only one required parameter fully documented in the schema, an output schema present, and a simple, well-defined state transition, the description is complete enough for correct invocation. Nothing critical is missing.

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

Parameters3/5

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

The schema already describes the single parameter as 'Layer name to thaw' with 100% coverage. The description does not add additional parameter-level meaning beyond the schema, so the baseline score of 3 applies.

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 verb ('Thaw'), a specific resource ('a frozen layer'), and the resulting state ('visible and selectable'). This clearly separates it from sibling operations like layer_freeze, layer_hide, and layer_lock.

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 implies usage when a layer is frozen, making it a direct inverse of layer_freeze. It does not explicitly list when not to use it or name alternatives, but the context is strong enough for an agent to select correctly.

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

layer_unlockUnlock LayerA

Unlock a layer to allow entity selection and modification.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name to unlock

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations only provide the title, so the description carries the full burden. It discloses the core behavioral effect (unlocking enables selection/modification) but does not state side effects, prerequisites, or that it does not affect freeze/visibility state.

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?

One short sentence with the verb first and the purpose immediately after; no filler, repetition, or unnecessary explanation. 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 one-parameter operation with an output schema, the description covers the basic purpose. It is slightly incomplete because it does not disambiguate from layer_thaw/layer_show or note any preconditions, but the low complexity makes this a minor 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?

The input schema documents the single 'name' parameter with 100% coverage ('Layer name to unlock'). The description adds no parameter-level detail, so the baseline score of 3 applies.

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 ('Unlock a layer') and its intended effect ('allow entity selection and modification'), which clearly distinguishes it from siblings like layer_lock by naming the opposite operation. It is more specific than a tautology.

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 context is implied: unlock is appropriate when a locked layer blocks entity selection/modification. However, there is no explicit when-to-use/when-not-to-use guidance and no reference to alternatives such as layer_thaw or layer_show, which could also affect editability in some CAD workflows.

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

layout_copyCopy LayoutA

Copy a paper-space layout: page setup, plot settings and all geometry.

skipped names any DXF types that could not be cloned — check it rather than trusting ok alone. Associative hatch boundaries are re-pointed at the cloned entities; associativity_dropped counts those that referenced something outside the source layout and had to be cleared.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesLayout tab to copy from (never 'Model').
new_nameYesName for the new layout tab.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only provide destructiveHint=false, so the description carries the full behavioral burden. It discloses meaningful failure semantics: `skipped` names unclonable DXF types and should be checked instead of trusting `ok`, and `associativity_dropped` counts hatch boundaries that were cleared because they referenced outside objects. This goes far beyond a simple 'copy' declaration.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence gives the core purpose, followed by two sentences that explain critical caveats. No redundant or filler content exists; every sentence earns its place.

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?

The description fully covers what is copied, what could fail, and the meaning of the return fields (`skipped`, `ok`, `associativity_dropped`). There is no output schema, so this return-value disclosure is essential. For a copy tool with these edge cases, nothing an agent needs to know to use it correctly is missing.

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?

Both parameters already have descriptive schema text: 'source' explains it is a layout tab and warns 'never Model', and 'new_name' states its purpose. The description adds no additional parameter-level detail beyond what the schema provides, so the baseline of 3 is appropriate.

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 ('Copy'), a specific resource ('paper-space layout'), and enumerates the exact content copied: 'page setup, plot settings and all geometry'. This clearly distinguishes it from sibling tools like layout_create, layout_rename, and layout_delete, which perform different operations.

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

Usage Guidelines3/5

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

The purpose implies when to use it — when an agent needs a duplicate of an existing layout — but the description does not explicitly mention alternatives or exclusion conditions. It relies on the sibling names and the user's inference rather than providing direct routing guidance.

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

layout_createCreate LayoutA

Create a new paper-space layout tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew paper-space layout name (e.g. 'A3-Sheet').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations declare destructiveHint=false, and the description adds that this is an additive creation of a paper-space tab. However, it omits other behavioral context such as whether the new layout becomes active, whether duplicate names are rejected, or whether an open drawing is required.

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 short sentence with no filler or redundancy. It is front-loaded with the action and resource, making it easy to scan and understand.

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 with an output schema, this description is minimally sufficient for basic invocation. However, it lacks context about prerequisites, postconditions, and failure behavior, which an agent might need to call the tool reliably in a real workflow.

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

Parameters3/5

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

The only parameter, name, is already fully described in the input schema with an example ('A3-Sheet'), and schema coverage is 100%. The tool description adds nothing beyond what the schema provides, so it stays at the baseline score for high schema coverage.

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, 'Create,' and clearly identifies the resource as a 'new paper-space layout tab.' This distinguishes it from related sibling tools such as layout_copy, layout_set_current, and viewport_create, which operate on different aspects of layouts.

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 explicit guidance on when to use this tool versus related alternatives, nor any prerequisites such as requiring an open drawing. It does not explain when layout_create is preferable to layout_copy or viewport_create, leaving the agent to infer this from the tool name alone.

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

layout_deleteDelete LayoutA
Destructive

Delete a paper-space layout and every entity on it.

Refuses model space, a blank name, and the last remaining sheet. If the deleted tab was the current one, the returned current is where geometry goes next — and handles from the deleted sheet stop resolving.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPaper-space layout tab to delete (never 'Model').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

It reveals destructive scope beyond the destructiveHint annotation: all entities on the layout are deleted. It also explains refusal conditions, the returned 'current' layout semantics, and that handles from the deleted sheet stop resolving.

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?

Three short front-loaded sentences: the core action first, then refusal conditions, then post-delete behavior. There is no redundant prose; every clause adds information.

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?

With destructiveHint set, one documented parameter, and an output schema present, the description covers valid inputs, invalid inputs, destructive consequences, and post-delete state transitions. Nothing needed for safe invocation 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 schema already documents name at 100%, so the baseline is satisfied. The description adds edge-case meaning: blank names are rejected, 'Model' is invalid, and the last remaining sheet is protected.

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 first sentence states the exact action ('Delete a paper-space layout') and the destructive scope ('every entity on it'). The 'Refuses model space' clause distinguishes it from any model-space deletion and from sibling delete tools operating on layers, viewports, or entities.

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 constraints ('Refuses model space, a blank name, and the last remaining sheet') define when the tool will not work, giving clear operational context. It does not explicitly name alternatives or state 'use X instead,' so it stops short of a full 5, but the intended use case is unambiguous.

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

layout_listList LayoutsA
Read-only

List all layout tabs (Model + paper-space layouts) and the current one.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already signals a safe read operation, and the description adds meaningful scope details: it includes Model space as a layout tab, includes paper-space layouts, and indicates the current layout. This goes beyond the annotation by clarifying what exactly is listed.

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 sentence that is direct and informative. Every element adds value: what is listed, which layout types are included, and that the current one is identified. No filler or redundant wording.

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 list tool with an output schema available, the description fully covers what an agent needs to know to invoke it correctly. The distinction between Model and paper-space layouts preempts likely confusion, and no prerequisites or side effects are relevant.

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 baseline is 4. The description does not need to explain parameter meaning, and no ambiguity exists around invocation arguments.

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 the action (list), the resource (layout tabs), and the exact scope (Model + paper-space layouts and current one). It also differentiates this from sibling tools like layout_create and layout_set_current by focusing on enumeration rather than mutation or selection.

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 makes its use case implicit: call this when you need to enumerate layout tabs and identify the current one. However, it does not explicitly mention when not to use it or contrast with related list tools like viewport_list or layout_set_current. The intended context is clear enough but not fully spelled out.

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

layout_renameRename LayoutA

Rename a paper-space layout. Entity handles are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_nameYesNew name; must not be blank or contain / \ * ? : ; , = `
old_nameYesExisting layout tab name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The description goes beyond the destructiveHint=false annotation by explicitly stating that entity handles are unaffected during the rename. This is useful behavioral context, as it tells the agent that the operation has no side effects on drawing entities. The annotation already signals non-destructiveness, but the description adds a more specific guarantee about what remains unchanged.

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 two short sentences with no filler or repetition of schema details. The core action is front-loaded, and the extra behavioral note about entity handles earns its place by being genuinely informative. It is concise without sacrificing clarity.

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 simple two-parameter rename operation, the description plus a fully documented schema and an output schema provide everything an agent needs. The old_name is identified as an existing layout tab name, the new_name constraints are in the schema, and the lack of side effects on entity handles is disclosed. No critical context is missing.

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 100%, and both parameters (old_name and new_name) are already fully documented in the input schema with their constraints. The description does not add new parameter-level meaning beyond calling the layout a 'paper-space layout,' which is a minor clarification. With the schema carrying the parameter details, the baseline score of 3 is appropriate.

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 ('Rename') and resource ('a paper-space layout'), making the tool's function immediately clear. It also distinguishes this from the many sibling layout tools like layout_create, layout_delete, and layout_copy by focusing on renaming an existing layout. The added detail that entity handles are unaffected further clarifies the scope.

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 renaming an existing paper-space layout, which is the natural use case. However, it does not explicitly state when to choose this tool over alternatives or mention any exclusions, such as not being usable for model space. Given the large sibling set, some explicit guidance about when a rename is appropriate versus other layout operations would help.

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

layout_set_currentSet Current LayoutB

Activate a layout tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayout tab to activate ('Model' or a paper-space layout).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations provide only a title, so the description carries the full burden of behavioral disclosure. 'Activate' implies a state change but does not clarify whether this switches between Model and paper space, affects subsequent commands, or is non-destructive. This is thin for a tool that changes the active drawing context.

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

Conciseness5/5

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

The description is a single four-word sentence that is entirely meaningful and front-loaded. There is no wasted text or redundant restatement of the title.

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 one-parameter tool with a fully documented schema and an output schema present, the description covers the core invocation semantics. However, it omits useful context such as requiring an existing layout tab, how to discover valid names, and the effect of switching the active layout on later operations.

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 100%, with the parameter name and description already explaining that it accepts 'Model' or a paper-space layout name. The tool description adds no parameter-level information, but the schema is sufficient, so baseline 3 applies.

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 'Activate a layout tab' states a specific action and resource, clearly matching the tool name and title. It is distinguishable from layer_set_current and layout_create/layout_delete because it concerns activating an existing layout tab, though it does not explicitly reference 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 on when to use this tool versus alternatives such as layout_list to discover layout names, layout_create if the layout does not exist, or viewport_set_scale for paper-space adjustments. No exclusions or contextual triggers are mentioned.

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

leader_create_mleaderCreate MultileaderC

Create a native COM MLeader or an explicitly-labelled ezdxf composite.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesLeader annotation text
layerNoTarget layerDIM
pointsYesLeader vertices as [x, y] pairs
arrow_sizeNo
landing_gapNo
text_heightNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations only indicate readOnlyHint=false, so the description carries most of the burden for behavioral disclosure. It does not state whether the leader is added to the active drawing, what happens if the drawing is not ready, or what the implementation-level distinction between COM and ezdxf means for the caller. The 'explicitly-labelled' phrase hints at a tagging behavior but never explains it.

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

Conciseness3/5

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

The description is a single sentence and is front-loaded with the core action, so it is concise. However, it is under-specified: jargon such as 'native COM' and 'explicitly-labelled ezdxf composite' is included without explanation, which sacrifices usefulness for brevity.

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?

A multileader creation tool with six parameters needs more context than this. The description does not explain the two creation modes, the expected coordinate system, drawing state requirements, or the meaning of the labelled composite. Even though an output schema exists and would document return values, the callers still lack enough information to predict behavior and choose parameters confidently.

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 50%, and the description adds nothing about parameters. Three fields (arrow_size, landing_gap, text_height) have no schema descriptions, and the tool description does not compensate by explaining their units, defaults, or interactions. The schema's existing descriptions for text, layer, and points are clear, but the missing fields remain ambiguous.

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 clear verb and resource: it creates a multileader, and the MLeader concept is distinct from the sibling drawing/entity tools. However, the 'native COM MLeader or an explicitly-labelled ezdxf composite' phrasing introduces ambiguity about what the caller will actually get, 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 choose this tool over entity_create_text, entity_create_mtext, dimension_auto, or other annotation tools. The description implies the use case only through the tool name and title, but gives no context, prerequisites, or exclusions.

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

linetype_listList Loaded LinetypesA
Read-only

Return the names of all linetypes currently loaded in the active drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

The readOnlyHint annotation already declares the operation as read-only, and the description is consistent with that. The description adds the scope qualifier 'currently loaded in the active drawing,' which is useful. It does not mention ordering, duplicates, or empty-list behavior, but these are minor for a simple query, and the annotation carries the main safety signal.

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 sentence with no filler. The primary action ('Return the names') is front-loaded, and the scope qualifier ('all linetypes currently loaded in the active drawing') is concise and complete.

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?

With zero parameters, a readOnlyHint annotation, and an output schema present, the description fully covers what an agent needs to invoke this tool correctly. Nothing important is missing: the resource type, the scope, and the operation are all stated.

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, and schema coverage is 100%, so there is no parameter-level information for the description to add. The baseline for a 0-parameter tool is 4, and the description appropriately focuses on the return value instead.

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 ('Return') and a specific resource ('names of all linetypes currently loaded in the active drawing'). This clearly distinguishes it from sibling tools like linetype_load (which loads rather than lists) and other list tools (layer_list, block_list) that target different object types.

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 conveys the exact context for use: retrieving the currently loaded linetypes in the active drawing. It does not explicitly name alternatives or exclusion criteria, but for such a simple query tool the intended usage is unambiguous. A brief pointer to linetype_load would be a minor improvement.

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

linetype_loadLoad LinetypeA

Load a single linetype safely.

Use this instead of system_run_command('_-LINETYPE _LOAD ...') — that raw form deadlocks on the FILEDIA file-picker dialog and on the -LINETYPE option-menu prompt (measured on AutoCAD 2026: it loads nothing either way). This tool loads through the ActiveX Linetypes.Load member, picks the right .lin file from MEASUREMENT, and verifies the linetype actually loaded. Refuses a name that is not a valid symbol name, a file outside the allowed paths, and reports a name the file does not carry or a file AutoCAD cannot find as an error naming both.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoOptional .lin file. Defaults to acadiso.lin (metric) or acad.lin (imperial), chosen from MEASUREMENT. Ignored by ezdxf backend.
nameYesLinetype name to load (e.g. 'CENTER', 'DASHED', 'HIDDEN')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false, so the description carries most of the load and does so well: it names the ActiveX `Linetypes.Load` mechanism, MEASUREMENT-based .lin selection, post-load verification, and the refusal/error conditions (invalid symbol name, disallowed path, missing linetype, unfindable file). It does not state required permissions or idempotency, but the behavioral picture is unusually 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?

Front-loaded with the one-line purpose, followed by the rationale-for-existence and then mechanics. It is somewhat dense and prose-heavy, but no clause is pure repetition of the schema, so it stays close to earning its length.

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?

With an output schema present, return values need not be described; the description instead covers the failure modes, file resolution, and the underlying mechanism. For a 2-parameter mutation tool this leaves nothing an agent needs in order to call 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that `file` is resolved from MEASUREMENT and that names outside valid symbol syntax and files outside allowed paths are refused. These constraints go beyond the schema text.

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 and resource ('Load a single linetype') and reinforces scope with 'safely'. The only close sibling is linetype_list, and the read-vs-mutate distinction is inferable from the verb, so an agent can route correctly without opening any 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 tells the agent to use this instead of `system_run_command('_-LINETYPE _LOAD ...')`, and gives the concrete reason (deadlock on the FILEDIA picker and -LINETYPE option menu, verified on AutoCAD 2026). This is an explicit when-to-use / when-not-to-use with a named alternative.

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

mech_dimension_partMechanical: Dimension PartA

Every dimension the part and its features ask for, laid out without overlaps.

Axial lengths are chained, stacked from a baseline or measured from an origin; diameters stack outside the silhouette; fillets get a radius. Each measurement appears once (ISO 129-1): every view record carries a dimensioned flag, so after a mech_part_draw that dimensioned the front view and a mech_view_add, this call dimensions only the new view, and views naming a view already dimensioned is refused by name. fits resolves an ISO 286 code against the measured nominal through the repository's authored tables and appends the code to the dimension text; an explicit tol on a feature's own intent does the same through the ISO 129 path.

Refused by name: a fit together with an explicit tolerance, a fit outside the authored ISO 286 range (over 1 mm to 500 mm, IT4-IT11), a fit on an intent with no measurable nominal, an unknown style, an unknown part_id, a call when every view is already dimensioned (the message lists them), and part_id=None on a drawing that holds more than one part. An angular intent is reported in skipped rather than drawn, because a DimIntent carries no vertex.

ParametersJSON Schema
NameRequiredDescriptionDefault
fitsNoISO 286 fit per feature id, e.g. {'bearing_seat': 'k6', 'bore': 'H7'}
styleNoAxial dimension style: chain | baseline | ordinatechain
viewsNoView indices to dimension, in mech_part_inspect order (default: every view not yet dimensioned)
part_idNoAnchor handle from mech_part_draw; omit if the drawing holds one part
hole_table_thresholdNoAbove this many holes the diameters move into a hole table

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only carry destructiveHint=false, so the description carries the weight and does so richly: ISO 129-1 single-appearance rule, per-view `dimensioned` flag, hole-table threshold behavior, `fits` resolution against authored ISO 286 tables, and the explicit `skipped` behavior for angular intents. The enumerated refusal list (over 1-500 mm / IT4-IT11 range, unknown style, unknown part_id, ambiguous part_id=None) is exactly the behavioral disclosure an agent needs.

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?

Long but dense and mostly front-loaded, opening with the purpose before moving into rules and refusals. The refusal catalog is a single efficient paragraph with no filler, though the piece overall is heavier than it needs to be for a five-parameter call.

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?

An output schema exists, so return values need no explanation; the description instead covers what the agent must know before calling: when it runs, what gets skipped, what causes refusal by name, and how fits/tolerances resolve. Nothing material is missing for a mechanical dimensioning tool of this complexity.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: `fits` resolves an ISO 286 code against the measured nominal and appends the code to dimension text, an explicit `tol` follows the ISO 129 path, and `part_id=None` is refused only when the drawing holds more than one part. These operational semantics go past the field docs.

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 resource and action: dimensioning every dimension a mechanical part and its features require, using the part's own DimIntent records. That intent-driven, part-scoped behavior implicitly separates it from the generic dimension_linear/dimension_aligned siblings. It stops short of naming an alternative explicitly, so it lands just below 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 Guidelines4/5

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

It gives concrete sequencing guidance: after a mech_part_draw that dimensioned the front view plus a mech_view_add, this call dimensions only the new view, and it refuses a `views` entry already dimensioned. It also spells out the boundary cases (fit + explicit tol, out-of-range fit, already-fully-dimensioned call). No sibling tool is named as an alternative, so it is strong but not complete.

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

mech_hole_patternMechanical: Hole PatternA

A hole pattern on any drawing - the part model is not required.

The same expansion HolePattern performs inside a part, exposed for a drawing that was not built from the model.

Refused before anything is drawn: an unknown pattern, a count below 1 (below 2 for polar), a linear pattern with no spacing, a grid with more than one column or row and no pitch for it, a polar pattern with no pitch-circle diameter, and a non-finite or non-positive diameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesWCS X of the first hole (polar: the circle centre)
yYesWCS Y of the first hole (polar: the circle centre)
pcdNoPitch-circle diameter, for a polar pattern
angleNoDirection of a linear pattern, degrees CCW
countNoHoles along the pattern (polar: around the circle)
layerNoOverride the GEOMETRY layer for the circles
count_yNoRows, for a grid
patternYeslinear | grid | polar
spacingNoPitch between holes (linear, grid columns)
diameterYesHole diameter in drawing units
dimensionNoAdd a '6x ⌀8' diameter callout
spacing_yNoRow pitch, for a grid
start_angleNoAngle of the first hole (polar), degrees CCW
centre_marksNoDraw ISO 128-23 centre marks

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare destructiveHint=false, so the description carries most of the burden and does well: it enumerates the full set of pre-draw refusals (unknown pattern, count < 1/< 2 for polar, missing spacing, grid pitch, PCD, non-finite/non-positive diameter). It stops short of describing what happens to pre-existing geometry or layer effects, but the validation contract is unusually well disclosed.

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 distinguishing scope statement leads, followed by the tightest possible statement of the validation gate. Every clause earns its place; no filler or restated field names.

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 an output schema present, return values need not be explained, and the 14-parameter surface is covered by a 100%-described schema plus the description's conditional rules. Minor gaps remain around layer/centre-mark side effects, but 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?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot express on its own: count must be >= 2 for polar, a grid with >1 column/row requires pitch, polar requires a pitch-circle diameter. These conditional constraints meaningfully extend the per-field descriptions.

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 verb+resource ('a hole pattern on any drawing') and immediately scopes it against the in-part equivalent: 'The same expansion HolePattern performs inside a part, exposed for a drawing that was not built from the model.' An agent can tell exactly what geometry this produces and when it differs from the part-model path.

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 a clear selection condition ('the part model is not required'), which is the key routing decision versus the in-part hole pattern. It does not name a sibling tool explicitly or state when-not to use it, but the context is unambiguous for this drawing-side operation.

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

mech_part_drawMechanical: Draw PartA

One part model - a turned profile or a plate outline plus typed features - drawn as views.

The model is written onto the drawing as ACADMCP_MECH XDATA on an anchor POINT, so mech_view_add can add a section months later without the caller re-describing the part, and mech_part_inspect reads it back.

Refused before anything is drawn, by path: a non-finite or non-positive number (segments[2].d_outer), a bore that is not smaller than its outside, an outline with fewer than three distinct vertices or one that crosses itself, an unknown material, a feature whose placement is off the part, two features that would remove the same material (both names given), a thread outside the transcribed ISO 261 table, a keyway outside DIN 6885's bore range, gear teeth whose tip diameter disagrees with their segment. A DIN 509 undercut, a DIN 471/472 groove, a DIN 332 centre hole and an ISO 3601-2 O-ring groove need explicit dimensions in this build: those tables are not transcribed and the lookup refuses by name rather than interpolate. A feature that cannot be projected into a requested view is listed in omitted, never dropped.

ParametersJSON Schema
NameRequiredDescriptionDefault
at_xNoWCS X of the first view's lower-left corner (the rotation pivot)
at_yNoWCS Y of the first view's lower-left corner (the rotation pivot)
specYesThe part: {kind: 'revolved'|'prismatic', name, material, segments:[{length, d_outer, d_inner, taper_to}] | outline:[[x,y]] + thickness, features:[{kind, id, ...}]}
styleNoAxial dimension style: chain | baseline | ordinatechain
viewsNoViews to draw in order: front | side | top (default ['front'])
rotationNoDegrees CCW; turns every view and its dimensions about (at_x, at_y)
dimensionNoAlso dimension the part (ISO 129 + ISO 286 fits)
projectionNofirst (ISO 128-30, default) | thirdfirst

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only provide destructiveHint=false, so the description carries most of the behavioral burden and does so richly. It discloses XDATA persistence on an anchor POINT, an extensive list of pre-draw validation refusals with path-specific errors, the note that certain standard tables (DIN 509, DIN 471/472, DIN 332, ISO 3601-2) are not transcribed and refuse by name, and that unprojectable features appear in an omitted list rather than being silently dropped.

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

Conciseness4/5

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

The description is long but front-loaded with the core purpose, followed by persistence behavior and refusal conditions. Every section adds useful context, though the exhaustive refusal list is verbose and could be terse without losing critical meaning. Overall structure is logical and information-dense.

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?

Given the nested spec object, many parameters, and the existence of an output schema, the description covers the essential non-schema behavior: XDATA persistence, interaction with sibling tools, validation failure modes, and the omitted-feature reporting contract. It is complete enough for an agent to invoke the tool correctly without needing to consult external documentation.

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 100%, so the schema already defines all eight parameters, including at_x/at_y, style, views, rotation, dimension, projection, and the nested spec object. The description adds error-path syntax like segments[2].d_outer, but does not meaningfully expand parameter semantics beyond what the schema provides. 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 states a specific verb and resource: drawing a part model (revolved or prismatic plus typed features) as views. It distinguishes itself from generic entity creation by explaining the XDATA persistence and how mech_view_add and mech_part_inspect interact with it. However, it does not directly differentiate from the close sibling mech_part_from_spec, leaving some ambiguity about which part-creation tool to choose.

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: the model is stored as XDATA so later tools can add sections or inspect it without re-description. It implies when to use this over ad-hoc drawing, but it never explicitly names when to choose an alternative such as mech_part_from_spec or entity-level creation. No exclusions are stated.

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

mech_part_from_specMechanical: Sheet From SpecA

Several parts, their views and their dimensions, drawn inside one transaction.

Every part is validated before the transaction opens, so a refusal leaves the drawing untouched and names the offending path (parts[1]: segments[0].d_outer: ...). If a draw fails or the request is cancelled part-way, the transaction is rolled back under an anyio shield, so a cancelled call cannot leave half a sheet inside an open transaction.

Refused by name: an empty parts list, any part refusal from mech_part_draw, and a transaction that cannot be opened.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYes{sheet: {intent, sheet_size, scale, layer_set}, parts: [{part: {...}, at: [x, y], rotation, views: ['front','side'], projection, dimension, style}]}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the sparse `destructiveHint: false` annotation, the description discloses validation-before-transaction, rollback under an anyio shield on failure or cancellation, and named refusal reasons. This is exactly the operational context an agent needs for a transaction-scoped drawing 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?

The description is front-loaded with the core action, followed by transactional guarantees and refusal conditions. Every sentence adds meaningful operational detail without padding.

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 complex nested-spec batch tool with an output schema, the description covers transaction semantics, validation ordering, rollback behavior, and refusal cases. Nothing critical about how to invoke or interpret the tool 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?

Schema coverage is 100% and the nested `spec` shape is already documented in the schema. The description adds value by explaining that parts are validated before the transaction and by showing the nested error path format (`parts[1]: segments[0].d_outer`), which clarifies how the spec is interpreted and how validation failures are reported.

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 gives a specific verb and resource: drawing several parts, their views, and their dimensions inside one transaction. It implicitly distinguishes the batch sheet operation from the sibling `mech_part_draw` by emphasizing multiple parts and a shared transaction, so an agent can tell them apart without opening both schemas.

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 makes clear this is for multi-part sheet creation with atomic rollback and lists the refusal conditions. It references `mech_part_draw` for part-level refusals, which helps route the agent, but it does not explicitly state when to prefer this over the single-part tool or other alternatives.

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

mech_part_inspectMechanical: Inspect PartA
Read-only

The ACADMCP_MECH payload a drawn part carries, decoded.

Never modifies the drawing. Returns the part model exactly as mech_part_draw accepts it (part), the views drawn so far with their placements, and the payload version.

Refused by name: an unknown part_id, a handle that carries no ACADMCP_MECH payload, a corrupt or foreign payload, and part_id=None on a drawing that holds no part or more than one (the message lists the handles).

ParametersJSON Schema
NameRequiredDescriptionDefault
part_idNoAnchor handle from mech_part_draw; omit if the drawing holds one part

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description consistently reinforces this with 'Never modifies the drawing' while adding genuinely new behavioral context: the payload version, the views drawn so far, and specific refusal conditions (unknown part_id, missing/foreign/corrupt payload, ambiguous part_id=None). The refusal enumeration is the kind of failure-mode detail annotations cannot express.

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?

Front-loaded with the core purpose, then returns, then refusal conditions. Dense but every clause earns its place; the only mild cost is that the refusal list reads as a run-on enumeration.

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 an output schema present, the description need not detail return format, yet it names the return shape and enumerates the error cases. For a single-parameter read-only tool this is close to complete, missing only explicit routing guidance against siblings.

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

Parameters4/5

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

Schema coverage is 100% so the schema already documents part_id. The description goes beyond it by explaining the failure mode of part_id=None (refused when the drawing holds no part or more than one, with the message listing handles), adding meaningful semantics the schema does not carry.

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 resource and outcome: decoding the ACADMCP_MECH payload a drawn part carries, and it names mech_part_draw as the counterpart whose input it mirrors. The verb 'inspect' is implied rather than stated outright, but the resource and scope are unambiguous enough for an agent to distinguish it from mech_part_draw (write) and mech_view_add.

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

Usage Guidelines3/5

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

It ties itself to mech_part_draw by saying it returns the model 'exactly as mech_part_draw accepts it', which implies this is the read-back counterpart, but it never states when to reach for this tool versus alternatives. Usage is only implied through the sibling reference, with no explicit when/when-not guidance.

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

mech_view_addMechanical: Add ViewA

Another view of a part already on the drawing, laid out on its projection axis.

The part model comes back out of the drawing's ACADMCP_MECH XDATA, so the caller never re-describes it, and the placement follows the projection angle recorded when the part was drawn (first angle by default: the view from the right goes to the left).

Refused by name: a section without a plane, or with a plane of zero length, a plane that misses the part, or one that grazes an outline vertex so its crossings cannot be paired; a half or offset section on the wrong kind of plane (the message names the style that does apply); a detail without a radius or with a scale of zero; an unknown part_id, and part_id=None on a drawing that holds more than one part.

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNoGap between this view and its parent (mm)
kindNofront | side | top | section | detailsection
sideNoWhich end an end view looks from: right | leftright
planeNoCutting plane {p1:[x,y], p2:[x,y], label, direction:[dx,dy], via:[[x,y]]} - required for a section
scaleNoMust be 1.0: views are drawn full size (a detail takes its scale in detail.scale; a sheet scale is the viewport's)
styleNoSection style: full | half | offset | revolvedfull
detailNoDetail region {center:[x,y], radius, scale, label, of:'front'} - required for a detail
part_idNoAnchor handle from mech_part_draw; omit if the drawing holds one part

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only supply destructiveHint=false; the description adds substantial behavioral context beyond that: the XDATA lookup, the default first-angle projection convention ('the view from the right goes to the left'), and a detailed catalogue of rejected inputs with the reason messages. It does not state whether the drawing is modified or how the new view is named, but the coverage is well above the annotation baseline.

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?

Front-loaded with the core concept, then the XDATA source, then the refusal list. The refusal enumeration is long but each item is substantive; the prose is slightly literary ('laid out on its projection axis') but not wasteful.

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 an output schema present, return values need no explanation, and the description covers usage context, defaults, and failure modes for an 8-parameter optional-all tool. Minor gaps remain (e.g., whether the view is created on the current layout, what happens to existing views), but the agent has enough to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description reinforces cross-parameter constraints (plane required for a section, detail.scale vs view scale, part_id omission when the drawing holds one part), but these largely restate the schema's own notes rather than adding new syntax or format detail.

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 resource (another view of an existing part) and its placement behavior, and the projection-axis framing differentiates it from siblings like mech_part_draw and mech_dimension_part. The verb 'add' comes only from the name, and the opening sentence is descriptive rather than action-framed, so it falls 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 Guidelines4/5

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

It explains the operating context (part comes from ACADMCP_MECH XDATA, caller never re-describes it) and enumerates precise refusal conditions: section without a plane, zero-length or missing plane, wrong plane style for half/offset, detail without radius, unknown part_id, ambiguous part_id=None. This is strong when-to-use/when-rejected guidance, though it never names a sibling alternative to use instead.

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

mleaderstyle_createStyles: Create Multileader StyleA

Create a multileader style: preset values first, then overrides.

Headless it lands on doc.mleader_styles; live it is added through the ACAD_MLEADERSTYLE dictionary (AddObject(name, "AcDbMLeaderStyle")) and the object's properties are written. Refuses, before any write: an unknown preset; an override key outside the four; arrow_size / text_height <= 0, landing_gap < 0; a name that exists; a text_style that is neither present nor a bundled preset (ISOCP, ISOCPEUR, ARIAL, ROMANS — those are created on both engines, textstyle_created; live, a preset whose font file the seat lacks is refused, nothing written).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew multileader style name
presetYesiso (2.5 mm arrow, 1.0 landing, ISOCP 2.5) | ansi (3.0, 1.5, ROMANS 3.0)
overridesNoarrow_size | landing_gap | text_style | text_height on top of the preset

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With only readOnlyHint=false provided, the description carries the full behavioral burden and does so thoroughly: it explains headless versus live storage, the ACAD_MLEADERSTYLE dictionary interaction, property writing, and the complete set of refusal conditions. It also notes that bundled text styles are created and that live font-file failures leave nothing written, which is unusually rich mutation transparency.

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 front-loaded with the core purpose and then moves to engine behavior and validation. It is dense but largely free of filler; implementation details like AddObject(name, "AcDbMLeaderStyle") are more technical than an agent strictly needs, but they support the behavioral explanation.

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?

Given a 3-parameter mutation tool with full schema coverage and an output schema, the description supplies the missing behavioral context: write mode, persistence path, side effects on text styles, and detailed rejection rules. Nothing essential for correct invocation appears to be 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantic constraints beyond the schema: the four allowed override keys, positive-value requirements for arrow_size, text_height, and landing_gap, name-existence refusal, and valid text_style sources including bundled presets. It does not document each parameter exhaustively, but it substantially augments 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 opens with a specific verb and resource: 'Create a multileader style', and clarifies the order of preset values versus overrides. It does not explicitly distinguish itself from siblings such as mleaderstyle_list or leader_create_mleader, so it falls short of the 5-level sibling differentiation.

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 by the create-style wording and the preset-then-overrides workflow, but the description never says when to choose this tool over alternatives like mleaderstyle_list or when creating an mleader entity. The refusal conditions add operational context but are not usage guidance.

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

mleaderstyle_listStyles: List Multileader StylesA
Read-only

Every MLEADERSTYLE with its four values on both engines (values_available: true). Headless they are read from the MLEADERSTYLE object; live from the AcadMLeaderStyle objects the ACAD_MLEADERSTYLE dictionary holds (ActiveX exposes no collection property for them, but the dictionary items are full objects). leader_create_mleader can still override any of them per leader.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, and the description adds real behavioral context beyond that: values are available on both engines, sourced from the MLEADERSTYLE object headless and from AcadMLeaderStyle dictionary items live (because ActiveX exposes no collection property), with a values_available: true marker. This is meaningful engine-dependent disclosure, though it omits return/pagination details.

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?

Front-loads the outcome ('Every MLEADERSTYLE with its four values on both engines') before the engine internals. The ActiveX/dictionary detail is dense but earns its place for a tool whose only real complexity is engine behavior.

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 an output schema present, return values need no explanation, and the readOnly annotation covers safety. The description supplies the engine-specific sourcing an agent would otherwise lack; only explicit alternative-routing guidance is absent.

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 the baseline is 4. The description correctly implies a no-argument full listing with nothing to filter.

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 the resource precisely ('Every MLEADERSTYLE with its four values') and the scope (both engines), so an agent knows this is a read of all multileader style definitions. It is distinguishable from siblings like textstyle_list/dimstyle_list by the MLEADERSTYLE resource, though the verb 'list' is only implied rather than stated.

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?

There is no explicit 'use this when' or when-not guidance, but the closing note that leader_create_mleader can override any value implies the inspection/creation workflow. Usage is inferable rather than stated.

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

page_setup_applyApply Page SetupA

AutoCAD's PAGESETUP as one call, on both engines.

Paper sizes are ISO 216 / ANSI Y14.1; the media is written in AutoCAD's own spelling (ISO_A3_(420.00_x_297.00_MM)). changed lists only the values that moved — re-applying the same setup reports {}. An unknown ctb is written and reported plot_style_known: false (a missing ctb only matters at plot time). Viewports on the sheet are never touched.

Refused before anything is written: an unknown paper, orientation, scale or plot_area, an empty device or plot_style, margins that leave no printable area, Model, an unknown layout. On the live engine margins_mm is refused (the .pc3 owns them) and a media the device does not offer is refused with the device's names for the same paper.

The proof is the PDF: batch_plot reads each sheet's /MediaBox back.

ParametersJSON Schema
NameRequiredDescriptionDefault
paperYesISO_A0…ISO_A4 or ANSI_A…ANSI_E (short forms A3, ansi_b accepted).
scaleNofit | 1:1 | 1:2 | 1:5 | 1:10 | 1:20 | 1:50 | 1:100 | 2:1 | 5:1 | 10:1fit
centerNoCentre the plot on the paper.
deviceNoPlotter configuration (.pc3) or printer name.DWG To PDF.pc3
layoutYesPaper-space layout to set up (never 'Model').
plot_areaNolayout | extentslayout
margins_mmNo[top, bottom, left, right] in mm. Headless only: AutoCAD takes margins from the .pc3.
plot_styleNoPlot style table, e.g. monochrome.ctb, acad.ctb, Grayscale.ctb (plot_style_list).monochrome.ctb
orientationNolandscape | portraitlandscape

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply destructiveHint=false, so the description carries the load and does so richly: idempotency (`changed` lists only moved values, re-apply reports `{}`), unknown-ctb behavior (written, reported plot_style_known:false), viewports never touched, and the headless-vs-live margins_mm difference. This is exactly the beyond-annotation context an agent needs.

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?

Dense but front-loaded: the core action leads, followed by semantics, refusals, and the verification note. Every sentence carries information, though the technical density edges toward heavy for a first read.

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?

An output schema exists so return format needn't be restated, yet the description still explains the meaningful `changed` and plot_style_known fields. Combined with the refusal contract and engine caveats, an agent has everything required to call this 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?

Schema coverage is 100% (baseline 3), and the description adds real value: the paper spelling convention (`ISO_A3_(420.00_x_297.00_MM)`), that margins_mm is refused on the live engine, and the plot_style unknown-ctb semantics. It stops just short of 5 because most enum-like value sets already live in the schema.

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

Purpose5/5

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

States a specific verb+resource ('AutoCAD's PAGESETUP as one call') and scope ('on both engines'), naming the engines. It clearly distinguishes itself from page_setup_list and batch_plot, which it references for verification.

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?

Gives concrete when-not guidance through a detailed refusal list (unknown paper, orientation, scale, plot_area, empty device/plot_style, no printable area, 'Model', unknown layout) and engine-specific refusals. Lacks an explicit pointer to page_setup_list for discovering existing setups, so slightly short of 5.

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

page_setup_listList Page SetupsA
Read-only

The page setup stored on each paper-space layout.

paper is the catalogue name (ISO_A3, ANSI_B, …) when the stored size matches one within 0.5 mm, otherwise the media name as stored; size_mm, orientation, plot_style (ctb), scale ("fit", "1:50", or a custom ratio), plot_area, device, margins_mm [top, bottom, left, right] and center are read back from the LAYOUT object (headless) or the AutoCAD Layout (live). Refuses an unknown layout name and Model (model space has no sheet; plot it with drawing_export_pdf(layout=None)).

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutNoOne paper-space layout, or omit for every sheet (Model is never listed).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, but the description adds real behavioral context: it names the source of truth (LAYOUT object in headless mode vs the AutoCAD Layout in live mode), states that unknown layout names are refused, and that Model is excluded. It does not discuss pagination or error shapes, but it goes meaningfully beyond the annotation.

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?

It is dense and front-loaded with the resource being read, then the field list, then the failure/exclusion note. The long field enumeration is somewhat redundant given an output schema exists, but each element carries semantic weight and the text avoids filler.

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

Completeness4/5

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

For a single-parameter read tool with an output schema and readOnlyHint, the description covers scope, data source, refusal behavior, and the model-space workaround. With the output schema handling return structure, nothing essential is missing, though the field-by-field enumeration partially duplicates it.

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 100% and the single layout parameter is fully documented in the schema, including the 'omit for every sheet' default and the Model exclusion. The description reinforces the paper-space-only scope but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 identifies the specific resource (the page setup stored on each paper-space layout) and enumerates exactly which properties are read back (paper, size_mm, orientation, plot_style, scale, plot_area, device, margins_mm, center), which makes the purpose unambiguous against siblings like page_setup_apply or layout_list. It stops short of naming the 'list' verb or contrasting with sibling list tools, so it lands at a clear-but-undifferentiated 4.

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 an explicit exclusion (Model is never listed; unknown layout names are refused) and routes the model-space case to an alternative tool, drawing_export_pdf(layout=None). It does not advise when to prefer this over layout_list or page_setup_apply, so it is not a full when/when-not/alternatives 5.

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

pid_equipment_listP&ID: Equipment ListA
Read-only

Every equipment, valve and connector node with its ports and how many lines reach them.

Rows come from pid_graph; the drawing is not modified and csv_path is the only file this tool writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNocurrent_space | allcurrent_space
csv_pathNoWrite the rows as CSV here (inside ALLOWED_PATHS)
toleranceNoEndpoint-to-port snap distance (mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only carry readOnlyHint=true; the description adds real behavioral context: data is derived from pid_graph rather than live entities, the drawing is untouched, and csv_path is the sole file written. This is exactly the kind of side-effect disclosure annotations don't capture, and it usefully qualifies the read-only hint.

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, front-loaded with the returned content, followed by the side-effect constraint. No filler or restatement of the title.

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 an output schema present, return structure need not be described, and all three parameters are covered by the schema. The definition is sufficient for correct invocation; only the lack of selection guidance against sibling P&ID tools leaves a small 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 100%, so scope, csv_path and tolerance are already documented in the schema. The description adds only the existence of the CSV write path and does not explain scope values or tolerance units beyond what the schema provides.

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 concrete verb+resource: enumerate every equipment, valve and connector node with ports and incoming line counts. That is clearly distinct from siblings like pid_graph (the source data) or pid_symbol_list, though it never names those siblings explicitly.

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 when-to-use / when-not guidance and no alternatives are named. The note that rows come from `pid_graph` gives provenance, but an agent still has to infer whether to call this versus pid_line_list, pid_instrument_index, or pid_graph for a given question.

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

pid_from_specP&ID: From SpecA

Equipment, valves, instruments and connectors placed, then every line drawn port-to-port, inside one transaction: any bad item rolls the whole sheet back and the error names it (lines[2].to); so does an interruption (a client cancellation mid-run leaves no half-drawn sheet and no open transaction on either engine — the live one goes back to the UNDO Mark transaction_begin set, so it never waits at an AutoCAD prompt; should that rollback itself fail, the failure is logged, the cancellation is what the client sees, and the drawing must be checked before a retry). A non-finite coordinate, rotation, scale or stub is refused by path before anything is placed. The response carries the graph read back from the drawing and the P&ID critique issues, so the caller sees dangling ends or duplicate tags in the same round trip. dry_run returns the planned vertices and crossings without touching the drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYes{sheet, equipment[], valves[], instruments[], lines[], connectors[]} — see the P&ID prompt
dry_runNoValidate and route in memory; draw nothing

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations supply only readOnlyHint=false, so the description carries the real burden and delivers: full-transaction rollback on any bad item, the error naming the offending path (`lines[2].to`), cancellation behavior leaving no half-drawn sheet and reverting to the UNDO Mark so the engine never stalls at a prompt, logging when the rollback itself fails, and up-front refusal of non-finite coordinates/rotation/scale/stub. This is unusually rich behavioral disclosure beyond what the annotation provides.

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 atomic-transaction intent is front-loaded and nearly every clause carries operational weight (error naming, cancellation, validation, dry-run). It is dense, with long nested parentheticals, but for a tool with this much non-obvious failure behavior the length is largely earned.

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 nested-spec, output-schema-backed batch tool, the description covers the transactional contract, failure modes, cancellation recovery, validation preconditions and the dry-run alternative. An agent has enough to invoke it correctly and anticipate outcomes, even though the output schema already documents returns.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning: `dry_run` returns planned vertices and crossings without drawing, and it documents that the response carries the read-back graph and critique issues. The `spec` object shape is left to the schema, which is adequate given full 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 states a specific verb+resource: it places equipment, valves, instruments and connectors and then draws every line port-to-port as a single atomic operation. That clearly separates it from the one-at-a-time siblings (pid_symbol_insert, pid_line_draw) by implication, but it never names an alternative explicitly, so it stops short of the top score.

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

Usage Guidelines3/5

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

It explains what `dry_run` is for (validate/route without touching the drawing), which is genuine usage guidance, but it never says when to choose this whole-sheet generator over the granular pid_* tools or how it relates to transaction_begin/commit. Usage context is implied rather than stated.

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

pid_graphP&ID: Connectivity GraphA
Read-only

Connectivity of the drawing as it is, not as it was drawn.

Nodes: symbol INSERTs classified by catalogue name (confidence 1.0), ACADMCP_PID payload (0.95), tag attributes / block-name keywords (0.6) or a line touching an unknown INSERT (0.3); every node reports its source. Ports come from the INSERT's real rotation, scale and mirror, measured (a stretched bubble drops the node to 0.6 with a note). Edges: lines and polylines; each end resolves to a port, a junction on another line, or dangling with the nearest port as a hint — always within its own space, so scope="all" never joins two sheets. stats.confidence_min is the number to read before trusting a foreign drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNocurrent_space | all (every layout, current restored afterwards)current_space
toleranceNoEndpoint-to-port snap distance (mm)
label_searchNoHow far to look for tag/line-number text (mm)
include_foreignNoClassify INSERTs not placed by this server (confidence < 1)
include_geometryNoInclude edge vertices

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, yet the description discloses a full confidence model (1.0 catalogue, 0.95 payload, 0.6 tag/keyword, 0.6 for a stretched bubble, 0.3 line-touching), per-node source reporting, edge resolution outcomes including `dangling` hints, and the scope constraint that `scope="all"` never merges sheets. This is exactly the behavioral context annotations cannot carry.

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 text is dense but front-loads the core idea ('connectivity as it is, not as drawn') and then moves through Nodes, Ports, Edges, and the confidence caveat in a logical order. Every clause carries technical meaning, though the parenthetical confidences make it heavier than a selection-time read strictly needs.

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 an output schema present and readOnlyHint set, the description need not explain return shapes or safety, and it still goes beyond by explaining how nodes/edges are classified and scored. It is complete for calling the tool correctly, with only the lack of alternatives routing holding it back.

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 100%, so the schema already documents all five parameters and a baseline of 3 applies. The description adds genuine semantics for `scope` (never joins two sheets) and surfaces `stats.confidence_min`, but says nothing about tolerance, label_search, include_foreign or include_geometry beyond what the schema already states.

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 makes clear this tool produces a connectivity graph of a P&ID drawing, decomposed into Nodes (classified symbol INSERTs) and Edges (lines/polylines), which is a specific verb+resource. It does not explicitly name or contrast any sibling such as drawing_topology_check or pid_instrument_index, so a reader must infer its niche from the domain wording rather than a stated differentiation.

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 explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The only actionable hint is buried in the final clause about reading stats.confidence_min before trusting a foreign drawing, which is a quality gate rather than a routing rule.

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

pid_instrument_indexP&ID: Instrument IndexA
Read-only

Every instrument bubble with its ISA-5.1 reading and what it connects to.

Rows come from pid_graph, never from typed-in lists; the drawing is not modified. csv_path is the only file this tool writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNocurrent_space | allcurrent_space
csv_pathNoWrite the rows as CSV here (inside ALLOWED_PATHS)
toleranceNoEndpoint-to-port snap distance (mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations give readOnlyHint=true, and the description adds meaningful context beyond that: it states the drawing is not modified, that rows derive from `pid_graph` (not manual input), and that `csv_path` is the only file written. The last point usefully reconciles the read-only hint with an optional file write, which annotations alone would leave ambiguous.

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 tightly written sentences; the output/scope is front-loaded and the provenance and write-target facts follow. No filler, and the output schema covers the return shape.

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 an output schema present the description needn't explain return values, and annotations cover the safety profile. The description supplies source, side effects, and scope of writes, leaving only parameter-level detail (scope/tolerance) to the schema. Adequate and near-complete.

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 100%, so the baseline is 3. The description only elaborates on `csv_path` (the sole written file) and says nothing about `scope` or `tolerance`. It adds marginal meaning over the schema without compensating for anything, so baseline 3 fits.

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 output (every instrument bubble with ISA-5.1 reading and connections), which is a clear verb+resource for an index-extraction tool. It references the source sibling (`pid_graph`) rather than restating the title. It doesn't explicitly contrast with the nearest siblings like pid_equipment_list or pid_tag_parse, so sibling differentiation is only implied.

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 (generate an instrument index for a P&ID) but there is no explicit when-to-use or when-to-choose-this-over-alternatives guidance. The `pid_graph` provenance statement clarifies the data source but is not a selection rule. An agent must infer that this is the index tool versus pid_equipment_list.

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

pid_line_drawP&ID: Draw LineA

Connect two ports with one LWPOLYLINE on the class's layer.

Ports come from pid_symbol_insert; a bubble's radial port is entered without a name. auto picks the shortest orthogonal route that leaves each port straight for stub mm; when none exists the call refuses and says so — pass waypoints. crossings counts existing P&ID lines the new one cuts (reported, never refused) and port_reuse names ports that already had a line (branching is legal). Signal classes get ISA-5.1 markers (//, X, L, o) as small blocks on segments >= 15 mm; electric is dashed by layer. A signal line carries no pipe line number: it gets no auto-built number and no label, and does not consume the process sequence — a verbatim line_number is still written and labelled. With waypoints, a bubble's exit leaves towards the first waypoint (and the entry arrives from the last one); crossings follows existing arcs, not their chords.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes{handle, port} of a placed symbol, or {x, y}
sizeNoNominal size, e.g. 100
specNoPiping spec, e.g. CS1
stubNoMinimum straight run leaving each port (mm)
arrowNoFlow arrow at the end; default per class (process yes, signal no)
from_Yes{handle, port} of a placed symbol, or {x, y}
labelNoWrite the line number along the longest segment
routeNoauto (orthogonal) | direct | [[x, y], ...] waypointsauto
serviceNoService code, e.g. P
insulationNoInsulation code, e.g. IH
line_classNoprocess_major | process_minor | utility | pneumatic | electric | hydraulic | capillary | dataprocess_major
line_numberNoVerbatim line number; omit to build one from the fields
number_formatNoDefault {size}-{service}-{seq}-{spec}-{insulation}; empty fields drop out

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With only readOnlyHint=false from annotations, the description carries the full burden and does so richly: auto-route refusal and waypoint recovery, crossing counts never refusing, port reuse being legal, ISA-5.1 markers for signal classes, dashed electric by layer, and the distinction that signal lines get no auto number or label but accept verbatim line_number. It also clarifies how bubble exits and entries behave with waypoints. This is deep behavioral disclosure beyond structured fields.

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 front-loaded with the core operation, then layers in behavioral detail. It is dense and paragraph-heavy, but nearly every sentence adds useful routing or classification nuance rather than restating the schema.

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 13-parameter P&ID drawing tool with an output schema and minimal annotations, the description covers routing, failure modes, signal-specific rendering and numbering, waypoint semantics, and port behavior. An agent has enough context to invoke it correctly without needing external documentation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds material meaning beyond the schema by explaining how route='auto' picks the shortest orthogonal path with stub departure, how waypoints alter bubble exit/entry direction, and how signal line classes affect labelling and numbering.

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 first sentence states a specific verb and resource: 'Connect two ports with one LWPOLYLINE on the class's layer.' It distinguishes this from generic line creation and explicitly ties inputs to pid_symbol_insert, so an agent can tell it apart from siblings like entity_create_line or pid_symbol_insert.

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 context for when to use the tool (connecting placed symbol ports, handling auto-route failures, signal-class behavior) and explains the waypoint fallback. It does not, however, name explicit alternatives such as entity_create_polyline or pid_line_list for cases where a non-P&ID line is wanted.

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

pid_line_listP&ID: Line ListA
Read-only

Every P&ID line with its number, class, size/service/spec/insulation and endpoints.

Rows come from pid_graph; untagged lines sort last with line_number: null. The drawing is not modified; csv_path is the only file this tool writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNocurrent_space | allcurrent_space
csv_pathNoWrite the rows as CSV here (inside ALLOWED_PATHS)
toleranceNoEndpoint-to-port snap distance (mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true), and the description supplements it with real behavioral detail: untagged lines sort last with `line_number: null`, the drawing is untouched, and `csv_path` is the sole file written. That file-write disclosure is exactly the kind of side effect annotations cannot express.

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: the first front-loads what the tool returns, the second covers the two behaviors an agent would otherwise have to guess (row ordering and file side effects). No filler.

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?

An output schema exists, so return values need not be described, and the description still covers ordering behavior and the write side effect. Only the routing decision against sibling P&ID tools is left unaddressed.

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 100%, so scope, csv_path and tolerance are already documented in the schema. The description adds no format or constraint detail beyond what the schema provides, making the baseline 3 the correct score.

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 resource (P&ID lines) and enumerates the exact fields returned (number, class, size/service/spec/insulation, endpoints), which lets an agent distinguish it from pid_graph, pid_instrument_index and pid_equipment_list. It stops short of naming those siblings explicitly, so a 4 rather than 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 Guidelines3/5

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

The note that rows come from `pid_graph` gives useful provenance context, implying this is a derived read view rather than the raw graph. However, there is no explicit statement of when to prefer this over pid_graph or the other P&ID list tools, leaving the choice to inference.

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

pid_symbol_insertP&ID: Insert SymbolA

Insert a catalogue symbol as a real block with TAG attributes and named ports.

Defines the block on first use (defined), creates a missing family layer from the P&ID layer set (layers_created), writes an ACADMCP_PID payload so readers without the catalogue still see the ports, and returns every port in WCS — connect them with pid_line_draw. An invalid ISA-5.1 tag is written and reported in tag_warnings; drawing_critique flags it.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesInsertion X (WCS)
yYesInsertion Y (WCS)
tagNoTag: equipment P-101, valve HV-101, instrument FIC-101 (split into FUNC/LOOP)
descNoDescription attribute
failNoActuated valves: FO | FC | FL
linkNoOff-page connector link id shared by both ends
typeNoInstruments: discrete | dcs | computer | plc
layerNoOverride the family layer
scaleNoUniform scale
shapeNoReducer: concentric | eccentric
paramsNoParametric vessels: {width, height, nozzles: [{name, side, fraction}], roof, trays, jacketed}
symbolYesCatalogue symbol name, e.g. gate, centrifugal_pump, vertical_vessel, instrument, offpage
actuatorNoValves: none | diaphragm | piston | motor | solenoid | hand
locationNoInstruments: field | primary | auxiliary | primary_rear | auxiliary_rear
rotationNoRotation in degrees; 0 = flow left to right
directionNoOff-page connector: in | out

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With only readOnlyHint=false as annotation, the description carries the full burden and delivers rich behavioral detail: it defines the block on first use (`defined`), creates a missing family layer (`layers_created`), writes an ACADMCP_PID payload for readers without the catalogue, returns ports in WCS, and reports invalid ISA-5.1 tags via `tag_warnings` with `drawing_critique` flagging. These side effects and error-handling behaviors are exactly what an agent needs to invoke the tool safely.

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 purpose is front-loaded in the first sentence, followed by structured behavioral details with backticked output keys. It is slightly dense with parenthetical key names, but every sentence contributes needed context and nothing is wasted.

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

Completeness4/5

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

Given 16 parameters with full schema descriptions and an existing output schema, the description is nearly complete: it covers key side effects, output ports, and error handling, and points to the connecting tool. It lacks explicit when-to-use guidance versus siblings, but otherwise an agent has enough to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a small amount of meaning beyond the schema—mentioning ISA-5.1 tag validation and the ACADMCP_PID payload—but does not provide per-parameter semantics that the schema does not already cover better.

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 first sentence states a specific verb ('Insert'), resource ('catalogue symbol as a real block'), and key attributes ('TAG attributes and named ports'), clearly distinguishing it from generic block insertion tools via the P&ID catalogue context. An agent can identify this as the P&ID symbol insertion tool without opening the schema.

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 P&ID catalogue symbols and mentions a follow-up step ('connect them with pid_line_draw'), but it does not explicitly say when to choose this over alternatives like block_insert or pid_symbol_list. There is clear context but no exclusions or named alternatives for the insertion decision itself.

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

pid_symbol_listP&ID: Symbol CatalogueA
Read-only

The symbols pid_symbol_insert can place, with their ports and variant options.

Authored from ISO 10628-2 (equipment, valves) and ISA-5.1 (instrumentation); each row's source names the figure. Symbol-local sizes are millimetres at A3/A1 paper scale (bubble Ø10, valve 8×4); scale at insertion rescales.

ParametersJSON Schema
NameRequiredDescriptionDefault
familyNovalve | rotating | vessel | heat | misc | instrument | connector | marker; omit for all

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With `readOnlyHint: true` already declaring the safety profile, the description adds meaningful behavioural context: source standards, figure naming, millimetre sizing at A3/A1 scale, and how `scale` at insertion affects size. It does not discuss pagination or return shape, but that is partly covered by the 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.

Conciseness4/5

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

The description is front-loaded with purpose, then adds source and sizing details in clearly ordered sentences. Every sentence contributes useful context, though the formatting with line breaks is slightly loose for a short description.

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 read-only catalogue tool with one optional filter and an existing output schema, the description supplies enough context: what it contains, where symbols come from, and how sizes are expressed. Nothing critical for correct invocation appears to be missing.

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 100%, and the description adds no input-parameter meaning beyond what the schema already provides for `family`. The baseline of 3 is appropriate when the schema carries parameter semantics fully.

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 that this tool returns the symbol catalogue that `pid_symbol_insert` can place, including ports and variant options. It distinguishes itself from the insertion sibling by being the catalogue source rather than the action tool, so an agent can immediately understand its role.

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 names `pid_symbol_insert`, implying this tool is used to discover symbols before insertion, but it does not explicitly say when to use this tool versus alternatives or when not to use it. Usage is therefore implied rather than spelled out.

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

pid_tag_parseP&ID: Parse TagA
Read-only

ISA-5.1-2009 Table 4.1 as a grammar: first letter, modifier, readout and output functions, trailing high/low, loop number and suffix — with the standard's description ("Flow Indicating Controller") or the first offending letter. Equipment prefixes are not standardised, so the default map (P pump, V vessel, E exchanger, ...) can be replaced per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYese.g. FIC-101, 10-PDT-203A, P-101A
kindNoauto | instrument | equipmentauto
equipment_prefixesNoReplace the default equipment prefix map, e.g. {'Q': 'quench tower'}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuine behavioral detail beyond that: on success it returns the standard's own description (e.g. 'Flow Indicating Controller'), on failure the first offending letter, and the prefix map is replaceable. This tells the agent what to expect from a call in both outcomes.

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?

Two dense sentences that are front-loaded around the grammar model, with the override nuance placed last. It is information-rich and largely waste-free, though the phrasing is compressed enough to read as slightly opaque on first pass.

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 an output schema present, return values need not be explained, and annotations cover safety, so the description's job is mainly to convey the parsing model, which it does well. Minor gaps remain around the 'kind' modes (auto/instrument/equipment) and no explicit routing to sibling tools, but overall the definition is sufficient to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents tag, kind, and equipment_prefixes with examples. The description reinforces the prefix-map override ('Q quench tower' style) and the letter-by-letter grammar, but adds little beyond the schema, so the baseline of 3 applies.

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 (parse) and resource (P&ID tag) and outlines the exact ISA-5.1 grammar components it decodes, so the agent understands the operation precisely. It does not, however, name or contrast itself with pid-related siblings such as pid_instrument_index or pid_equipment_list, so it falls short of full sibling differentiation.

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 note that equipment prefixes are not standardised and the default map 'can be replaced per call' implies when to override the map, which is useful context. But there is no explicit statement of when to use this parser versus related index/list tools, nor any stated prerequisites or exclusions, leaving usage mostly inferred.

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

pipe_takeoffPlant: Pipe TakeoffA

A pipe takeoff: topology from the P&ID, lengths from the layout, rows by room x service x diameter.

The P&ID gives the runs (junctions merged, tees split, a line drawn twice counted once, valves and reducers bridged), each run's service (the layer, overridden by a supply / return word near the line), its diameters exactly as labelled (direct, carried by continuity - never across a reducer - or unassigned) and the equipment tags at its ends. The length comes from the layout unless the scale check calls the P&ID to scale: the rectilinear minimum spanning tree of the run's tag positions on the layout, each connection along x first then y, plus vertical_allowance per connection. The P&ID's drawn length stays beside it as schematic_m, never as the answer. Lengths are metres from the unit the geometry implies; an INSUNITS that disagrees is a warning, never a factor. Status A / B / C per run: a C run (an end on no equipment, a tag missing from or written twice on the layout) is on the Kontrol sheet with its schematic length, counted in the total and flagged.

Read-only on both drawings. With output it writes one workbook - Metraj, Özet, Kontrol, Metodoloji - as XLSX and, always, as CSV beside it.

Refused before a drawing is read: lang outside tr / en / ru, an unknown service or length source, an allowance outside 0-1, a negative vertical allowance, a non-positive tolerance, and length_source='layout' without a layout. A missing, unreadable or oversize drawing is refused by the reader, which names MAX_DXF_BYTES. Refused after the scale check: length_source='pid' on a P&ID it calls schematic, unless force=True (the refusal quotes the statistics). Without openpyxl the XLSX is not written and files.refused carries capability: "xlsx_write" naming the office extra; the CSV files are written all the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
tolNoLine ends closer than this (P&ID drawing units) are one junction; default 1 mm in the unit the P&ID's geometry implies (1.0 on a millimetre drawing, 0.001 on a metre one).
langNoHeaders and method text: tr | en | ru.en
forceNoWith length_source='pid', measure on a P&ID the scale check calls schematic anyway.
layersNoP&ID layers holding the lines; default every layer the vocabulary files under piping or electrical with confidence >= 0.9.
outputNoWorkbook to write (.xlsx); the four sheets are also written as CSV beside it. Omit to return the rows only.
pid_pathNoThe P&ID (DXF headlessly; DXF or DWG on a live seat). Omit to read the current drawing as the P&ID.
servicesNoServices to take off; default product, cip_supply, cip_return. Also: glycol_supply, glycol_return, steam, condensate, cold_water, hot_water, ice_water, compressed_air, drain, electrical, unknown.
allowanceNoAllowance as a share of the net length (0.20 = 20 %); its own column.
layout_pathNoThe layout of the same plant. Omitted, every length is the P&ID's drawn length and is marked scale_verified: false.
length_sourceNoauto | pid | layout. auto measures on the P&ID only when the scale check calls it to scale, else on the layout.auto
exclude_regionsNoIds of reported detail copies (detail_copies: D1, D2 ...) whose runs repeat pipes drawn elsewhere and are left out. Omitted, every copy is counted.
vertical_allowanceNoMetres added per connection for rises and drops (layout lengths).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With annotations only saying readOnlyHint=false / destructiveHint=false, the description carries the burden and does it well: it clarifies it is 'read-only on both drawings' while writing one workbook plus CSVs, describes the A/B/C run statuses and the Kontrol sheet, and enumerates pre-read and post-scale-check refusals plus the openpyxl capability failure path (files.refused with capability xlsx_write). Nothing about side effects or failure modes is left to inference.

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 core definition is front-loaded in the first sentence and nearly every following sentence carries real information about topology rules, length sourcing, or refusals. It is dense prose without headings, so a 370-word wall is harder to scan than bullets would be, but it is not padded.

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 12-parameter, high-complexity tool it covers outputs (Metraj/Ozet/Kontrol/Metodoloji workbook and CSV), validation and refusal behavior, capability fallbacks, and the P&ID-vs-layout length decision. An output schema exists, so return values need not be described, and nothing essential for a correct call 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?

Schema coverage is already 100%, so the baseline is 3, but the description adds conceptual meaning the schema does not: what counts as one junction (ends closer than tol, tees split, a line drawn twice counted once, valves/reducers bridged), why diameters are 'never carried across a reducer', and how vertical_allowance applies per connection on layout lengths. That is genuine semantic enrichment beyond the field text.

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 opening line names a specific verb+resource ('A pipe takeoff') and immediately decomposes it: topology from the P&ID, lengths from the layout, rows by room x service x diameter. That is far more specific than siblings like bom_extract, data_extract or cable_takeoff, and an agent can tell what artifacts this produces without opening the schema.

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 rich conditional usage context: it explains when length comes from the layout vs the P&ID, when `force=True` is required, when `length_source='layout'` is impossible, and enumerates the refusal cases before and after the scale check. It never names a sibling alternative (e.g. cable_takeoff or bom_extract) for routing purposes, so it is clear context without exclusions.

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

plot_style_listList Plot StylesA
Read-only

The ctb files AutoCAD ships (monochrome.ctb, acad.ctb, Grayscale.ctb, the Screening set, …) and, on the live engine, the files actually present in Preferences.Files.PrinterStyleSheetPath (source: "installed", installed: true/false per row). Headlessly installed is null: there is no installation to scan, and the catalogue is not evidence of one. Never refuses; an unreadable Preferences object degrades to the catalogue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With only readOnlyHint available in annotations, the description carries the behavioral load well: it explains the two-source model (`source: "installed"`), that `installed` is `null` headlessly because there is no installation to scan, that the catalogue must not be treated as evidence of installation, and that the tool never refuses and degrades gracefully on an unreadable Preferences object. That is exactly the kind of degradation and edge-case context an agent needs.

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?

Three sentences, all information-dense, with the live-vs-headless distinction front-loaded. The opening subordinate clause is a slightly awkward way to start — a plain 'Lists plot style (CTB) files…' would front-load the purpose better — but nothing here is filler.

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?

An output schema exists, so return-shape explanation is not required, yet the description still clarifies the meaning of the `installed` and `source` fields and their headless behavior. Combined with readOnlyHint and an empty input schema, nothing needed to invoke or interpret this tool 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 the baseline is 4. There are no parameter semantics to clarify, and none are claimed.

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 identifies the resource precisely: the CTB plot-style catalogue AutoCAD ships plus (on the live engine) files actually present in the printer style sheet path. It never states the verb cleanly in a leading sentence, relying on the tool name/title, but the resources and the two data sources are unambiguous enough to distinguish it from siblings like layout_list or page_setup_list.

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 — you call this to see which plot styles are available — but there is no explicit when-to-use statement, no mention of alternatives such as page_setup_list or batch_plot, and no preconditions. An agent can infer the context but gets no routing guidance.

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

point_from_snapPoint: Snap (deterministic OSNAP)A
Read-only

Compute a deterministic snap point on an entity. Use this INSTEAD OF guessing coordinates — eliminates the most common LLM drawing error.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapYesSnap type: end | mid | center | quad | perp | near
ref_xNoReference X (required for perp/near; disambiguates end/quad)
ref_yNoReference Y
handleYesEntity handle to snap onto

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so agents know this operation is safe. The description adds the useful context that the snap is deterministic and prevents drawing errors, but it does not disclose return format, failure modes, or how ref_x/ref_y affect 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?

Two sentences with no filler. The core action is front-loaded, and the practical guidance about avoiding coordinate guessing is immediately actionable.

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?

With complete parameter documentation, an output schema, and readOnly annotation, the description plus structured data fully equips an agent to call this tool correctly. No meaningful context is missing.

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 100%, so the schema fully explains all four parameters. The description adds no parameter-level detail beyond 'entity' and 'snap point', which is acceptable because the schema carries the burden.

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 a specific action: compute a deterministic snap point on an entity. It is distinct from coordinate-guessing and from generic entity creation, but it does not explicitly differentiate itself from sibling tools like point_intersection or point_tangent.

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 explicitly tells agents to use this tool instead of guessing coordinates, which is the primary use case. However, it does not mention when not to use it or when point_intersection/point_tangent would be the better choice.

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

point_intersectionPoint: Intersection (deterministic)A
Read-only

Compute the intersection of two geometry entities (LINE-LINE, LINE-CIRCLE, CIRCLE-CIRCLE). When two candidates exist, ref_x/ref_y selects the nearest. Returns {x, y}.

ParametersJSON Schema
NameRequiredDescriptionDefault
ref_xNoReference X to pick nearest candidate when multiple exist
ref_yNoReference Y
handle1YesFirst entity handle (LINE or CIRCLE)
handle2YesSecond entity handle (LINE or CIRCLE)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, so safety is covered. The description adds meaningful behavioral context: deterministic candidate selection via ref_x/ref_y and the returned shape {x, y}. It does not specify what happens with parallel/disjoint entities, but the core behavior is transparent enough.

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?

Three compact sentences with no filler. The primary operation is front-loaded, supported types are listed, the tie-breaking rule is stated, and the return shape is clearly given.

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 read-only geometric computation with a 100%-documented schema and a stated return shape, the description covers the essential selection and output behavior. No critical information needed to call the tool correctly is missing.

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 100%, and the schema already documents handle1/handle2 as LINE or CIRCLE and ref_x/ref_y as candidate selectors. The description reinforces the nearest-candidate behavior but does not add meaning beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Compute') and resource ('intersection of two geometry entities') with explicit supported combinations (LINE-LINE, LINE-CIRCLE, CIRCLE-CIRCLE). It clearly distinguishes this from geometric-point siblings like point_from_snap and point_tangent.

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 usage context is implied: call this when you need a geometric intersection of supported entity pairs. It explains the reference-point selection condition but does not explicitly name alternatives or state when not to use this tool.

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

point_tangentPoint: Tangent from external pointA
Read-only

Compute the tangent point on a circle from an external point. Returns {x, y}. Raises if the from-point is inside the circle.

ParametersJSON Schema
NameRequiredDescriptionDefault
ref_xNoReference X to pick nearest tangent point when two exist
ref_yNoReference Y
from_xYesX of the external point
from_yYesY of the external point
circle_handleYesHandle of the CIRCLE entity

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, and the description adds two behavioral details: the return value is an {x, y} point and the tool raises an error when the input point is inside the circle. These go beyond the annotation and aid correct invocation, though it does not mention the two-tangent ambiguity explicitly.

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 no filler. The main action, result shape, and failure condition are front-loaded in a compact and easily parseable form.

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?

With a complete input schema, output schema, read-only annotation, and clear error behavior described, the definition provides enough information for an agent to select and invoke the tool correctly. Nothing important is missing.

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 100%, so the schema already documents all five parameters clearly. The description's mention of 'external point' and 'circle' maps to from_x/from_y and circle_handle, but it adds no additional parameter-level meaning beyond the schema.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Compute the tangent point on a circle from an external point.' It clearly distinguishes itself from sibling point tools like point_intersection or point_from_snap by naming the exact geometric operation and the result shape.

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 establishes the applicable case: an external point outside a circle from which a tangent is needed. It also warns when the tool is not usable ('Raises if the from-point is inside'), giving clear context. It does not explicitly name alternative sibling tools, but the use case is clear enough.

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

revision_addSheet: Add RevisionA

Append one row to the revision block, creating the block on first use.

Idempotent per revision code: a code the drawing already carries returns created=false and draws nothing, so re-running a revision pass cannot stack duplicates. The block defaults to the upper-right corner of the drawing frame, growing downwards, so it does not collide with the ISO 7573 parts list above the title block. Refusals, all before the first entity: a malformed code, a cloud region that is not [x0, y0, x1, y1], and any request for clouds on a backend whose revcloud capability is false (the COM engine — REVCLOUD has no ActiveX member) — that one carries capability: "revcloud".

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoWho issued it.
revYesRevision code: one to three capitals or digits (A, B, 01).
dateNoIssue date, verbatim.
sizeNoSheet the block is placed on: A4-A0.A3
tagsNoPoints [x, y] to put a triangular revision tag at.
cloudsNoRegions to cloud, each [x0, y0, x1, y1] in WCS. Refused before anything is written on an engine without the revcloud capability.
layoutNo
origin_xNo
origin_yNo
descriptionYesWhat changed, verbatim.
orientationNolandscape
cloud_segmentNoRevision-cloud arc segment length (mm).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only carry destructiveHint=false, yet the description discloses substantial behavior: idempotency with `created=false` and no drawing, default placement (upper-right, growing downward) chosen to avoid the ISO 7573 parts list, and three pre-write refusal cases including `capability: "revcloud"` on COM. This is exactly the kind of context the annotation does not provide.

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?

Front-loads the core action, then idempotency, then placement, then refusals — a sensible priority order with no filler sentences. It is dense and discursively punctuated, but every clause carries functional information.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the description covers the high-risk behaviors (idempotency, refusals, capability gating) for a 12-parameter mutation tool. It is close to complete; only the placement/layout parameters remain ambiguous.

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 67%, so the description needs to compensate and partly does: it constrains `rev` (malformed codes refused), `clouds` (must be [x0,y0,x1,y1]), and `cloud_segment` indirectly. But parameters like `layout`, `origin_x`, `origin_y`, and `orientation` carry no description in either the schema or the description, leaving real gaps.

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

Purpose5/5

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

States a specific verb and resource ('Append one row to the revision block, creating the block on first use'), immediately distinguishable from siblings like entity_create_revcloud or titleblock_apply. The scope (revision block on a drawing frame) is precise enough to route correctly.

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?

Explains when the tool safely applies — idempotent per revision code, so re-running a revision pass is safe — and enumerates refusal conditions (malformed code, bad cloud region, missing revcloud capability). It does not explicitly compare against sibling tools such as entity_create_revcloud for standalone clouds, so routing guidance stops just short of 5.

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

section_lineSection Line (ISO 128-40)A

Draw the cutting-plane line and hand back the plane a section view consumes.

Wide segments at the ends on GEOMETRY, the thin long-dash-dot middle on CENTER, an arrow at each end whose head sits on the line end and points the way the section is viewed, and the same letter beyond both arrows. payload["plane"] is exactly {p1, p2, label, direction, style} — feed it to the section view so the label on the plan and the label on the view cannot disagree. Refusals, before any entity is written: p1 == p2, a zero or parallel viewing direction, an empty label, a style outside full/half/offset/revolved, and a non-positive height.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesCutting plane start X (WCS).
x2YesCutting plane end X (WCS).
y1YesCutting plane start Y (WCS).
y2YesCutting plane end Y (WCS).
labelNoCapital letter drawn at both ends, e.g. 'A'.A
layerNoOverride the role layers (GEOMETRY/CENTER/TEXT).
styleNofull | half | offset | revolved — carried into the returned plane.full
heightNoLabel height (mm).
directionNoViewing direction as [dx, dy]; must not be parallel to the cutting plane.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With only destructiveHint=false in annotations, the description carries the real burden and does so well: it enumerates the exact refusal conditions checked 'before any entity is written' (p1==p2, zero/parallel direction, empty label, invalid style, non-positive height), and describes how entities are distributed across GEOMETRY/CENTER/TEXT layers. That is substantive behavior beyond the annotations.

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

Conciseness4/5

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

Front-loaded with the action and its product, then the layer/arrow drawing detail, then refusals. Dense and largely waste-free, though the arrow-head drawing minutiae is slightly more than an agent strictly needs to select and invoke the tool.

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 9-param production tool, the definition covers what is created, where entities land, the exact payload shape, and all validation refusals. An output schema exists, so return values need not be explained, yet the description still pins down the plane contract that downstream tools depend on.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the role-layer override semantics, that `style` is carried into the returned plane, that `direction` must not be parallel, and that `height` must be positive. This goes beyond restating schema text.

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 and resource — 'Draw the cutting-plane line and hand back the plane a section view consumes' — with enough detail (ISO 128-40 cutting plane line) to distinguish it from line-drawing or generic entity tools. The dual output (geometry + plane payload) is stated up front.

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 routes the agent: `payload["plane"]` is 'feed it to the section view so the label on the plan and the label on the view cannot disagree.' This tells the agent what the tool is for in a workflow, though it never states when *not* to use it versus sibling section tools like gear_draw_section_aa.

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

selection_filterSelect by PropertiesA
Read-only

AutoCAD's QSELECT: filter the drawing by properties.

Named parameters rather than a query string, deliberately — a mistyped attribute name in a query language comes back as an empty result, which is indistinguishable from "no matches". filtered_by reports which filters actually ran.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoACI colour to match.
layerNoLayer name. Empty means any.
linetypeNoLinetype name. Empty means any.
min_areaNoKeep only closed shapes with at least this area.
entity_typeNoDXF type, e.g. LWPOLYLINE. Empty means any.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses the empty-result ambiguity that motivated the design and explains that `filtered_by` reports which filters actually ran. This gives the agent useful failure-mode awareness that structured fields do not convey.

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 core purpose is front-loaded in the first sentence, and the two supporting sentences each add distinct value: one explains the design rationale and its failure-mode implication, the other points to the output field. No filler, though the rationale sentence is slightly longer than necessary.

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

Completeness4/5

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

The description is complete for a read-only, fully-schema-documented filter tool: it covers what it does, why the interface is shaped this way, and what the result tells you. It does not mention how the filtered selection is consumed downstream, but the output schema presumably covers the return shape.

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 100%, so each of the five parameters is already documented with type, default, and meaning. The description adds the `filtered_by` reporting behavior, which is output-related rather than per-parameter, so it earns the baseline score but no more.

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 the operation concretely as 'filter the drawing by properties' and anchors it to AutoCAD's familiar QSELECT command, which positions it as the general property-based selection tool. This distinguishes it from geometric selectors like selection_polygon and selection_window and from narrower property selectors like analysis_select_by_layer.

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 QSELECT analogy implies this is the right tool when the selection criterion is entity properties rather than geometry or a single specific attribute. However, it never explicitly names alternatives or states when not to use it, so the agent must infer routing from the sibling list.

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

selection_getGet Viewport SelectionA
Read-only

Read the entities the user pre-selected in the AutoCAD viewport (COM backend only).

Returns the implied "pickfirst" selection — the entities highlighted with grips before invoking the AI — so work can be scoped to exactly those entities instead of the whole drawing. Typical use::

sel = selection_get()
dimension_auto(sel["handles"], style="chain")

Result keys: ok — True on the COM backend (even for an empty selection) count — number of selected entities handles — list of entity handles (hex strings) to act on entities — full per-entity info (type, layer, color, ...) pickfirst — state of the PICKFIRST sysvar (None if unknown) message — guidance when nothing is selected

On the ezdxf headless backend there is no viewport, so this returns ok=False with an empty handles list.

fields / compact shape the "entities" collection — this tool already returns an object, so the columnar envelope lands under that key rather than replacing the result. handles is unaffected, so a caller that only wants handles can pass fields=["handle"] and still read handles directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoProject to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones.
compactNoReturn a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses detailed behavioral traits: result keys, empty-selection behavior (ok=True with guidance message on COM), backend fallback behavior (ok=False on ezdxf), and the nested columnar-envelope behavior for fields/compact. This is far richer than the annotation alone.

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 organized with a purpose statement, a compact code example, a bulleted result-key list, and a final note on parameter interaction. It is longer than minimal, but each section adds distinct value and nothing feels redundant.

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?

The tool has an output schema and read-only annotation, and the description still covers backend availability, empty-selection behavior, result keys, and parameter effects. A caller has all necessary information to invoke the tool and correctly interpret its results across both backends.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful interaction semantics: the columnar envelope lands under the entities key rather than replacing the result, and handles remains readable even when fields=['handle'] is passed. This clarifies parameter effects beyond their standalone schema descriptions.

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 opening sentence names a specific verb ('Read') and resource ('entities the user pre-selected in the AutoCAD viewport'), and the COM-backend qualifier makes the scope precise. The 'pickfirst' explanation differentiates it from sibling selection tools like selection_polygon, selection_window, and selection_filter.

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 states the use case — scoping work to the user's pre-selected entities instead of the whole drawing — and provides a typical code example. It also warns about the ezdxf headless backend returning ok=False. It doesn't explicitly name alternative selection tools, but the context makes when to choose this tool clear.

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

selection_polygonSelect by PolygonA
Read-only

Window or crossing selection against a polygon rather than a rectangle.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNowindow = wholly inside only; crossing = touching.window
layerNoRestrict to a layer. Empty means any.
pointsYesPolygon vertices as [[x, y], ...]; at least 3.
entity_typeNoRestrict to a DXF type. Empty means any.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the window/crossing distinction, which is useful behavioral context, but does not go deeper into edge cases or state effects. With annotations covering safety, 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.

Conciseness5/5

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

The description is a single, compact sentence with no filler. It front-loads the core concept (polygon selection) and immediately distinguishes it from rectangle selection, earning its place efficiently.

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

Completeness4/5

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

For a selection tool with a readOnly hint, full schema coverage, and an output schema, the description is sufficiently complete. It conveys the key differentiator and behavior. A small gap is that it does not explicitly state that the polygon must have at least 3 points, but this is covered in 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 100%, so the schema already documents all parameters clearly. The description does not add additional parameter-level semantics beyond what the schema provides, so the baseline score of 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 clearly indicates this tool performs a selection operation using a polygon, and contrasts it with rectangle-based selection. It is clear about the resource being selected, though it does not explicitly name sibling tools like selection_window or selection_filter for differentiation.

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 provides clear context: use this tool when selection should be based on a polygon rather than a rectangle. It does not explicitly state when not to use it or name alternatives, but the polygon-versus-rectangle framing gives sufficient guidance for common cases.

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

selection_windowSelect by WindowA
Read-only

AutoCAD's ssget window/crossing selection.

Corners may be given in any order. Selection is by drawn position, so an entity in a mirrored frame is found where entity_get reports it. A zero-area box is refused rather than answered with an empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesFirst corner X.
x2YesOpposite corner X.
y1YesFirst corner Y.
y2YesOpposite corner Y.
modeNowindow = wholly inside only; crossing = also entities straddling the edge.window
layerNoRestrict to a layer. Empty means any.
entity_typeNoRestrict to a DXF type, e.g. CIRCLE. Empty means any.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses key behaviors: corners may be in any order, selection uses drawn position rather than stored coordinates, and zero-area boxes are refused instead of returning an empty list. These caveats materially affect how an agent interprets results and errors.

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?

Three short, focused sentences front-load the core purpose and then cover only high-value edge cases. Every sentence earns its place; there is no redundant restatement of the schema.

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?

With a fully documented input schema, an output schema, and a readOnly annotation, the description covers the remaining behavioral context an agent needs: corner ordering, coordinate-space semantics, and invalid-input handling. Nothing required for correct invocation 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?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by clarifying that the four corner parameters can be supplied in any order and that selection is based on drawn position, which is not obvious from the schema alone.

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/resource: 'AutoCAD's ssget window/crossing selection' and the title 'Select by Window' make the scope unmistakable. This distinguishes it from sibling tools like selection_polygon and selection_filter by its rectangular window/crossing semantics.

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 use for rectangular window/crossing selection, and the corner-order note gives operational context. However, it never explicitly says when to prefer this over selection_polygon or selection_filter, leaving the routing decision to inference.

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

sheet_frameSheet: ISO 5457 FrameA

ISO 5457 drawing frame for A4-A0: a 20 mm filing margin, 10 mm on the other three edges, the grid reference system and the centring/trimming marks.

Borders, rules and marks land on TITLEBLOCK; the zone lettering on TEXT. Refusals, all before the first entity is drawn: a size outside A4-A0 is refused by name and the five covered sizes are listed; an orientation that is neither 'landscape' nor 'portrait'; a layout that does not exist. The zone divisions drawn are equal -- ISO 5457's shorter corner fields are not implemented -- while the division counts are the standard's.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoISO 216 sheet: A4, A3, A2, A1 or A0.A3
marksNoDraw the four centring marks and the eight corner trimming rectangles.
zonesNoDraw the ISO 5457 grid reference system: letters down the vertical edges from the top, numbers along the horizontal edges from the left.
layoutNoPaper-space layout to draw the sheet on (create it with layout_create). Empty draws in the current space.
origin_xNoX of the sheet's lower-left corner (WCS).
origin_yNoY of the sheet's lower-left corner (WCS).
orientationNo'landscape' or 'portrait'.landscape

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only give destructiveHint=false, so the description carries the load and delivers: refusals occur before the first entity is drawn, invalid sizes are refused by name with the five covered sizes listed, and it openly discloses the standard deviation (equal zone divisions rather than ISO's shorter corner fields). This is unusually informative.

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?

Front-loaded with what gets drawn before moving to layer targets and refusals. The refusal paragraph is dense but every clause carries real information; slightly verbose rather than padded.

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 7-parameter drawing tool with an output schema, the description covers geometry, margin dimensions, layer placement, failure modes, and known deviations from the standard. 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters including valid sizes and orientation values. The description adds refusal semantics for size/orientation/layout but no new syntax or format detail, so baseline 3 is appropriate.

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 verb+resource: it draws the ISO 5457 drawing frame with a 20 mm filing margin, 10 mm elsewhere, the grid reference system and centring/trimming marks. It is clearly distinguishable from siblings like titleblock_apply and layout_create.

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 states where output lands (TITLEBLOCK and TEXT layers) and points at layout_create for the layout parameter, plus enumerates refusal conditions. It does not explicitly say when to prefer this over a template or titleblock sibling, but the context is clear.

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

std_feature_drawStandard Parts: Draw FeatureA

Add a standard feature to geometry that already exists - a foreign drawing being finished.

Local frame: (x, y) is on the axis, +X runs along the axis in the direction the feature extends and +Y is radially outward. The thread is the ISO 6410 representation (minor diameter at 0.8 x major, thread-length limit to the major) and its pitch comes from ISO 261 via size or from an explicit pitch - it is never guessed. Every other kind takes its dimensions from the registered standards table and is refused by name when that table is absent, when the size is outside its coverage, or when the row lacks a dimension the feature needs: no value is interpolated and no profile is reconstructed. DIN 332 form R is refused - only forms A and B are drawn.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesFeature origin X (WCS): a point on the axis
yYesFeature origin Y (WCS): a point on the axis
kindYesthread | undercut | ring_groove | centre_hole | oring_groove
layerNoOverride the visible primitives' layer; CENTER and HIDDEN keep theirs
paramsYesthread: {d, length, size|pitch, internal} (a size must name d's own thread - 'M20' with d=8 is refused, not drawn); undercut: {d, form: E|F}; ring_groove: {d, kind: shaft|bore}; centre_hole: {size, form: A|B}; oring_groove: {d, cord, kind: shaft|bore}
rotationNoDegrees CCW applied to the local +X (along the axis, into the feature)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=false provided, the description carries the real burden and does so well: it documents the local frame convention, the ISO 6410/261 sourcing rules, and extensive refusal behavior (missing standards table, out-of-coverage size, rows lacking a dimension, DIN 332 form R). It does not mention permissions or that primitives are unrolled into a set of entities rather than a block, so it falls short of a perfect disclosure.

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?

Purpose is front-loaded in the first clause, then details follow. The text is dense and the standards-refusal sentences are long, but each sentence carries non-redundant technical content, so little is wasted.

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 mutation tool with a rich nested param schema and an output schema, the description supplies the coordinate convention, sourcing rules, and refusal conditions an agent needs. Return values are covered by the output schema, so nothing material 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?

Schema coverage is 100%, so baseline is 3, but the description adds genuinely extra meaning: the local frame semantics for x/y, and the rule that a thread size must name d's own thread are stated as behavior rather than just field docs. It does not add much beyond the per-kind params block already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a standard feature') and scopes it to 'geometry that already exists', which clearly separates it from siblings like std_part_insert or mech_part_draw. An agent can tell what this tool produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a context ('a foreign drawing being finished') and the precondition that geometry must already exist, which is implied usage guidance. But it never names an alternative tool or states when NOT to use it versus std_part_insert, mech_hole_pattern, or the entity_create_* family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

std_part_insertStandard Parts: InsertA

Define the part's block once, insert it, and write its std_part XDATA.

The block carries DESIG / STD / SIZE / MAT attributes and an ACADMCP_MECH payload, so a parts list is a read of the drawing rather than a naming convention. Refusals, all before any write: a designation outside the transcribed tables (named, with the nearest catalogue entries - nothing is drawn approximately), a malformed designation, a missing or stray nominal length, a view the family does not have, an attribute tag the block does not carry, and a non-finite coordinate or rotation.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesInsertion X (WCS)
yYesInsertion Y (WCS)
viewNoFasteners: side | top. Bearings: simplified (ISO 8826-1) | detailed (ISO 8826-2). The default 'side' falls back to the family's first view.side
layerNoLayer for the INSERT; the block's own primitives keep GEOMETRY / CENTER / HIDDENGEOMETRY
materialNoProperty class or material for the MAT attribute and the XDATA, e.g. '8.8'
rotationNoDegrees CCW; 0 puts the part's axis along +X
designationYes'ISO 4014 - M12x60', 'ISO 4032 - M12', 'ISO 7089 - M12', 'ISO 4762 - M8x30', 'ISO 15 - 6205' (a bare '6205' also works)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry readOnlyHint=false, so the description does real work: it discloses the block's attribute/XDATA payload (DESIG/STD/SIZE/MAT, ACADMCP_MECH) and, importantly, that all refusals happen before any write, i.e. the operation is effectively atomic. It does not mention layer creation behavior, undo/transaction interaction, or whether it overwrites an existing insert at the same point.

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?

Front-loaded with the core action, then a compact enumeration of the payload and refusals. Mostly earns its place, though the embedded 'nothing is drawn approximately' aside and the moderate list length add some stylistic padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with an output schema, the description supplies the behavioral and failure-mode context the schema and single annotation can't: payload contents, validation sources and the full refusal set. What's missing is any note on interaction with transactions/undo and whether repeated inserts are idempotent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage the baseline is 3, and the description adds genuine meaning on top: it explains the designation formats are table-validated, that 'view' must be one the family actually has, that material feeds the MAT attribute and XDATA, and that non-finite coordinates/rotation are rejected. These constraints go beyond the schema's per-field text.

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 ('Define the part's block once, insert it, and write its `std_part` XDATA'), so an agent knows this inserts a standard-part block reference plus XDATA. It doesn't explicitly contrast itself with close siblings like block_insert, mech_part_draw, or std_part_list, though the parts-list remark hints at the catalogue relationship.

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 by the described pre-write refusals (unknown designation, bad view, missing nominal length), which tells the agent the tool validates against transcribed tables. But there is no explicit when-to-use guidance, no named alternative (e.g. std_part_list for browsing, block_insert for generic blocks), and no stated prerequisites such as catalogue availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

std_part_listStandard Parts: CatalogueA
Read-only

Catalogue rows with the dimensions a drawing needs, and their provenance.

Every row is transcribed from the named standard's own table and carries its source. Coverage is deliberately narrow: ISO 261 first-choice sizes only (M5-M36, M3-M24 for ISO 4762) and ISO 15 bore numbers 00-10 in the 600x / 620x / 630x series. A size outside a table is refused by name by std_part_insert with the nearest entries, never interpolated. An unknown standard is refused with the list of catalogue standards.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree text matched against designation, standard, size and family - 'M12', 'ISO 4014', '6205', 'washer'
standardNoOne of ISO 4014, ISO 4017, ISO 4032, ISO 7089, ISO 4762, ISO 15

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: rows carry a `source` provenance field, coverage is deliberately narrow, and sizes outside a table are refused by name with nearest entries and never interpolated. That is useful, non-redundant disclosure.

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?

Three short sentences, front-loaded with the core purpose before the coverage caveats. Nothing is padded, though the coverage sentence packs several clauses that could be tightened.

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?

An output schema exists, so return values need not be spelled out, and the description covers scope limits and provenance adequately for a filtered lookup tool. It leaves the interplay with std_part_insert implicit, which is a minor gap rather than a blocking one.

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 100%, so both `query` and `standard` are already documented with examples and the allowed standard list. The description reinforces the coverage limits but adds no syntax or matching semantics beyond what the schema already provides. Baseline 3 applies.

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 it returns catalogue rows with dimensions and provenance, which is a concrete resource with clear scope. It distinguishes itself from std_part_insert by describing that insert refuses out-of-table sizes, though it does not name the sibling as an alternative in its own right. Slightly abstract framing ('Catalogue rows') keeps it from 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear coverage boundaries — ISO 261 first-choice M5-M36 (M3-M24 for ISO 4762) and ISO 15 bore numbers 00-10 in the 600x/620x/630x series — so an agent knows when this tool will have results. It also notes what happens for unknown standards. It does not, however, explicitly say when to call this versus std_part_insert (e.g., look up first, then insert).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

surface_textureSurface Texture Symbol (ISO 21920-1)A

Draw the 60° surface-texture vee with its annotation in the standard positions.

Refusals, all before the first entity reaches the drawing: a text height outside the seven ISO 1302 rows (2.5/3.5/5/7/10/14/20 mm — never interpolated), a lay that is not one of the seven ISO 1302 directions of lay, a machining outside any/required/prohibited, and a standard other than ISO 21920-1 or ISO 1302.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesSymbol apex X (WCS) — the point the leader attaches to.
yYesSymbol apex Y (WCS).
raNoRa value in µm, written as 'Ra 3.2'.
rzNoRz value in µm, written as 'Rz 12.5'.
layNoDirection of lay: parallel, perpendicular, crossed, multidirectional, circular, radial, particulate.
layerNoOverride the role layers (DIM for geometry, TEXT for text).
heightNoText height (mm). ISO 1302 tabulates 2.5, 3.5, 5, 7, 10, 14, 20.
processNoManufacturing method, treatment or coating, e.g. 'milled'.
rotationNoRotate the whole symbol about its apex (degrees CCW).
standardNoISO 21920-1 (default) or ISO 1302 for drawings issued under the older designation.ISO 21920-1
allowanceNoMachining allowance in mm, written below the extension line.
leader_toNo[x, y] on the surface; draws a leader with an arrowhead there.
machiningNoany (basic vee) | required (bar across the vee, material removal required) | prohibited (circle in the vee, material removal not allowed).any
all_aroundNoCircle at the kink: the requirement applies all around.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations supply only destructiveHint=false and a title, so the description carries most of the burden — and it does real work by enumerating the four pre-entity refusal classes and stressing that all validation happens before the first entity reaches the drawing (i.e. no partial symbols). It does not mention layer/side-effect behavior beyond the 'layer' parameter, but the atomicity guarantee is exactly the kind of trait annotations cannot express.

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?

Front-loaded with the drawing action in one sentence, then a compact refusal list rather than prose. The refusal sentence is long and packs four rules into one sentence, but every clause is load-bearing and nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter geometry tool with an output schema and thin annotations, the definition covers the drawing action, the validity contract, and the atomicity guarantee. Placement of optional fields (allowance, leader_to, all_around) is left entirely to the schema descriptions, which is acceptable but leaves the description slightly short of fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds constraint semantics the schema does not state outright — that text height is never interpolated across the seven tabulated rows, and that lay/machining/standard are closed sets enforced as refusals — which meaningfully changes how an agent must choose values.

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 ('Draw') and a specific resource ('the 60° surface-texture vee with its annotation'), with the standard named. It is unmistakably distinct from the neighboring symbol tools (weld_symbol, gd_frame, datum_feature, section_line), so an agent can pick it without opening the schema.

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 when the tool applies (ISO 21920-1 / ISO 1302 surface texture annotation) but never states when to prefer it over siblings like weld_symbol or gd_frame, nor any prerequisite such as an active drawing or layer state. The refusals list is a validity contract, not usage guidance, so the agent must infer the selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_aboutBackend InfoB
Read-only

Get detailed information about AutoCAD MCP Pro capabilities and available tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, covering the safety profile. The description adds that this tool provides information about capabilities and available tools, which is useful context, but it does not disclose any other behavioral traits such as whether this is a static snapshot or a live query. No contradiction with annotations 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?

The description is a single, front-loaded sentence with no wasted words. It states the action and the target resource clearly and is appropriately sized for a simple, parameterless introspection tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and readOnlyHint annotation, the description is mostly complete for a simple informational tool. However, the lack of disambiguation from system_capabilities and system_status leaves a meaningful contextual gap, since an agent cannot tell which introspection tool is the right one.

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 baseline of 4 applies. The empty input schema already confirms no arguments are needed, and the description does not need to add parameter-level detail.

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 ('AutoCAD MCP Pro capabilities and available tools') and a specific verb ('Get detailed information'), so an agent knows what the tool is for. However, it does not distinguish this from sibling tools like system_capabilities or system_status, which could easily be confused with the same purpose.

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 prefer system_about over similar sibling tools, and it names no alternatives or exclusions. Usage context is only implied by the verb 'Get', which is too weak for a tool family with several introspection-style siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_capabilitiesBackend CapabilitiesA
Read-only

Return machine-readable support modes for the active backend.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already present in annotations, the description adds only marginal behavioral context: the result is 'machine-readable' and scoped to the 'active backend'. No side effects or additional behavioral traits are disclosed, but there is no contradiction.

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 that directly states the action and resource. Every word earns its place with no redundancy or filler.

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 no-parameter, read-only introspection tool with an output schema present, the description is fully sufficient. An agent can invoke this tool immediately without missing prerequisites or needing to understand return-value details, since the output schema covers that.

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 description carries no parameter burden. Baseline 4 is appropriate because no parameter semantics are needed and the schema confirms there are no inputs.

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 ('Return') and a distinct resource ('machine-readable support modes for the active backend'). It clearly separates this from sibling tools like system_status or system_about, which concern status or general information rather than capability/support-mode discovery.

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 phrase 'for the active backend' gives clear context that this is for discovering what the current backend supports, and no exclusions or alternative tools are needed for a zero-parameter introspection call. It lacks explicit when-not-to-use guidance, but the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_get_variableGet System VariableB
Read-only

Get an AutoCAD system variable value.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystem variable name (e.g. DIMSCALE, LTSCALE, INSUNITS, CLAYER, MEASUREMENT)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares the read-only nature, and the description adds no behavioral detail beyond that, such as behavior for unknown variables, return formatting, or error handling. There is no contradiction, but also no additional transparency value.

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, clear sentence with no filler words or redundant information. It is appropriately sized for a simple one-parameter read-only tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameter set, readOnlyHint annotation, and presence of an output schema, the description is largely sufficient for an agent to call the tool correctly. It is missing only a brief note about when to prefer this over system_set_variable or system_status.

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 100%, and the single parameter 'name' includes concrete examples like DIMSCALE and LTSCALE. The description itself does not discuss parameters, so it relies entirely on the schema, which is sufficient for a baseline score.

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 action ('Get') and a clear resource ('AutoCAD system variable value'), making the tool's purpose immediately understandable. It does not explicitly distinguish itself from system_set_variable or other sibling tools, but the get/set contrast is strongly implied by the verb and resource.

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 system_set_variable, system_status, or system_capabilities. It only restates the basic operation without giving context, preconditions, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_launchLaunch / Attach AutoCADA

Connect to the application named by CAD_PROGID (attach if running, launch otherwise) and report launched, attached, version and the active document. Refusals: headless, capability: "live_application" (there is no application to launch); an open_path that fails path validation. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
visibleNoShow the application window
open_pathNoA .dwg/.dxf to open after attaching

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds real behavioral context — idempotent-ish attach-vs-launch semantics, the reported fields, and three explicit refusal conditions. That is well beyond the annotation surface, though it omits launch latency/failure handling.

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?

Front-loads the core behavior and refusal list in two dense sentences with no filler. The trailing "Pack: settings · lean: no" is internal jargon that costs a little clarity without adding meaning for an agent.

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?

An output schema exists, so return values needn't be spelled out (though the description lists them anyway). For a stateful connect-or-launch tool, the description covers the important failure modes; only environment prerequisites (e.g., how CAD_PROGID is set) are left implicit.

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 100%, so both `visible` and `open_path` are already documented in the schema. The description only adds that open_path is subject to path validation, which is marginal extra meaning over the schema baseline.

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 action (connect to the app named by CAD_PROGID) with the exact dual behavior (attach if running, launch otherwise) and the fields it reports. This distinguishes it cleanly from siblings like drawing_open, system_status, or document_activate.

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?

Gives concrete refusal conditions (headless mode, capability "live_application", failing open_path validation), which effectively tells the agent when the tool will not work. It stops short of explicitly naming the alternative to use in those cases (e.g., what to do in a headless session).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_preferences_getGet PreferencesA
Read-only

The whitelisted Preferences.* values, enum values as names (SaveAsType: "ac2018_dwg"), with read_only naming the four Files.* paths. Refusals: headless, capability: "preferences" (they live in the running application, not in a file); a key outside the whitelist. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysNoSubset of OpenSave.SaveAsType, OpenSave.AutoSaveInterval, OpenSave.CreateBackup, OpenSave.IncrementalSavePercent, Display.CursorSize, Drafting.AutoSnapMarkerSize, Drafting.AutoSnapTooltip, Selection.PickBoxSize, Output.DefaultPlotStyleTable, Output.DefaultOutputDevice, Files.SupportPath, Files.TemplateDwgPath, Files.PrinterStyleSheetPath, Files.PrinterConfigPath; omit for all

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds substantive context beyond annotations: the whitelist constraint, enum-as-name formatting, and the three refusal conditions including the explanation that preferences live in the running application rather than a file. This is genuinely useful 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded and dense, but the phrasing is telegraphic and relies on jargon ('whitelisted', 'Pack: settings · lean: no') that is not self-explanatory. The trailing 'Pack · lean' fragment occupies space without clear meaning for an agent.

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?

An output schema exists, so return values need not be spelled out, and the description covers the whitelist scope, value formatting, and failure modes. For a single-optional-parameter read tool this is close to complete, lacking only a cross-reference to the setter sibling.

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 100% and the `keys` schema already enumerates every whitelisted key, so the baseline is 3. The description reinforces the whitelist boundary and gives one enum example, but adds little syntax or format information the schema does not already carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (whitelisted `Preferences.*` values) and adds concrete output detail (enum values as names, `read_only` naming Files.* paths), but never states an explicit verb like 'returns' or 'gets' — the read action is only implied by the name/title. It also does not differentiate from the sibling system_preferences_set, which an agent could easily confuse.

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 explicit when-not conditions via 'Refusals': headless, `capability: "preferences"`, and a key outside the whitelist. That tells an agent when this call will fail, which is meaningful guidance, though it never names system_preferences_set as the counterpart tool or explains when to prefer one over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_preferences_setSet PreferenceA

Write one preference and report old, new and changed.

Refusals, all before any write: a read-only key (Files.*), an unknown key, a value of the wrong type, an int outside the authored range (AutoSaveInterval 0–600 min, CursorSize 1–100, PickBoxSize 0–50, …), an unknown SaveAsType name; headless, capability: "preferences". Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesA writable key from system_preferences_get
valueYesNew value: bool, int within the key's range, string, or an enum name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes further by stating refusals occur "before any write" (atomicity/no partial mutation), enumerating validated ranges, and disclosing the headless capability requirement. It adds genuine behavioral context beyond the annotations, though it does not discuss auth beyond the capability gate.

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?

Front-loaded with purpose, then a tightly grouped refusal clause; nearly every phrase carries information. The trailing "Pack: settings · lean: no." metadata is terse and unexplained, a small amount of noise, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so the description need not explain return values, and it still notes the old/new/changed report and all pre-write validation gates. For a 2-parameter mutation with full schema coverage and annotations, this is essentially complete, with only the get-then-set workflow left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description supplies concrete range semantics the schema omits (AutoSaveInterval 0–600 min, CursorSize 1–100, PickBoxSize 0–50, enum SaveAsType names). That meaningfully enriches what is otherwise a generic bool/int/string/enum parameter.

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+resource ("Write one preference") and its report contract, and the singular scoping ("one preference") distinguishes it from a bulk settings writer. The existence of sibling system_preferences_get makes the read/write split legible immediately.

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 refusal list is excellent when-not guidance: read-only keys, unknown keys, wrong type, out-of-range ints, unknown SaveAsType, and headless/capability conditions are all enumerated. It does not, however, name an alternative or explicitly instruct the agent to source keys from system_preferences_get (only the schema hints at that), so it stops 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.

system_prompt_messageCommand-Line MessageB

Utility.Prompt: tell the operator something where they are looking. Nothing in the drawing changes. Refusals: an empty message; headless, capability: "interactive_prompt". Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe message; one line is best

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false. The description goes further by stating 'Nothing in the drawing changes' (consistent with destructiveHint=false, since the write is to the prompt area, not the drawing) and by enumerating concrete failure modes: empty messages are refused and headless contexts require capability 'interactive_prompt'. That is real behavioral context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and constraints are front-loaded and the text is short. But 'Pack: settings · lean: no' is opaque internal jargon that an agent cannot act on, and it dilutes otherwise efficient prose.

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?

An output schema exists so return values need not be described, and the failure conditions are covered. Still, an agent gets no clear statement of the tool's role among siblings and the 'Pack/lean' shorthand is left unexplained, leaving the picture partially incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter and 100% schema coverage, the baseline is 3. The description adds meaningful semantics beyond the schema's 'The message; one line is best': it specifies that an empty message is refused, which is a validation constraint the schema does not encode.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening '`Utility.Prompt`: tell the operator something where they are looking' conveys that this surfaces a message to the user, and it is distinguishable from the many drawing-modifying siblings. However, the phrasing is oblique ('where they are looking') and the cryptic 'Pack: settings · lean: no' adds no clarity about what the tool actually does. Verb+resource is present but vague.

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 refusal conditions (empty message, headless without the interactive_prompt capability) which hint at when the tool will not work, but it never states when to reach for this tool versus alternatives or what it is for in a workflow. No positive usage guidance is offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_run_commandRun AutoCAD CommandA

Execute an AutoCAD command string directly (COM backend only).

Append \n for Enter. Example: '_LINE 0,0 100,0 \n'.

IMPORTANT: commands that finish at an option menu (e.g. -LINETYPE, -LAYER, -STYLE return to '[?/Create/Load/Set]:' after their action) need an EXTRA blank line or 'X\n' to exit, otherwise AutoCAD stays at a prompt and the next COM call will deadlock. Example: '-LINETYPE _LOAD CENTER acad.lin\n\n'.

A verb denylist refuses obviously destructive commands, but it is a guardrail against issuing ERASE ALL by accident, NOT a security boundary — AutoCAD accepts hundreds of commands and any loaded ARX/LISP adds more. Prefer the typed tools (entity_delete, drawing_save_as, block_insert, drawing_purge): they validate their arguments, which a free-text command string cannot.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesAutoCAD command string (e.g. '_ZOOM E', '_REGEN', '_EXPLODE')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses critical behavior not visible in annotations: the need to append '\n' for Enter, the extra blank line or '_X\n' to exit option menus, and the deadlock risk if the prompt is left open. It also reveals the verb denylist as a guardrail, not a security boundary, which is an important caveat for the agent.

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 longer than average but every sentence carries meaningful information: a usage pattern, a deadlock warning, and a guardrail/security clarification. It is structured with the example first and the warning clearly marked 'IMPORTANT'. Slight redundancy in the example could be trimmed but the length is justified by the complexity.

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?

The description fully covers the single parameter's syntax, the most common failure mode (deadlock), the limitations of the denylist, and exactly which sibling tools to use instead. With the output schema and annotations present, nothing critical is missing 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?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the '\n' convention, giving examples, and describing the extra blank line requirement for commands ending at option menus. This goes beyond the schema's simple 'AutoCAD command string' description.

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 'Execute an AutoCAD command string directly (COM backend only)', which clearly identifies the verb (execute), resource (AutoCAD command string), and the technical context (COM backend). It is also differentiated from sibling tools like system_run_lisp by its focus on command strings rather than LISP code.

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?

The description explicitly tells the agent to prefer typed sibling tools (entity_delete, drawing_save_as, block_insert, drawing_purge) and explains why: they validate arguments. It also warns against using this tool for destructive commands, which is clear guidance on when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_run_lispExecute AutoLISPA

Execute an AutoLISP expression (COM backend only).

Example: '(setvar "DIMSCALE" 1.0)'

A symbol denylist refuses the known code-execution and file-I/O channels; text inside double quotes is treated as data, so drawing notes are not mistaken for code. It is a guardrail, NOT a security boundary — AutoLISP has more write channels than any denylist enumerates. Prefer the typed tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesAutoLISP expression to evaluate (e.g. '(command "ZOOM" "E")')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is transparent about the denylist, quotes-as-data behavior, and warns it is 'NOT a security boundary' with write channels beyond the denylist. However, the annotation readOnlyHint:true directly contradicts this, since executing arbitrary AutoLISP can mutate drawing state. This is a serious annotation contradiction, so the score is 1.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose, immediately gives an example, and uses every remaining sentence to convey necessary safety context. It is appropriately sized for a potentially dangerous escape-hatch tool with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an arbitrary LISP execution tool, the description covers backend, usage example, guardrail limitations, and recommends safer alternatives; the output schema handles return formatting. The main gap is the contradiction with readOnlyHint and the lack of explicit error/rollback behavior, but overall it is reasonably complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single 'expression' parameter with 100% coverage, giving a baseline of 3. The description adds meaningful extra semantics by explaining that text inside double quotes is treated as data and by providing a concrete example, which clarifies how to construct the expression string.

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 ('Execute') and resource ('AutoLISP expression') and adds the constraint 'COM backend only'. The example makes the intended use clear. However, it does not explicitly distinguish itself from similar siblings like lisp_execute_code or lisp_load_macro, so differentiation is left implicit.

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?

Provides clear guidance to 'Prefer the typed tools', steering agents toward safer alternatives and implying this is a fallback. The COM backend restriction is a concrete usage constraint. It does not name specific typed tools or state exactly when raw LISP is the only option, leaving some room for inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_set_variableSet System VariableA

Set an AutoCAD system variable (e.g. DIMSCALE, LTSCALE, MEASUREMENT).

Refusals, before anything is written: a value outside the catalogued range or enum of a known variable, or a write to a read-only variable (DIMSTYLE, CANNOSCALEVALUE, DWGNAME, …), is refused with the catalogue's message — system_variable_describe(name) shows the range. A variable the catalogue does not know is passed through unchanged. The headless engine additionally refuses registry-saved variables (capability: registry_sysvar) because a file has nowhere to keep them, and names that ezdxf has no header slot for (a ValueError naming the variable).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystem variable name
valueYesNew variable value

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=false available, the description carries the burden and does so well: it enumerates refusal paths (out-of-range, read-only variables, headless registry_sysvar, missing ezdxf header slot), the passthrough behavior for unknown variables, and the ValueError surface. This is well beyond what annotations convey.

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 core action is front-loaded in the first sentence, and the refusal semantics follow logically. The second and third sentences are dense with parentheticals but each clause carries distinct behavioral information, so little is wasted.

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?

An output schema exists so return values need not be described, and annotations cover the write flag. Given that, the description supplies exactly the missing pieces: validation/refusal behavior, passthrough semantics, and engine-specific limitations that an agent needs to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, so the schema already documents name and value. The description adds contextual meaning (that value is validated against a catalogue range/enum for known variables) but no syntax or format detail beyond that; baseline 3 applies.

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 and resource ('Set an AutoCAD system variable') and immediately grounds it with concrete examples (DIMSCALE, LTSCALE, MEASUREMENT). It even hints at its sibling relationship by referencing system_variable_describe for range lookup, so an agent can place it precisely in the tool family.

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?

Explains the conditions under which writes are refused and directs the agent to system_variable_describe to check ranges, which is real usage guidance. It does not, however, contrast itself against nearby mutation tools like system_preferences_set or system_run_command, so the routing story is slightly incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_statusServer StatusA
Read-only

Get full status of the AutoCAD MCP Pro server and backend connection.

Returns backend name, connection status, capabilities, document info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, indicating a safe read operation. The description adds a brief note on what is returned but does not disclose details like latency, failure modes, or what 'full status' means operationally (e.g., what happens if backend is unreachable). With readOnlyHint covering the safety profile, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and resource, followed by a concise list of return categories. Every sentence earns its place and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless status/health tool, the description covers the core purpose and return categories. An output schema exists, explaining return values. It could additionally clarify how this differs from system_capabilities and system_about, but that gap is minor given the simple scope. Overall, it is complete enough for an agent to invoke 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, and schema coverage is 100% (vacuous). There are no parameter semantics to clarify, and the description sensibly focuses on return values instead. For a no-parameter tool, the description provides enough guidance on what the call will yield.

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 'Get full status of the AutoCAD MCP Pro server and backend connection' with a specific verb and resource, and then enumerates the returns: backend name, connection status, capabilities, document info. It distinguishes itself from sibling tools like system_capabilities and system_about by focusing on status and connection details, though it doesn't explicitly name those 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?

The description implies this is the go-to health/status check tool, and the context of sibling tools like system_capabilities and drawing_info provides some differentiation. However, it does not explicitly state when to use this versus alternatives, such as when system_capabilities would be more appropriate. The usage context is only implied by the title and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_variable_describeDescribe System VariableA
Read-only

What an AutoCAD system variable means, from an authored catalogue of 90.

With name: {known, name, type, range|enum, default, meaning, saved_in (drawing|registry|not_saved), engines: {ezdxf, com}, friendly_key, read_only} plus current when the active backend can read it (omitted, with current_unavailable, when it cannot — no document open, or a registry variable headlessly). An unknown name is never an error: known: false and the nearest catalogue names come back. With search: every row whose name or meaning contains all the words. With neither: the index of names. friendly_key names the drawing_settings key that wraps the variable, which is the preferred way to set it; engines.ezdxf: false means the headless engine refuses a write (registry-saved, or no header slot in ezdxf).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSystem variable name, e.g. LTSCALE (case-insensitive, '$' optional)
searchNoFree text matched against names and meanings, e.g. 'decimal separator'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give only readOnlyHint=true; the description carries substantial extra context: unknown names are never an error (known:false plus nearest catalogue names), `current` is omitted with a `current_unavailable` reason when the backend cannot read it (no document open, registry variable headlessly), and engines.ezdxf:false signals a refused write. That is rich behavioral disclosure beyond the annotation.

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?

Front-loaded with the core purpose in the first line, then the three modes and edge cases. Dense but every clause earns its place; the parenthetical about friendly_key/engines is long but conveys non-obvious operational facts rather than filler.

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?

An output schema exists, so return values need not be explained, yet the description still enumerates the returned fields and their edge cases, and covers all three input modes plus failure behavior. Nothing an agent needs to call this 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?

Schema coverage is already 100%, so the baseline is 3, but the description adds genuine semantics the schema lacks: `search` matches rows whose name OR meaning contains all the words, and `name` accepts a '$'-optional, case-insensitive form. This meaningfully enriches how the two parameters behave.

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+resource: it describes what an AutoCAD system variable means, sourcing from 'an authored catalogue of 90'. The three operating modes are spelled out, so an agent can distinguish this lookup tool from system_get_variable and system_set_variable 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes between the three invocation shapes: `name` for a single variable, `search` for free-text over names/meanings, and neither for the index of names, plus a fallback for unknown names. It does not, however, contrast itself against the sibling system_get_variable, which is the one remaining piece of routing guidance an agent might want.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_apply_layersApply Layer TemplateA

Apply a standard layer set from a predefined template.

Available templates: architectural, mechanical, electrical, piping. Creates all layers defined in the template with standard colors and lineweights.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateYesTemplate name: architectural, mechanical, electrical, piping

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only provide readOnlyHint=false, so the description carries the burden of explaining the mutation. It does so by stating it 'Creates all layers defined in the template with standard colors and lineweights.' It does not mention behavior around existing layers, duplicates, or overwriting, which prevents a 5, but the core side effect is clear and does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the available templates listed immediately and the effect stated in one sentence. Minor redundancy between 'standard layer set' and 'standard colors and lineweights' keeps it from being a flawless 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema present, the description is adequate: it identifies the template choices and the resulting layer creation behavior. It could be slightly more complete by noting what happens when layers already exist or by referencing the sibling template_list for checking template availability.

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 100% and the description simply repeats the template values already present in the schema ('architectural, mechanical, electrical, piping'). It adds no additional meaning beyond the schema, so a baseline 3 is appropriate.

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 ('Apply') and resource ('standard layer set from a predefined template'), then enumerates the exact templates available. This clearly distinguishes the tool from generic layer creation tools like layer_create or drawing_apply_iso_layers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you need an architectural, mechanical, electrical, or piping layer set. However, it does not explicitly state when to prefer this over sibling tools such as template_list or drawing_apply_iso_layers, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_listList Available TemplatesA
Read-only

List all available layer templates and their contents.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals this is a safe read operation. The description adds the scope 'available' and the fact that contents are included, but provides no additional behavioral context such as whether results are ordered, limited, or derived from the current drawing. This is adequate given the annotation coverage, though not especially rich.

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. Every word contributes to the tool's purpose and scope.

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 zero-parameter, read-only listing tool with an output schema and readOnlyHint annotation, this description is complete. An agent can correctly determine what the tool does and what it returns without needing additional explanation.

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 description does not need to explain parameter semantics. The schema fully documents the empty parameter set, and the baseline of 4 for parameterless tools applies.

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 ('List'), a precise resource ('all available layer templates'), and the scope of the result ('their contents'). This distinguishes it from related siblings like template_apply_layers, which performs an action rather than a read-only listing.

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 makes the tool's purpose clear and implies it should be used when an agent needs to inspect available layer templates. However, it does not explicitly state when to prefer this tool over alternatives such as template_apply_layers or layer_list, leaving the usage context mostly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

text_find_replaceFind and Replace TextA

Replace text in TEXT, MTEXT and block attributes (ATTRIB and ATTDEF).

searched_types is on the response because "no matches" and "that type was never searched" are different answers. Block definitions are included, so the next insert does not reintroduce the old text. DIMENSION text is out of scope: its text field holds the <> override placeholder rather than the measurement, so editing it would break the association. A multi-line attribute is matched and rewritten as the whole value (Line1\PLine2), the same value block_get_attributes reports and block_explode bursts.

ParametersJSON Schema
NameRequiredDescriptionDefault
findYesLiteral text to search for (not a regex).
layerNoRestrict to one layer. Empty searches every layer.
dry_runNoReport what would change without changing it.
replaceYesReplacement text.
match_caseNoCase-sensitive search.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint=false annotation: it discloses the side effect that block *definitions* are rewritten (so re-inserts don't resurrect old text), that searched_types is returned to disambiguate 'no matches' from 'type never searched', and how multi-line attribute values are represented and rewritten. These are non-obvious behavioral traits an agent needs.

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?

Front-loads the affected entity types, then justifies each constraint (searched_types, block definitions, DIMENSION exclusion, multi-line attrs) without padding. Slightly dense and reliant on backticked identifiers, but every sentence carries information.

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 mutation tool with an output schema, this covers what an agent needs: scope, exclusions with rationale, side effects on block definitions, and edge-case handling for multi-line attributes. Nothing material is left inferred.

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 100%, so find/replace/layer/dry_run/match_case are already documented, and the description adds no parameter-level syntax or defaults. Its mention of searched_types relates to the response, not an input parameter, so it earns only the baseline.

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+resource (replace text) and immediately bounds the resource set: TEXT, MTEXT, ATTRIB and ATTDEF. It also carves out what is NOT in scope (DIMENSION text) with a concrete reason, so an agent can distinguish this from a generic text editor without opening the schema.

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?

Gives a clear when-to-use context (bulk/global text replacement across text entities and block attributes) plus an explicit exclusion for DIMENSION text. It does not name a sibling alternative such as entity_edit_text for single-entity edits, so it stops short of full when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

text_set_backgroundSet Text BackgroundA

Mask what is behind an MTEXT so it stays readable over hatch or geometry.

MTEXT only: TEXT has no background-fill attribute, so setting one on it would report success and change nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoACI background colour (1-255). 0 uses the drawing background.
scaleNoBox size as a multiple of the text box; must be >= 1.
handleYesHandle of an MTEXT entity.
enabledNoFalse removes the background box.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry destructiveHint=false and a title, so the description bears the transparency burden. It discloses a genuinely non-obvious behavior: applying a background to a TEXT entity 'would report success and change nothing' — a silent no-op failure mode. This is exactly the kind of behavioral insight an agent needs and cannot infer from the 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?

Two short sentences with zero filler. The primary purpose is front-loaded, and the critical MTEXT-only constraint follows immediately. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with 100% schema coverage and an output schema, the description carries the essential context: the use case, the limitation, and the failure mode. It does not cover behavior for invalid handles or non-MTEXT/non-TEXT entities, but the 'MTEXT only' framing plus the TEXT warning cover the realistic failure cases sufficiently.

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 100%, with color, scale, handle, and enabled all documented in the input schema itself. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.

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 and resource — 'Mask what is behind an MTEXT' — and explains the purpose (keeping text readable over hatch or geometry). It also distinguishes this tool from anything targeting TEXT entities, which uniquely identifies its scope among siblings like entity_create_mtext and entity_create_wipeout.

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 context for when to use the tool (when MTEXT needs readability over hatch/geometry) and an explicit exclusion: TEXT has no background-fill attribute, so using it on TEXT would silently do nothing. It does not name an alternative tool (e.g., entity_create_wipeout) for masking behind generic geometry, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

textstyle_createStyles: Create Text StyleA

Create a text style.

Headlessly a font nobody can find is written and reported font_resolved: false (AutoCAD substitutes at open; the headless renderer falls back), because a DXF stores only the name. The live engine cannot do that: ActiveX refuses a font AutoCAD cannot open, so a file that is neither on its support path nor in the Windows Fonts folder is refused there before any write (the message names the folders and the presets); a TrueType font is written by its typeface (SetFont, what the STYLE dialog does — the record carries arial.ttf, never a machine path), an SHX by the file name. Refuses, before any write on both engines: a name that exists, an empty font, width_factor <= 0, height < 0, an oblique angle outside ±85°.

ParametersJSON Schema
NameRequiredDescriptionDefault
fontYesisocp.shx | isocpeur.ttf | arial.ttf | romans.shx (name or file, any case) or any font file
nameYesNew text style name, e.g. ISOCP
heightNoFixed height; 0 = ask per text
oblique_degNoObliquing angle in degrees, -85..85
set_currentNoAlso make it the current text style
width_factorNoWidth factor

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations providing only readOnlyHint=false, the description carries the behavioral load richly: it discloses headless vs. live engine differences, that a missing font is written and reported font_resolved:false headlessly but refused live, that TrueType is written by typeface while SHX by filename, and the exact pre-write refusal conditions (duplicate name, empty font, width_factor<=0, height<0, oblique outside ±85°). This is substantial context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in one short sentence, which is good, but the following paragraph is a dense, em-dash-heavy block that is hard to parse ('Headlessly a font nobody can find is *written*...'). Much of it earns its place, but the structure sacrifices readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with an output schema (font_resolved) and full param coverage, the description is nearly complete on behavior. It omits auth/prerequisite notes and doesn't clarify the set_current side effect, but these are minor given the schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning for the font parameter (typeface vs. file name, e.g. arial.ttf vs SHX) and ties refusal rules to width_factor, height, and oblique_deg. It enriches the parameters rather than merely restating them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource ('Create a text style'), which an agent can distinguish from siblings like textstyle_list and textstyle_set_current by name and verb. However, the description never explicitly names or contrasts those siblings, so it stops short of full sibling differentiation.

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 create use-case and enumerates valid input conditions and refusal triggers, which helps invoke it correctly, but it gives no explicit 'use this when... vs. textstyle_set_current / textstyle_list' guidance. Context is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

textstyle_listStyles: List Text StylesC
Read-only

Every STYLE table entry and the one new TEXT/MTEXT will use.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation already establishes this is a safe read, so the description carries a lower burden, but it adds no behavioral context at all (no mention of what is returned, that it enumerates all styles, or any scoping). Its phrasing about 'the one new TEXT/MTEXT will use' is confusing and implies a relationship rather than disclosing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but length is not the issue: the single sentence is grammatically broken and not front-loaded with the action. It reads as a leftover clause rather than a deliberate, self-contained statement of what the tool does.

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?

An output schema exists so return values need not be explained, and an empty parameter list keeps the surface small. However, the description is too garbled to tell an agent what the tool returns or when it applies, which is inadequate even for this simple read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to document; the baseline for a parameterless tool is 4. The description neither helps nor harms parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a grammatical fragment ('Every STYLE table entry and the one new TEXT/MTEXT will use.') that never states a clear verb-resource pair such as 'list text styles.' The title carries the actual purpose, and the description only gestures at style-table entries being associated with new text, which is closer to tautology than a distinct purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternatives such as textstyle_create or textstyle_set_current. The sentence appears to describe a side effect rather than a circumstance for invoking this tool, leaving the agent with nothing to route on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

textstyle_set_currentStyles: Set Current Text StyleA

Set $TEXTSTYLE; entity_create_text / entity_create_mtext then carry the style on both engines. Refuses a style the drawing does not hold. Returns previous and changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesText style to make current (case-insensitive)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the sparse annotations (only readOnlyHint=false) by disclosing that this mutates $TEXTSTYLE, that the effect propagates to subsequent text/mtext creation on both engines, and that an unknown style name is rejected. Return fields are stated, though an output schema already covers them.

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?

Three short clauses with the core action front-loaded and zero filler; each clause (effect, precondition, return) earns its place.

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 one-parameter mutation with annotations plus an output schema, the description covers the mutation target, scope of effect, failure condition, and return fields. Nothing an agent needs to call 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?

Schema coverage is 100% (baseline 3), and the description adds real semantic value: the name must reference a style the drawing already holds or the call is refused, constraining the valid domain of the single parameter.

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 (Set) and resource ($TEXTSTYLE / text style), then explains the downstream effect on entity_create_text / entity_create_mtext. This distinguishes it from textstyle_list and textstyle_create by describing what 'current' actually means on both engines.

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 refusal clause ('Refuses a style the drawing does not hold') implies a precondition that the style must already exist, which points toward textstyle_create first. However, no sibling is named as an alternative and there is no explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

titleblock_applySheet: ISO 7200 Title BlockA

ISO 7200 title block, 180 mm wide, in the lower-right corner of any A4-A0 sheet. The title text is used verbatim.

Carries the ISO 128-30 projection-angle symbol: 'first' draws the cone on the left and the concentric circles on the right, 'third' is its mirror. Refusals, all before the first entity: an unknown size (the five covered sizes are listed), an unknown orientation, a projection that is not 'first'/'third'/'', a layout that does not exist. titleblock_apply_iso_a3 is this tool with size='A3' and no symbol, kept so no caller breaks.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
sizeNoISO 216 sheet: A4, A3, A2, A1 or A0.A3
frameNoAlso draw the ISO 5457 frame around the block.
marksNoAdd the centring and trimming marks.
scaleNo1:1
sheetNo1/1
titleYesDrawing title (verbatim, no transformation).
unitsNomm
zonesNoAdd the zone grid to that frame.
layoutNoPaper-space layout to draw the sheet on; empty draws in the current space.
companyNoAnka-Makine
part_noNo
drawn_byNo
materialNo
origin_xNo
origin_yNo
revisionNoA
checked_byNo
drawing_noYesIdentification number, e.g. 'AM-2026-001'.
projectionNoProjection-angle symbol: 'first' (ISO/European, the default), 'third' (ANSI), or '' for no symbol.first
orientationNo'landscape' or 'portrait'.landscape

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only destructiveHint=false in annotations, the description carries most of the burden and delivers: refusals happen 'all before the first entity' (so failures are atomic and leave no partial drawing), title text is used verbatim, and the projection symbol's visual output is described. It does not state layer placement, idempotency, or whether repeated calls stack duplicate blocks.

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?

Front-loads what the tool draws, then symbol semantics, then refusal behavior, then sibling routing. Dense but well-ordered with no filler, though the refusal enumeration is a long compound sentence that could be tightened.

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 21-parameter mutation tool with an output schema (return values need not be explained) and destructiveHint=false, the description covers geometry, validation/refusal semantics, symbol behavior, and family routing. Nothing critical to invoking it correctly appears to be missing.

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 only 43%, so the description is expected to compensate, and it partially does: it pins the size set (five sizes), the projection values, and the layout-existence requirement. However, the many text fields (company, part_no, revision, scale, sheet, origin_x/y, frame/marks/zones) are left to the schema or to guesswork, so roughly half the parameters still carry no added meaning.

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 action (apply/draw an ISO 7200 title block) with concrete geometry (180 mm, lower-right corner, A4-A0) and explicitly distinguishes itself from the near-duplicate sibling titleblock_apply_iso_a3. An agent knows exactly what this produces without opening the schema.

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 sibling note ('this tool with size=A3 and no symbol, kept so no caller breaks') gives clear routing context for the most confusable alternative, and the refusal list tells the caller what it will reject. It does not compare against other sheet-composition tools like sheet_frame or drawing_apply_standard, so no explicit when-not guidance for the broader family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

titleblock_apply_iso_a3TitleBlock: ISO A3A

ISO 7200 / A3 (420x297 mm) title block. Title text is used verbatim.

Pass layout to put the sheet on a paper-space layout, which is where a title block belongs — the border frames the printed sheet, not the model. Your current space is restored afterwards, so asking for a border does not move you onto the sheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
scaleNo1:1
sheetNo1/1
titleYesDrawing title (verbatim, no LLM transformation).
unitsNomm
layoutNoPaper-space layout to draw the sheet on (create it with layout_create). Empty draws in the current space, as before.
companyNoAnka-Makine
part_noNo
drawn_byNo
materialNo
origin_xNo
origin_yNo
revisionNoA
checked_byNo
drawing_noYesDrawing number (e.g. 'AM-2026-001').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses meaningful behavior beyond the annotations: title text is used verbatim with no LLM transformation, the border frames the printed sheet rather than the model, and the current space is restored afterward. These are exactly the behavioral details an agent needs and none contradict 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?

Three focused sentences: the specification is stated first, followed by the essential layout nuance and the restoration guarantee. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Behavioral guidance is solid and an output schema exists, so return values are covered. However, the tool has 15 parameters and very low schema coverage, and the description leaves most parameter semantics to inference. It also does not mention prerequisites like an open drawing or explicitly pointing to layout_create, though the schema does reference layout_create.

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?

The description adds value for 'title' (verbatim usage) and 'layout' (paper-space behavior and space restoration), but schema coverage is only 20% across 15 parameters. Most parameters such as date, scale, units, origin_x, origin_y, material, revision, and checked_by receive no semantic elaboration, so the description does not 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 clearly identifies the resource as an ISO 7200 / A3 (420x297 mm) title block and implies the operation of applying/creating it. It does not explicitly state an action verb like 'creates' or 'applies', and it does not contrast with sibling tools, but the title and context make the purpose unambiguous.

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 strong when-to-use guidance: pass 'layout' when the title block belongs on a paper-space layout, and explains why it belongs there (it frames the printed sheet, not the model). It also reassures that the current space is restored. It does not name alternatives or explicitly say when not to use it, but no sibling tool appears to duplicate title-block creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transaction_beginBegin TransactionA

Begin a transaction (undo mark).

COM backend: Sets AutoCAD undo mark. All subsequent operations can be rolled back to this point with transaction_rollback.

ezdxf backend: Saves a DXF snapshot. Rollback restores the full document state to this point.

Always pair with transaction_commit or transaction_rollback.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals meaningful behavioral traits: it sets an AutoCAD undo mark in COM, saves a DXF snapshot in ezdxf, and supports rollback of subsequent operations. It also mandates pairing with commit or rollback, which is essential behavioral guidance not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose ('Begin a transaction'). Backend differences are organized clearly under labeled sections, and the pairing requirement is a single closing sentence. No filler or redundant material.

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?

The description fully covers the tool's behavior across both supported backends and states the necessary pairing with commit/rollback. With no parameters and an output schema present, nothing essential is missing for an agent to correctly invoke and reason about this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description does not need to explain parameter semantics. With no parameters, the baseline is 4, and the description reasonably focuses on behavior rather than arguments.

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?

Description opens with 'Begin a transaction (undo mark)', a specific verb and resource that clearly defines the operation. The backend-specific details (COM undo mark vs ezdxf DXF snapshot) further distinguish it from related transaction_commit and transaction_rollback tools.

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 provides clear context by explaining what the transaction does in both backends and explicitly states 'Always pair with transaction_commit or transaction_rollback.' It does not explicitly discuss when not to use it or compare it to drawing_undo, so it stops 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.

transaction_commitCommit TransactionA

Commit the current transaction.

COM: Ends the undo mark (changes are permanent but still undoable via drawing_undo). ezdxf: Discards the rollback snapshot (changes are kept).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint=false and destructiveHint=false, the description adds meaningful state semantics: it ends the COM undo mark, retains undoability via drawing_undo, and discards the ezdxf rollback snapshot. This clarifies what 'permanent' means and prevents the agent from assuming the changes become un-undoable. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core operation, and each engine-specific line adds a distinct fact about behavior. There is no filler or repetition of schema or annotation data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter commit operation, the description covers the important behavior and an output schema exists to describe the return value. The only gap is that it does not state the precondition that a transaction must already be active, or the behavior if none is. This is minor but enough to keep it below a 5.

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 and the schema coverage is 100%, so there is nothing for the description to add beyond what the schema already conveys. Baseline 4 applies for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the operation and its object explicitly ('Commit the current transaction'), so an agent knows this finalizes an in-progress transaction. The engine-specific notes clarify what commit means in each backend, and the name distinguishes it from transaction_begin and transaction_rollback, though no sibling is named directly.

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 this tool is used when a transaction is active and changes should be kept, but it never explicitly says 'use this instead of transaction_rollback' or what happens if no transaction is open. A capable agent can infer it from the COM/ezdxf effects, but the guidance is not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transaction_rollbackRollback TransactionA
Destructive

Rollback the current transaction to the point of transaction_begin.

COM: Undoes all operations back to the UNDO Mark transaction_begin set; refused (ok: false) when no transaction is active. ezdxf: Restores the document from the saved DXF snapshot.

WARNING: This is destructive – all changes since transaction_begin are lost.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description adds meaningful context beyond them: the exact scope of loss (all changes since transaction_begin), the failure mode (`ok: false` when no active transaction), and divergent behavior between COM and ezdxf backends.

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?

Front-loads the core action, then separates backend-specific behavior and ends with a prominent warning. It is somewhat verbose with two backend notes, but every sentence adds information for the caller.

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?

Given that an output schema exists, return values need not be explained, and annotations cover the destructive safety profile. The description still supplies backend behavior and a failure mode, making it complete enough for an agent to invoke 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 takes zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. Baseline 4 applies since there are no parameters to explain.

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 (Rollback) and resource (current transaction), anchoring it to the point of transaction_begin. This clearly distinguishes it from sibling transaction_commit and drawing_undo, and adds backend-specific semantics for COM vs ezdxf.

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?

Provides a clear context: it rolls back to transaction_begin and is refused when no transaction is active, which implies it must follow transaction_begin. It does not explicitly name transaction_commit as the alternative to keep changes, so it stops short of full when/when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ucs_listList UCSB
Read-only

The world row first, then every UCS table entry with origin and unit axes, current on the active one. world is current only when the frame IS the WCS (WORLDUCS live, the $UCS* header headless) — an unnamed UCS (UCS Origin / 3P without saving) has an empty name too and is reported as a trailing row with name: null and its origin/axes, so current is null then and never world. Tool coordinates stay WCS on both engines whatever is current. No refusals. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses rich behavioral context: the guaranteed 'world' row, the condition for 'current' to be world, handling of unnamed UCS as a trailing row with null name, and 'No refusals.' These are useful edge-case behaviors not covered by annotations, though the phrasing is dense and could be clearer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one long, dense paragraph that is not front-loaded with a clear purpose. It includes cryptic fragments like 'Pack: settings · lean: no.' that do not obviously help an agent invoke the tool, and the overall structure is hard to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, the description need not explain return values, yet it spends most of its text on output semantics. It adds valuable edge-case context for a complex domain, but it fails to state the tool's basic purpose or when to call it, leaving the definition only minimally complete for an agent.

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 the baseline of 4 applies. The description adds no parameter information, which is appropriate since there are none to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never states a clear verb+resource like 'Lists all UCS definitions'; instead it starts mid-thought with 'The world row first...', forcing the reader to infer the purpose from the returned content. It does distinguish the tool from siblings by describing the list output, but the lack of a direct purpose statement makes it only adequately 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?

The description gives no guidance on when to use ucs_list versus ucs_set or ucs_restore. It provides interpretation details for the output but never explains when this tool is the right choice or what prerequisites exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ucs_restoreRestore UCSB

Live: ActiveUCS for a named entry; world runs UCS World, which is refused while AutoCAD has an active command (CMDACTIVE — press ESC). Headless: the $UCSNAME/$UCSORG/$UCSXDIR/$UCSYDIR header variables. Refusal: an unknown name (lists the saved ones). Tool coordinates stay WCS. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA name from ucs_list, or `world`

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses refusal conditions (CMDACTIVE, unknown name), the underlying live vs headless mechanics, and that tool coordinates stay WCS. That is substantive behavioral context that isn't in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the telegraphic fragment style ("Live:", "Headless:", "Refusal:", "Pack: settings · lean: no.") is not front-loaded and is hard to parse; the final "Pack/lean" clause is cryptic and adds little.

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 an output schema present, return values need no explanation, and the behavioral notes cover the main edge cases. However, the absence of any when-to-use framing relative to `ucs_set`/`ucs_list` leaves the definition short of complete for an agent choosing an action.

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 100% and the `name` param is already documented as "A name from ucs_list, or `world`". The description adds marginal meaning by explaining what `world` does and how unknown names are handled, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never states plainly that it restores a named UCS; it opens with implementation detail ("Live: `ActiveUCS`...") and relies on the name/title to convey purpose. The mechanism and the `world` special-case make the intent inferable, but an agent gets no clean verb+resource statement up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives partial conditions: `world` is refused while a command is active, and unknown names are refused with a list of saved ones. But there is no guidance on when to choose this over `ucs_set` or `ucs_list`, so routing among siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ucs_setSet UCSA

Store a UCS table entry and make it current (AutoCAD's UCS command).

Axes are normalised to unit vectors. Every tool keeps taking and returning WCS coordinates — the repository rule; a UCS is for the operator's own drafting, and no tool starts interpreting inputs in it. Refusals, before any write: a name of world (reserved), a zero-length axis, and non-perpendicular axes — the message carries the measured angle (tolerance 0.001°). Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUCS name
originYes[x, y, z] in WCS
x_axisYesDirection of the new X axis (any length)
y_axisYesDirection of the new Y axis; must be perpendicular to x_axis

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give readOnlyHint=false and destructiveHint=false; the description goes well beyond them by enumerating the exact pre-write refusal conditions (reserved name 'world', zero-length axis, non-perpendicular axes with the measured angle and 0.001° tolerance) and the axis normalisation behaviour. That is precisely the kind of mutation-safety context an agent needs.

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?

Front-loaded with the core action, then a dense but useful block on coordinate conventions and refusal rules; nearly every clause earns its place. Minor deduction for the trailing 'Pack: settings · lean: no.' fragment, which is internal jargon an external caller cannot interpret.

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?

With an output schema present, the description needn't explain returns, and it instead covers the non-obvious contract: WCS in/out for all tools, unit-vector normalisation, and the three refusal cases. Together with annotations and full schema coverage, an agent has everything required to call this 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?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantic value: axes are normalised to unit vectors regardless of input length, the name 'world' is reserved and rejected, and perpendicularity is enforced with a stated tolerance. Only origin/coordinate-frame specifics are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Store a UCS table entry and make it current' — and grounds it against the real AutoCAD command, which makes clear this is a write/set operation, not the list or restore variants in the sibling set (ucs_list, ucs_restore).

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 explains the conceptual purpose of a UCS ('for the operator's own drafting') and the repository-wide WCS rule, which implies when this tool is appropriate. However it never explicitly states when to prefer this over ucs_restore or how it interacts with the current drawing state, leaving the when-to-use decision implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

user_pick_pointAsk Operator: Pick PointA
Read-only

Utility.GetPoint: returns the WCS x, y (z) the operator clicks.

ESC is an answer, not an error: cancelled: true with AutoCAD's reason. Waiting longer than COM_CALL_TIMEOUT returns timed_out: true (the prompt is abandoned on AutoCAD's side; press ESC there). Refusals: an empty prompt; headless, capability: "interactive_prompt" (no operator). Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesShown on the command line, e.g. 'Pick the base point'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint, so the description carries the behavioral burden and does so well: ESC is a normal answer returning cancelled:true with AutoCAD's reason, exceeding COM_CALL_TIMEOUT returns timed_out:true with the prompt abandoned on AutoCAD's side, and refusals (empty prompt, headless) are enumerated. This is exactly the kind of non-obvious operational detail an agent cannot infer from the schema.

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?

Purpose and return shape are front-loaded, and the error/timeout semantics follow compactly. The trailing 'Pack: settings · lean: no' is terse to the point of being opaque, costing a little clarity, but the body itself is dense with no wasted sentences.

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?

An output schema exists, so return values need not be spelled out, yet the description still highlights the two fields an agent must branch on (cancelled, timed_out) plus refusal modes and timeout semantics. For a one-parameter interactive tool, nothing needed to invoke or handle 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?

Schema coverage is 100% and the single prompt parameter is already documented with an example, so the baseline is 3. The description adds a genuine constraint beyond the schema — an empty prompt is refused — which is a validation rule not expressed in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the underlying call (`Utility.GetPoint`) and states precisely what it returns: the WCS x, y (and optional z) the operator clicks. That is a specific verb+resource that separates it from siblings like user_select, point_from_snap, and point_intersection, which derive points differently.

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 states the operating context clearly: it requires a live operator, is refused when headless (capability: "interactive_prompt"), and requires a non-empty prompt. It does not explicitly point to alternative point-acquisition tools (e.g. point_from_snap) when no operator is available, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

user_selectAsk Operator: SelectA
Read-only

Returns handles the operator picked — one with mode="single" (plus the picked point [x, y] in WCS — AutoCAD reports it in the current UCS and the tool translates, so a UCS made current by ucs_set never shifts it), any number with mode="multiple" (Enter with nothing selected is count: 0, not a cancel). ESC → cancelled: true; a wait longer than COM_CALL_TIMEOUT → timed_out: true. Refusals: a mode outside the two, an empty prompt; headless, capability: "interactive_prompt". Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosingle (GetEntity) | multiple (SelectOnScreen)single
promptYesShown on the command line

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint already covering safety, the description still adds substantial behavior: ESC yields `cancelled: true`, a wait past `COM_CALL_TIMEOUT` yields `timed_out: true`, empty Enter in multiple mode is `count: 0` not a cancel, refusals for bad mode/empty prompt, and a `capability: "interactive_prompt"` failure when headless. This is exactly the edge-case disclosure an agent needs for an interactive tool.

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?

Information-dense and largely front-loaded, with each clause carrying operational meaning (timeouts, cancels, refusals). The opening sentence is a long run-on and some return-shape detail is redundant given an output schema exists, but little is truly wasted.

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 two-parameter interactive tool with annotations and an output schema, the description covers everything an agent needs: modes, refusal causes, cancel/timeout semantics, capability gating, and coordinate-system behavior. Nothing required to call 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?

Schema coverage is 100% and the schema already documents both parameters, so the baseline is 3. The description earns extra credit by adding meaning beyond the schema: the picked point is in WCS and translated from the current UCS (so a UCS set by `ucs_set` won't shift it), and by elaborating what each mode returns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the core action ('returns `handles` the operator picked') and clearly separates the two modes (`single` vs `multiple`), so an agent can tell what it does. However, it front-loads return semantics rather than a clean purpose statement, and despite a close sibling (`user_pick_point`) it never explicitly differentiates itself from that or from `selection_get`.

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 through the mode semantics and the refusal conditions, but there is no explicit 'use this when…' guidance nor any routing against alternatives like `user_pick_point` or `selection_get`. The agent must infer that this is the interactive operator-driven path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validation_checkValidate DrawingA
Read-only

Run quality checks on the current drawing.

Available checks:

  • empty_layers: Find layers with no entities

  • zero_length: Find zero-length lines

  • duplicate_entities: Find entities at the same position

ParametersJSON Schema
NameRequiredDescriptionDefault
checksNoList of checks: empty_layers, zero_length, duplicate_entities

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that the tool does not modify the drawing, and the description adds value by detailing what each check does. It does not disclose behavior when the checks parameter is omitted or whether all checks run by default, but the read-only safety profile is covered by the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the main action, and uses a scannable bullet list where each entry earns its place. It avoids restating the title or repeating schema information unnecessarily.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional parameter with full schema coverage, an output schema, and a read-only annotation, the description provides enough to select and invoke the tool correctly. The main residual gap is the unspecified default behavior when the checks array is omitted.

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 schema already has 100% coverage by listing the check names, so the baseline is met. The description goes further by defining each allowed value semantically, which helps an agent choose the correct strings. It leaves the null/omitted behavior of the checks parameter unspecified, which is a minor 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 clearly states the action ('Run quality checks') and resource ('the current drawing'), then enumerates the available check types with concrete meanings. It does not explicitly distinguish itself from similar siblings like drawing_audit or drawing_preflight, but the named checks make its purpose identifiable.

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 bullet list provides implied usage: an agent can infer this tool is appropriate when empty_layers, zero_length, or duplicate_entities checks are needed. However, it gives no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as drawing_audit or drawing_preflight.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_named_listList Named ViewsB
Read-only

Every VIEW table entry with centre, height and width. No refusals. Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes that this is a safe read, so the bar is low, but the description adds little beyond it: the returned fields duplicate the output schema, and 'No refusals' is unexplained jargon. It never clarifies ordering, count, or scope of the listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loads the resource and returned fields. The trailing fragment 'Pack: settings · lean: no.' is opaque internal metadata that does not earn its place and disrupts the structure.

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 parameters, an output schema present, and readOnlyHint set, only a modest description is required. It is minimally adequate, but it omits any mention of ordering or the relationship to view_named_save/restore, leaving a gap an agent might need.

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 there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly implies a no-argument listing operation with no filtering.

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 resource ('every VIEW table entry') and the fields returned (centre, height, width), so an agent can tell it retrieves named-view definitions. However, it uses AutoCAD jargon ('VIEW table entry') and never differentiates itself from siblings like view_named_restore or view_zoom_extents.

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 statement of when to call this versus view_named_restore, view_named_save, or other view tools. 'No refusals' is not usage guidance an agent can act on. The agent is left to infer purpose purely from the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_named_restoreRestore Named ViewA

Live: zooms the active viewport to the saved window the way -VIEW _R does — VIEWCTR becomes the saved centre and VIEWSIZE the saved height (or width / display aspect when the window is wider than the display); applied: "zoom_window" plus the read-back viewctr / viewsize. Headless there is no display: the saved window is fitted into the *Active VPORT — the view AutoCAD opens the file on — whose aspect ratio is left as the file carries it (AutoCAD reconciles a changed aspect by the viewport's lower-left corner, which shifts the centre); the result says applied: "header_only" with the written vport_height and the kept aspect_ratio, the same reported-no-op rule as view_zoom_extents. Refusal: an unknown name (lists the saved views). Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA name from view_named_list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false, so the description carries the real burden and does so richly: it documents the live path (VIEWCTR/VIEWSIZE semantics), the headless fallback with its aspect-ratio and centre-shift caveat, the emitted `applied` states, the reported-no-op rule, and the refusal behavior. This is exceptional behavioral disclosure well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The effect is front-loaded, but the body is dense, telegraphic, and includes cryptic markup like 'Pack: settings · lean: no.' that costs tokens without clearly helping an agent invoke the tool correctly.

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?

An output schema exists, yet the description still explains the live-vs-headless result states and the refusal case, covering a non-trivial mutation well. It is only incomplete in that no guidance is offered on when to prefer this over the other view/UCS restore tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `name` parameter is already documented as coming from view_named_list, so the baseline is 3. The description adds meaning by explaining the invalid-name path (an unknown name is refused and the saved views are listed), which gives the parameter concrete validation semantics.

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 effect: it zooms the active viewport to a saved window, naming the AutoCAD `-VIEW _R` analogue, which immediately distinguishes it from view_named_save and view_named_list. It is specific about verb+resource, though it never phrases the restoral quite as plainly as 'restores a previously saved named view'.

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 only implied via the sibling context ('A name from view_named_list' in the schema) and the refusal clause, which tells the agent where valid names come from. No alternatives such as view_zoom_window, view_zoom_extents, or ucs_restore are contrasted, and no conditions for choosing this over them are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_named_saveSave Named ViewA

Store a VIEW table entry (AutoCAD's VIEW command). Same name replaces (replaced: true). Refusals: height/width ≤ 0 or non-finite, a malformed center, and headless an empty drawing with no center/height (there are no extents to default to). Pack: settings · lean: no.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesView name, e.g. DETAIL-A
widthNoView width; default: height × the current viewport aspect
centerNo[x, y] in WCS; default: the current view (live) or the drawing extents (headless)
heightNoView height in drawing units; default as for center

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds real behavior beyond that — duplicate names replace (`replaced: true`), `height`/`width` must be positive and finite, `center` must be well-formed, and headless with an empty drawing and no `center`/`height` is refused because there are no extents. That is substantive disclosure, though the consequence of replacement (overwriting an existing view definition) could be spelled out more.

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?

Front-loaded with the core action, then constraints in a compact refusal list; nothing is padded. The trailing 'Pack: settings · lean: no' is internal metadata that sits oddly in a tool description but is short.

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 an output schema present and 100% parameter coverage, the remaining burden is behavioral, and the description covers defaults, replacement, and failure modes well. It stops short of stating whether the drawing must be open/active versus headless in general, beyond the empty-drawing edge case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description contributes constraint semantics the schema lacks: non-positive/non-finite height and width are rejected, malformed center is rejected, and the headless empty-drawing case with no center/height fails. These are meaningful additions over the field descriptions.

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 precise verb and resource: store a VIEW table entry, explicitly tying it to AutoCAD's VIEW command. It's clearly a save operation, distinct from view_named_restore/list, but it never names those siblings to route the agent between them.

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 rather than stated: it explains replacement on duplicate name and refusal conditions, which frames when the call will succeed, but there is no explicit when-to-use vs the restore/list siblings or prerequisite guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewport_createCreate ViewportA

Place a scaled model-space viewport on a paper-space layout.

The viewport window shows the model region centered at (view_center_x, view_center_y); view height = height / scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoPaper:model scale (1.0 = 1:1, 0.5 = 1:2, 2.0 = 2:1).
widthYesViewport width in paper units.
heightYesViewport height in paper units.
layoutYesPaper-space layout that receives the viewport.
center_xYesViewport center X in paper units.
center_yYesViewport center Y in paper units.
view_center_xYesModel-space X the viewport looks at.
view_center_yYesModel-space Y the viewport looks at.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the sparse annotations (only destructiveHint=false), the description discloses important behavioral details: the viewport centers on the given model-space point and the view height is determined by height/scale. This adds real context about how parameters affect the resulting viewport without contradicting the annotation.

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 two concise sentences with no filler. It front-loads the core purpose and then provides the single most important formula for understanding how the viewport is computed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate 8-parameter complexity, full schema coverage, and presence of an output schema, the description covers the essential behavior well. It could mention prerequisites like requiring a valid existing layout, but the current description plus schema is adequate for an agent to call the tool correctly in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining the relationship between scale, height, and view_center_x/view_center_y. The formula 'view height = height / scale' clarifies semantics that parameter descriptions alone do not fully convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Place a scaled model-space viewport on a paper-space layout.' This clearly identifies the tool's function and distinguishes it from sibling tools like viewport_set_scale, viewport_lock, and viewport_delete, which operate on existing viewports.

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 explains how the tool behaves but provides no guidance about when to use it versus alternatives. It does not mention that this is for creating a new viewport as opposed to modifying an existing one, nor does it reference viewport_set_scale or any prerequisite such as the layout needing to exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewport_deleteDelete ViewportA
Destructive

Delete a viewport.

The layout's main viewport needs force=true; deleting it removes the tab's own view state, and the layout's current-viewport pointer is repaired so the file does not carry a dangling reference that only CAD would notice.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoAllow deleting the layout's main viewport.
handleYesViewport entity handle (from viewport_list).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag destructiveHint=true, so the description does not need to restate basic destructiveness. It adds valuable behavioral detail: deleting the main viewport removes the tab's own view state and repairs the current-viewport pointer to avoid dangling references. This goes well beyond the annotation and helps the agent anticipate side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one clear action sentence followed by a focused caveat about the main viewport. There is no redundant phrasing or filler, and the most important operational detail is front-loaded.

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?

Given the tool's two parameters, full schema coverage, destructiveHint annotation, and existing output schema, the description covers the essential edge case that would otherwise surprise an agent. Nothing critical for correct invocation 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context for the force parameter by explaining that the main viewport needs force=true and describing what happens when it is deleted. This reinforces the schema description and helps the agent understand when and why to set force.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Delete a viewport.' This clearly distinguishes the tool from sibling viewport tools such as viewport_list, viewport_create, viewport_set_scale, and viewport_lock. No ambiguity remains about what action this tool performs.

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 a clear condition for a special case: the layout's main viewport requires force=true. This tells the agent when to set the force flag. It does not explicitly name alternatives or exclusions, but for a deletion tool with no near-equivalent sibling, the context is adequately clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewport_listList ViewportsA
Read-only

List paper-space viewports: handle, geometry, scale and lock state.

The layout's own main viewport is included with is_main: true — it is the tab's pan/zoom state rather than a drafting viewport, and it is what remains after every drafting viewport is deleted. scale and locked are null on documents that cannot store them (R12) rather than fabricated.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutNoRestrict to one paper-space layout. Empty covers every sheet.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses important edge-case behavior: the main viewport is included with is_main: true, it represents tab pan/zoom state rather than a drafting viewport, and scale/locked are null on R12 documents rather than fabricated. This is exactly the kind of behavioral context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the one-sentence purpose comes first, followed by two denser but necessary caveats about main viewport semantics and R12 nulls. Every sentence earns its place with no repetition of schema fields.

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 filtered listing tool with a single documented parameter, a readOnlyHint annotation, and an output schema present, the description covers all non-obvious behaviors: inclusion of the main viewport, its special nature, and legacy-format null handling. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter `layout` is already fully documented in the schema with its default and meaning ('Empty covers every sheet'). The description adds no further parameter-level detail, so the schema carries the full burden; baseline 3 is appropriate.

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 and resource: 'List paper-space viewports' followed by the concrete fields returned (handle, geometry, scale, lock state). This clearly distinguishes it from sibling mutation/viewport tools like viewport_set_scale, viewport_lock, and viewport_delete.

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 tool's purpose as a read-only listing operation is clear from the first line and reinforced by the parameter description. However, it does not explicitly name sibling alternatives or state when not to use it; the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewport_lockLock ViewportA

Lock or unlock a viewport's display scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesViewport entity handle (from viewport_list).
lockedNoTrue to lock the display scale, False to unlock.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly states that the tool toggles the lock state of the viewport's display scale, which is the core side effect. However, annotations do not provide read-only or destructive hints, and the description does not explain consequences such as whether locked viewports ignore scale changes or whether the operation is reversible beyond calling this again.

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 sentence with no redundant words; the key scope ('display scale') is placed immediately after the verb. Every word earns its place, and it is easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter boolean toggle with an output schema and fully described parameters, the description covers the essential operation. It still leaves the implication of a locked viewport unstated and lacks alternative routing, but these gaps are minor for such a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes both parameters: handle's source is given and locked's meaning/default is explicit. The description adds no additional parameter detail, so it sits at the baseline for 100% schema coverage.

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 clear verb pair ('Lock or unlock') with a specific resource ('a viewport's display scale'), which is more specific than the title. This distinguishes it from sibling viewport_set_scale, which would set the scale value rather than toggle its lock state.

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 or conditions are given: the description does not say when to choose this over viewport_set_scale or viewport_list, nor mention prerequisites such as the handle referring to an existing viewport. The intended use is only implied by the action itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewport_set_scaleSet Viewport ScaleA

Rescale a viewport by adjusting its view height.

Geometric scale only: annotative text and dimensions do not resize with it. Refuses the layout's main viewport, whose view height is the tab's own pan/zoom state rather than a drafting scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleYesPaper:model scale (1.0 = 1:1, 0.5 = 1:2, 0.02 = 1:50).
handleYesViewport entity handle (from viewport_list).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide destructiveHint=false, so the description carries the behavioral burden. It discloses two important non-obvious behaviors: annotative entities are not resized, and the layout's main viewport is refused. Missing explicit error/refusal semantics is a minor gap, but the description adds substantial context beyond the 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?

The description is compact and front-loaded with the core action. The two qualifying sentences each add unique, non-redundant constraints, making every sentence earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple two-parameter schema, low annotation coverage, and presence of an output schema, the description covers the important edge cases: annotative behavior and the main viewport refusal. It is sufficient for correct invocation, though explicit refusal/error behavior would be a minor improvement.

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 100% and already documents both parameters with useful examples and source guidance. The description adds the view-height mechanism, which is helpful but not essential; the baseline of 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Rescale a viewport') and adds precise scope via 'by adjusting its view height' and 'Geometric scale only'. This distinguishes it from related viewport tools like viewport_lock and viewport_delete, and from entity_scale.

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 this should be used for setting a drafting scale on a layout viewport and explicitly warns about the main viewport exception. However, it does not explicitly state when to prefer this over alternatives or what to use for annotative scaling, leaving usage context somewhat implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_screenshotScreenshotA
Read-only

Capture a screenshot of the current drawing view.

COM backend: captures live AutoCAD window at current view. ezdxf backend: renders via matplotlib to PNG.

With overlay_handles, each entity is labelled with its handle at its own centre — every modify tool takes a handle, and without the labels there is nothing connecting "the circle at the top-left" to a hex string you can act on. Crowded drawings are capped and the image says how many of how many were labelled. Live AutoCAD captures its own window, so there is no render to label there; it refuses with capability: "handle_overlay".

Returns an Image content block with the PNG data.

ParametersJSON Schema
NameRequiredDescriptionDefault
overlay_handlesNoLabel each entity with its handle, so what you see maps to what you can modify. Headless backend only.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare readOnlyHint=true; the description carries the behavioral burden and does so thoroughly. It discloses backend differences, the handle overlay cap and reporting behavior, the refusal with capability 'handle_overlay' on live AutoCAD, and the Image content block return format. This is far beyond what annotations provide.

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 information-dense with no fluff. It front-loads the main purpose, then uses each paragraph to explain backend behavior, parameter purpose, and return format. Every sentence contributes to correct invocation or expectation-setting.

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?

There is no output schema, so the description correctly states that an Image content block with PNG data is returned. It fully documents the single optional parameter, its constraints, backend-specific behavior, and failure conditions. For a simple screenshot tool with one optional boolean, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already documents overlay_handles with high coverage, the description adds meaningful semantic context: handles are drawn at entity centres, every modify tool consumes a handle, and labels are the bridge between visual entities and actionable hex strings. It also explains failure modes and crowding behavior, enriching the parameter's meaning well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Capture a screenshot of the current drawing view.' It clearly states what the tool does and its scope, and it distinguishes itself from broader export or zoom tools by focusing on the current view. The backend distinction further clarifies behavior without ambiguity.

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 explains backend-specific behavior (COM live window vs ezdxf matplotlib render) and when overlay_handles is available or refused. It does not explicitly name alternatives like view_zoom_and_screenshot, but it gives enough contextual guidance about when this tool is appropriate and when the overlay option will fail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_zoom_and_screenshotZoom and ScreenshotA
Read-only

Zoom to extents (or window if coordinates given), then capture a screenshot.

The most useful tool for visually inspecting drawing state.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1NoOptional: zoom to this window corner X1
x2NoOptional: zoom to window corner X2
y1NoOptional: zoom to window corner Y1
y2NoOptional: zoom to window corner Y2

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds meaningful behavioral detail: zooming to extents by default, zooming to a window when coordinates are supplied, and then capturing a screenshot. This discloses the operation order and conditional behavior beyond the annotation.

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, front-loaded with the action and then the use case. There is no wasted text; every phrase contributes to selection and invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with only optional parameters and no output schema, the description covers what the tool does, when to use it, and the parameter-dependent behavior. It does not describe the exact screenshot return format, but that is implied and not critical for using the tool 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?

Schema coverage is 100%, and each parameter is already described. The description adds value by clarifying the conditional behavior: coordinates switch the zoom from extents to a window. This helps an agent understand that providing all four corner coordinates changes the zoom mode.

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 and resource: 'Zoom to extents (or window if coordinates given), then capture a screenshot.' This clearly distinguishes the tool from the sibling single-purpose tools view_zoom_extents, view_zoom_window, and view_screenshot by combining both actions into one workflow.

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 provides clear context: 'The most useful tool for visually inspecting drawing state.' This tells an agent when to prefer this tool. It does not explicitly name alternatives or state when not to use it, but the recommendation is strong and intelligible.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_zoom_extentsZoom ExtentsA

Zoom to show all entities in the drawing (fit drawing in viewport).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate the operation is non-destructive (destructiveHint=false) but not read-only (readOnlyHint=false), meaning it changes viewport state. The description reinforces that it modifies the current view to show all entities, but adds little beyond the annotations—such as whether it affects model space or paper space, or the exact zoom 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 sentence with a helpful parenthetical clarification. Every word earns its place, and the core behavior is front-loaded with no filler or repetition of the title.

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 tool with no parameters, an output schema, and clear annotations, this description is sufficiently complete. It tells an agent exactly what the tool does, and the sibling context provides enough differentiation from other view-related tools. Nothing essential 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 has zero parameters, so no parameter documentation is needed. The schema coverage is effectively 100% by having an empty parameter object, and the description adds no conflicting or missing information. This matches the baseline for a no-parameter tool.

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 ('Zoom') and a precise resource/scope ('to show all entities in the drawing'), and the parenthetical 'fit drawing in viewport' clarifies the intended outcome. This is clearly distinct from sibling tools like view_zoom_window, which would zoom to a selected area rather than all entities.

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 'fit drawing in viewport' implies the use case: after changes or when the user wants an overall view. However, the description does not explicitly mention alternatives such as view_zoom_window or explain when this tool would be preferable, so the guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_zoom_windowZoom WindowA

Zoom to display the specified rectangular window region.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesWindow corner 1 X
x2YesWindow corner 2 X
y1YesWindow corner 1 Y
y2YesWindow corner 2 Y

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is already structured. The description adds that the operation changes the display to a given rectangular region, which is useful but not deeply detailed; it does not state whether the viewport state is persistent or whether any viewport is specifically targeted.

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, tightly worded sentence that immediately conveys the tool's purpose. Every word contributes meaning, with no filler or redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zoom operation with an output schema and 100% parameter coverage, the description is nearly complete. It could mention coordinate conventions or that this affects the current viewport, but the core calling context is clear enough 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds only the generic notion of a 'rectangular window region' and does not explain corner ordering, coordinate system, or units beyond what the schema provides.

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 ('Zoom') and a precise resource ('display the specified rectangular window region'), clearly distinguishing it from siblings like view_zoom_extents and view_zoom_and_screenshot. There is no ambiguity about what operation is being described.

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 this tool versus alternatives such as view_zoom_extents or view_zoom_and_screenshot. An agent must infer the intended use case from the tool name and parameter schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weld_symbolWeld Symbol (ISO 2553)A

Draw an ISO 2553 weld annotation: reference line, identification line, symbol, dimensions.

Refusals, all before the first entity reaches the drawing: a kind outside the six elementary symbols transcribed here (square, v, bevel, u, j, fillet — the rest of the ISO 2553 table is deliberately not shipped rather than guessed), a side outside arrow/other/both, a non-positive height, and a pitch given without a length.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesKink X (WCS) — where the arrow line meets the reference line.
yYesKink Y (WCS).
kindNoElementary symbol: square | v | bevel | u | j | fillet.fillet
sideNoarrow (symbol on the reference line) | other (on the dashed identification line) | both (symmetrical; the identification line is omitted, per ISO 2553:2019).arrow
sizeNoWritten before the symbol. A number on a fillet takes the ISO 2553 design-throat prefix (5 → 'a5'); pass a string for leg length ('z7').
layerNoOverride the role layers (DIM for geometry, TEXT for text).
pitchNoPitch (mm) of an intermittent weld, written in brackets after the length.
heightNoText height (mm).
lengthNoWeld length (mm), written after the symbol.
processNoTail reference, e.g. an ISO 4063 process number.
rotationNoRotate the whole annotation about the kink (degrees CCW).
leader_toNo[x, y] on the joint; draws a leader with an arrowhead there.
all_aroundNoCircle at the kink: weld all around.
field_weldNoFlag at the kink: weld made on site.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false, so the description must carry most of the behavioural burden and it does: refusals happen 'all before the first entity reaches the drawing', i.e. the operation is atomic and validation-gated, and the symbol table is deliberately truncated rather than guessed. It still says nothing about which layer/space the annotation lands in or whether existing geometry is touched, so it is not fully transparent.

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 blocks: an imperative statement of what is drawn, then a bulleted list of refusal conditions. Front-loaded, zero filler, and every clause carries information an agent needs.

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 an output schema present, return values need not be described, and the 14-param schema is fully documented, so the description's remaining job is behavioural domain context, which it supplies via the refusal list and the deliberately limited ISO 2553 table. The gap is that it does not say where the annotation is placed (model space vs layout, layer role behaviour for `layer`) despite `layer` being an exposed override.

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 100% across all 14 params, so the schema already explains x/y, kind, side, size, pitch, and the rest in detail. The description adds only a small amount of semantics, notably the restrictions on kind, side, height and pitch. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource plus the standard it implements: 'Draw an ISO 2553 weld annotation: reference line, identification line, symbol, dimensions.' That is enough for an agent to know exactly what gets created. It does not, however, differentiate itself from neighbouring annotation tools such as surface_texture, centre_marks, gd_frame or datum_feature, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-not conditions: kinds outside the six shipped elementary symbols, sides outside arrow/other/both, non-positive height, and pitch without length all cause refusal. That is genuine usage guidance tied to the input domain. It never names an alternative tool for the unsupported cases (e.g. which sibling to reach for when the symbol isn't shipped), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

xref_attachSheet: Attach XrefA

Attach an external reference and insert it once. Both engines.

The block takes the referenced file's stem as its name. Refusals, all before anything is written: a kind that is not 'attach' or 'overlay', a file that does not exist, a non-positive or non-finite scale, and a block name the drawing already holds — detach it first with xref_manage(action='detach').

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoInsertion X (WCS).
yNoInsertion Y (WCS).
kindNo'attach' (the reference's own xrefs come with it) or 'overlay' (they do not, so a circular reference cannot form).attach
pathYesFull path of the drawing to reference.
scaleNoUniform scale.
rotationNoRotation in degrees, CCW from +X.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false; the description adds real behavioral content: the block name is derived from the referenced file's stem, and all validation refusals happen before anything is written. That atomicity guarantee is exactly the kind of context annotations don't carry.

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?

Front-loaded with the core action, then the naming rule, then refusals. Every sentence carries information, though 'Both engines' is terse to the point of being cryptic and the refusal list is dense.

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?

An output schema exists, so return values need not be described. For a 6-parameter mutation tool the description covers naming, validation, and recovery, leaving no material gap for an agent to call 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?

Schema coverage is 100%, so the baseline is 3, but the description adds non-obvious semantics: the `path` value's stem becomes the block name, and `scale` must be positive and finite. It stops short of explaining x/y/rotation beyond what the schema already says.

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 (attach) and resource (external reference) plus a scope detail ('insert it once') and engine coverage ('Both engines'). It is clearly distinguishable from xref_manage, image_attach, and block_insert.

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?

Gives explicit failure conditions (bad kind, missing file, non-positive scale, duplicate block name) and names the recovery path: detach first with xref_manage(action='detach'). It does not, however, contrast itself with sibling inserters like image_attach or block_insert.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

xref_manageSheet: Manage XrefsA
Destructive

One operation on one external reference.

list, detach and path work on both engines. reload and bind need a live AutoCAD seat's xref manager: headlessly they are refused with capability: "xref_live" rather than pretended, and the refusal says which engine does them. Other refusals: an action outside the five, an unknown xref name, a 'path' action with no new_path. On the live engine a listed row's inserts and kind are both null — ActiveX's block interface carries neither a per-xref insert count nor an overlay indicator, and this server does not invent them. Headlessly both are measured: inserts counts every insert in the drawing, model space and paper space alike, and detach removes exactly those.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoXref name; ignored by 'list'.
actionYeslist | reload | bind | detach | path.
new_pathNoRequired by 'path': the reference's new location.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=true, and the description goes well beyond that: it discloses that detach removes exactly the counted inserts, that headless inserts counts model and paper space alike, and that on the live engine inserts and kind are deliberately null rather than fabricated. This is exactly the kind of side-effect and data-fidelity disclosure an agent needs for a mutation tool.

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 core scope statement is front-loaded, followed by engine behavior, refusal cases, and null semantics in a dense but organized block. Every sentence carries information, though the run-on sentences around the live-engine null behavior could be tightened slightly.

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?

An output schema exists, so return values needn't be described, yet the description still explains the meaning of the returned inserts/kind fields across engines, plus all refusal modes. For a five-action, dual-engine tool with a destructive hint, this leaves no significant gap for correct invocation.

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 100%, so the schema already documents name ('ignored by list') and new_path ('required by path'). The description restates the 'path needs new_path' constraint but adds no syntax, format, or value-range detail beyond the schema. Baseline 3 is appropriate when the schema carries the parameter burden.

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 opening line states the resource and unit of work ('One operation on one external reference'), and the body enumerates the exact five actions (list, reload, bind, detach, path). This cleanly separates it from the sibling xref_attach and from generic entity tools.

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 explicit engine-dependent routing: reload and bind require a live AutoCAD seat and are refused headlessly with capability 'xref_live', while list/detach/path work on both engines. It also names the refusal conditions (unknown action, unknown xref name, 'path' with no new_path). It stops short of naming alternative sibling tools, so it is clear context rather than full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 97 tool updatesv1.6.0
    • Addedarch_catalogue_insert
    • Addedarch_catalogue_list
    • Addedarch_dimension_chains
    • Addedarch_grid
    • Addedarch_opening
    • Addedarch_plan_from_spec
    • Addedarch_room
    • Addedarch_rooms_detect
    • Addedarch_schedule
    • Addedarch_stair
    • Addedarch_symbol
    • Addedarch_wall
    • Addedballoon_add
    • Addedbatch_plot
    • Addedblock_define
    • Addedbom_extract
    • Addedbom_table
    • Addedcable_takeoff
    • Addedcentre_marks
    • Addeddata_extract
    • Addeddimstyle_create
    • Addeddimstyle_list
    • Addeddimstyle_modify
    • Addeddimstyle_set_current
    • Addeddocument_activate
    • Addeddocument_close
    • Addeddocument_list
    • Changeddrawing_apply_iso_layers1 field changed
      • changedInput schema / properties / standard / description
        Previous value: -"Layer set: mech (DIN/ISO mechanical), pid (P&ID), iso13567 (CAD layer naming)."New value: +"Layer set: mech (DIN/ISO mechanical), pid (P&ID), iso13567 (CAD layer naming), arch (ISO 13567-style architectural: walls, poche, doors, windows, stairs, furniture, sanitary, grid, rooms, dimensions, symbols, overhead)."
    • Addeddrawing_apply_standard
    • Changeddrawing_critique1 field changed
      • changedInput schema / properties / focus / description
        Previous value: -"Subset of: iso128, layer_color, dim_overlap, untrimmed_corner, duplicate_entities, construction_left. None = run all."New value: +"Subset of: iso128, layer_color, dim_overlap, untrimmed_corner, duplicate_entities, construction_left, gdt, the P&ID focuses pid_dangling_line, pid_duplicate_tag, pid_incompatible_connection, pid_untagged_instrument, pid_illegal_tag, pid_unconnected_equipment (silent on a drawing with no P&ID symbols), and the mechanical focuses mech_missing_centreline, mech_unhatched_section, mech_view_misaligned, mech_duplicate_dimension, mech_thread_unrepresented, mech_bom_balloon_mismatch (silent on a drawing with no mechanical part), and the architectural focuses arch_room_unlabelled, arch_wall_gap, arch_opening_clash (silent on a drawing with no ACADMCP_ARCH record), and the topology focuses topo_dangling_endpoint, topo_near_miss, topo_interior_crossing (network layers no P&ID or architectural focus reads). None = run all."
    • Addeddrawing_diff
    • Addeddrawing_export_dwg
    • Changeddrawing_new1 field changed
      • changedInput schema / properties / template / description
        Previous value: -"Optional path to .dwt template file"New value: +"Bundled template name (drawing_template_list: iso_a3_mech, iso_a1_arch, iso_a3_pid, ansi_b_mech, ansi_d_arch) or a path to a .dwt/.dxf template file."
    • Addeddrawing_properties_get
    • Addeddrawing_properties_set
    • Addeddrawing_scale_check
    • Changeddrawing_settings1 field changed
      • changedInput schema / properties / settings / description
        Previous value: -"Omit to READ every setting; pass a dict to CHANGE them. Friendly keys: units (mm/cm/m/inch/feet), linear_precision, angular_precision, ltscale, dimscale, dim_text_height, dim_arrow_size, dim_decimals, decimal_separator (\".\" or \",\"), zero_suppression, text_size, point_mode, point_size, osmode, fillet_radius. Example: {\"units\": \"mm\", \"dimscale\": 1.0, \"dim_text_height\": 3.5}."New value: +"Omit to READ every setting; pass a dict to CHANGE them. Friendly keys: units (mm/cm/m/inch/feet), linear_precision, angular_precision, ltscale, dimscale, dim_text_height, dim_arrow_size, dim_decimals, decimal_separator (\".\" or \",\"), zero_suppression, text_size, point_mode, point_size, osmode, fillet_radius, limits ([[xmin,ymin],[xmax,ymax]]), grid (bool), grid_spacing, snap (bool), snap_spacing, ortho (bool), polar (bool), polar_angle (degrees), psltscale (bool), annotation_scale (\"1:50\"), linear_units (decimal|engineering|architectural|fractional|scientific), angular_units (degrees|dms|grads|radians|surveyor), dimstyle, textstyle (current style names). Example: {\"units\": \"mm\", \"limits\": [[0, 0], [420, 297]], \"grid\": true}."
    • Addeddrawing_template_list
    • Addeddrawing_template_save
    • Addeddrawing_topology_check
    • Addeddrawing_understand
    • Addedentity_get_xdata
    • Addedentity_set_xdata
    • Addedhatch_material
    • Addedimage_attach
    • Addedlayer_state_delete
    • Addedlayer_state_list
    • Addedlayer_state_restore
    • Addedlayer_state_save
    • Addedmech_dimension_part
    • Addedmech_hole_pattern
    • Addedmech_part_draw
    • Addedmech_part_from_spec
    • Addedmech_part_inspect
    • Addedmech_view_add
    • Addedmleaderstyle_create
    • Addedmleaderstyle_list
    • Addedpage_setup_apply
    • Addedpage_setup_list
    • Addedpid_equipment_list
    • Addedpid_from_spec
    • Addedpid_graph
    • Addedpid_instrument_index
    • Addedpid_line_draw
    • Addedpid_line_list
    • Addedpid_symbol_insert
    • Addedpid_symbol_list
    • Addedpid_tag_parse
    • Addedpipe_takeoff
    • Addedplot_style_list
    • Addedrevision_add
    • Addedsection_line
    • Addedsheet_frame
    • Addedstd_feature_draw
    • Addedstd_part_insert
    • Addedstd_part_list
    • Addedsurface_texture
    • Addedsystem_launch
    • Addedsystem_preferences_get
    • Addedsystem_preferences_set
    • Addedsystem_prompt_message
    • Addedsystem_variable_describe
    • Addedtextstyle_create
    • Addedtextstyle_list
    • Addedtextstyle_set_current
    • Addedtitleblock_apply
    • Addeducs_list
    • Addeducs_restore
    • Addeducs_set
    • Addeduser_pick_point
    • Addeduser_select
    • Addedview_named_list
    • Addedview_named_restore
    • Addedview_named_save
    • Addedweld_symbol
    • Addedxref_attach
    • Addedxref_manage
  2. 39 tool updatesv1.5.1
    • Changedanalysis_find_in_region5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedanalysis_list_properties
    • Changedanalysis_measure_area1 field changed
      • changedInput schema / properties / points / description
        Previous value: -"Polygon vertices as list of [x, y] points (min 3)"New value: +"Polygon vertices, min 3. Each is [x, y] or [x, y, bulge] — the bulge (DXF convention) makes the edge leaving that vertex a circular arc."
    • Addedanalysis_measure_entity
    • Changedanalysis_select_by_layer5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Changedanalysis_select_by_type5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Changedblock_find_references5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Changedblock_list5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedboundary_from_entities
    • Addedboundary_trace
    • Addedcad_batch
    • Changeddrawing_open1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"Full path to the .dwg or .dxf file"New value: +"Full path to the .dxf file. .dwg needs a backend that can read it (the live COM backend); the headless ezdxf backend refuses it."
    • Changeddrawing_settings1 field changed
      • changedInput schema / properties / settings / description
        Previous value: -"Omit to READ every setting; pass a dict to CHANGE them. Friendly keys: units (mm/cm/m/inch/feet), linear_precision, angular_precision, ltscale, dimscale, text_size, point_mode, point_size, osmode, fillet_radius. Example: {\"units\": \"mm\", \"dimscale\": 1.0, \"linear_precision\": 2}."New value: +"Omit to READ every setting; pass a dict to CHANGE them. Friendly keys: units (mm/cm/m/inch/feet), linear_precision, angular_precision, ltscale, dimscale, dim_text_height, dim_arrow_size, dim_decimals, decimal_separator (\".\" or \",\"), zero_suppression, text_size, point_mode, point_size, osmode, fillet_radius. Example: {\"units\": \"mm\", \"dimscale\": 1.0, \"dim_text_height\": 3.5}."
    • Changedentity_array_polar5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Changedentity_array_rectangular5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedentity_change_space
    • Addedentity_create_revcloud
    • Addedentity_create_wipeout
    • Changedentity_list5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Changedentity_select_smart5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedhatch_add_boundary
    • Addedhatch_edit
    • Addedhatch_set_gradient
    • Changedlayer_list5 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedlayout_copy
    • Addedlayout_delete
    • Addedlayout_rename
    • Addedselection_filter
    • Changedselection_get2 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "default": false,
        +  "description": "Return a columnar {fields, rows, count, offset, total, truncated, next_offset} envelope instead of dicts: much cheaper per row, and the only shape that reports truncation.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project to these fields, in this order (e.g. ['handle','type','layer']); 'properties.<key>' reaches one nested value. Omit for the full record; an unknown name errors and lists the valid ones."
        +}
    • Addedselection_polygon
    • Addedselection_window
    • Addedtext_find_replace
    • Addedtext_set_background
    • Changedtitleblock_apply_iso_a31 field changed
      • addedInput schema / properties / layout
        Added value: +{
        +  "default": "",
        +  "description": "Paper-space layout to draw the sheet on (create it with layout_create). Empty draws in the current space, as before.",
        +  "type": "string"
        +}
    • Changedview_screenshot1 field changed
      • addedInput schema / properties / overlay_handles
        Added value: +{
        +  "default": false,
        +  "description": "Label each entity with its handle, so what you see maps to what you can modify. Headless backend only.",
        +  "type": "boolean"
        +}
    • Addedviewport_delete
    • Addedviewport_list
    • Addedviewport_lock
    • Addedviewport_set_scale
  3. 126 tool updatesv1.4.0
    • First observedanalysis_bounding_box
    • First observedanalysis_entity_stats
    • First observedanalysis_find_in_region
    • First observedanalysis_layer_stats
    • First observedanalysis_measure_area
    • First observedanalysis_measure_distance
    • First observedanalysis_select_by_layer
    • First observedanalysis_select_by_type
    • First observedblock_create_from_entities
    • First observedblock_explode
    • First observedblock_find_references
    • First observedblock_get_attributes
    • First observedblock_insert
    • First observedblock_list
    • First observedblock_set_attributes
    • First observedconstruction_clear
    • First observedconstruction_xline
    • First observeddatum_feature
    • First observeddimension_aligned
    • First observeddimension_angular
    • First observeddimension_auto
    • First observeddimension_diameter
    • First observeddimension_linear
    • First observeddimension_radius
    • First observeddrawing_apply_iso_layers
    • First observeddrawing_audit
    • First observeddrawing_close
    • First observeddrawing_critique
    • First observeddrawing_deliver
    • First observeddrawing_export_dxf
    • First observeddrawing_export_pdf
    • First observeddrawing_finalize
    • First observeddrawing_info
    • First observeddrawing_new
    • First observeddrawing_open
    • First observeddrawing_plan
    • First observeddrawing_preflight
    • First observeddrawing_purge
    • First observeddrawing_redo
    • First observeddrawing_refine
    • First observeddrawing_save
    • First observeddrawing_save_as
    • First observeddrawing_settings
    • First observeddrawing_undo
    • First observedentity_array_polar
    • First observedentity_array_rectangular
    • First observedentity_batch_create
    • First observedentity_batch_modify
    • First observedentity_chamfer
    • First observedentity_copy
    • First observedentity_create_arc
    • First observedentity_create_block_ref
    • First observedentity_create_circle
    • First observedentity_create_ellipse
    • First observedentity_create_hatch
    • First observedentity_create_line
    • First observedentity_create_mtext
    • First observedentity_create_point
    • First observedentity_create_polyline
    • First observedentity_create_rectangle
    • First observedentity_create_spline
    • First observedentity_create_table
    • First observedentity_create_text
    • First observedentity_delete
    • First observedentity_delete_many
    • First observedentity_edit_geometry
    • First observedentity_edit_text
    • First observedentity_extend
    • First observedentity_fillet
    • First observedentity_get
    • First observedentity_list
    • First observedentity_mirror
    • First observedentity_move
    • First observedentity_offset
    • First observedentity_rotate
    • First observedentity_scale
    • First observedentity_select_smart
    • First observedentity_set_properties
    • First observedentity_trim
    • First observedgd_frame
    • First observedgear_draw_helical_front_view
    • First observedgear_draw_section_aa
    • First observedgear_draw_spur_front_view
    • First observedkeyway_draw_keyed_bore
    • First observedkeyway_draw_section
    • First observedlayer_create
    • First observedlayer_delete
    • First observedlayer_freeze
    • First observedlayer_hide
    • First observedlayer_isolate
    • First observedlayer_list
    • First observedlayer_lock
    • First observedlayer_modify
    • First observedlayer_set_current
    • First observedlayer_show
    • First observedlayer_thaw
    • First observedlayer_unlock
    • First observedlayout_create
    • First observedlayout_list
    • First observedlayout_set_current
    • First observedleader_create_mleader
    • First observedlinetype_list
    • First observedlinetype_load
    • First observedpoint_from_snap
    • First observedpoint_intersection
    • First observedpoint_tangent
    • First observedselection_get
    • First observedsystem_about
    • First observedsystem_capabilities
    • First observedsystem_get_variable
    • First observedsystem_run_command
    • First observedsystem_run_lisp
    • First observedsystem_set_variable
    • First observedsystem_status
    • First observedtemplate_apply_layers
    • First observedtemplate_list
    • First observedtitleblock_apply_iso_a3
    • First observedtransaction_begin
    • First observedtransaction_commit
    • First observedtransaction_rollback
    • First observedvalidation_check
    • First observedview_screenshot
    • First observedview_zoom_and_screenshot
    • First observedview_zoom_extents
    • First observedview_zoom_window
    • First observedviewport_create

TDQS

B3.1/5.0

Scored across 242 tools

Disambiguation3/5

With 242 tools, many share domains and some explicitly overlap (e.g., block_insert vs entity_create_block_ref, drawing_save vs drawing_save_as vs drawing_export_dwg). While descriptions are thorough, the sheer volume makes misselection likely, though most tools are conceptually distinct.

Naming Consistency3/5

Tool names are predominantly snake_case with domain prefixes (entity_, layer_, drawing_), but verb placement varies (entity_create_line vs layer_unlock) and a few lack a domain prefix (cad_batch, point_from_snap). Still readable, but not fully consistent.

Tool Count1/5

242 tools is an extreme mismatch for any server's purpose; even a comprehensive CAD suite would rarely need this many. This forces agents to navigate an unwieldy surface and increases cognitive load.

Completeness4/5

The surface is remarkably comprehensive across entity types, layers, blocks, dimensions, layouts, and specialized domains (mechanical, architectural, P&ID), with few obvious gaps. Minor gaps exist (e.g., layer rename) but are workaround-able.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Controls CAD applications (AutoCAD, ZWCAD, etc.) via AI assistants through the Model Context Protocol, enabling drawing, layer management, and automation through natural language or direct tool calls.
    128
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for AutoCAD LT automation and headless DXF generation, exposing tools for drawing, entities, layers, blocks, annotations, P&ID, and view operations via natural language.
    8
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to drive AutoCAD 2024+ and AutoCAD LT through live COM and AutoLISP engines, with support for headless DXF processing, ISO GD&T, P&ID drafting, and Rhino.Inside Grasshopper battery workflows.
    162
    MIT