SolidWorks-MCP
Summary: Let an AI MCP client model, verify, edit, assemble, and export real SolidWorks parts and assemblies in your running SolidWorks instance.
Check connection/status and manage part/assembly documents.
Create parametric parts and features: boxes, discs, cylinders, cones, revolves, sweeps, lofts, splines, ribs, planes, profiles, holes, counterbores, Hole Wizard holes, threads, pockets, slots, bosses, text, shells, fillets, chamfers, patterns, mirrors, and body combine/split.
Draw/read/edit sketches; extrude or cut existing sketches; set dimensions/equations; suppress, delete, and reorder features; assign materials and appearance.
Measure and inspect geometry: mass properties, bounding box, faces/edges, dimensions, features, equations, bodies, printability, and mesh slice/compare.
Export STEP/STL/IGES/Parasolid/3MF, save native files, take screenshots, and make dimensioned drawings.
Build assemblies: insert/position components, add mates, check motion, compute swept regions, detect interference, measure distances, and get assembly bounding box.
Runs locally over COM, fails loudly with {ok:false,error}, and exposes only fixed typed tools with no arbitrary code execution.
SolidWorks MCP
Let an AI agent (Claude, or any other MCP client) model real parametric parts and assemblies in your own SolidWorks — and check its own work. Every modelling call returns the measured volume, mass and bounding box, so the agent can compare the result with the spec and correct itself instead of guessing that it "looks about right".
Why this server
It verifies, not just generates. Features report measured geometry; dimensions and mates are measured back after the rebuild.
Fully defined sketches. Every sketch is constrained the way a designer would: dimensions from the origin, relations only where the geometry is exactly horizontal, vertical or on the origin. Tools return their dimensions by role (
width@Sketch1), so the part stays editable, in SolidWorks or through the agent.Real CAD, not just primitives. Extrude, revolve, sweep, loft and splines; holes, counterbores, slots and pockets on any face; rounded polygon corners; ISO holes from the Hole Wizard; real ISO metric threads; fillets, chamfers, shells, patterns, mirrors, ribs, equations and materials. Assemblies with mates and interference checks. STEP/STL/3MF export and screenshots. Engraved and embossed text. Work on existing parts: list, delete, suppress and reorder features; read, extrude and cut a person's sketches; import STEP. Colours per part or component. Joints with concentric and angle mates, checked over their range. Printability checks and dimensioned drawings. Planes at any offset or angle. Several bodies per part, combined and split. Variable fillets and full rounds. Free sketches with tangent arcs and splines. 86 tools in total.
It fails loud. A call that cannot do what was asked returns
{ok: false, error}with the cause, never silently wrong geometry.A fixed, typed tool surface. There is no "run arbitrary code" tool; the agent can only do what the tools allow.
Tested against real SolidWorks. 691 tests; each feature's integration test compares the result with a hand calculation.
Local. It talks to your running SolidWorks over COM; the server itself makes no network calls.
Related MCP server: apolo-cad
Quickstart
Install uv.
Start SolidWorks and leave it open (the server attaches to the running instance — it does not launch one).
Register the server with your MCP client.
Claude Code:
claude mcp add solidworks -- uvx solidworks-mcpClaude Desktop (
claude_desktop_config.json) or any other client:{ "mcpServers": { "solidworks": { "command": "uvx", "args": ["solidworks-mcp"] } } }It is also listed in the official MCP Registry as
io.github.hjbaard/solidworks-mcp.Ask for a part, for example:
Design a 100 × 80 × 8 mm mounting plate with a Ø16 mm centre bore, four counterbored M5 holes 12 mm from the corners and R5 corners. Check the volume against your own calculation, then export a fine STL.
Guidelines for agents
The server hands every MCP client short modelling guidelines when it connects
(conventions, verify each step, known pitfalls). The full guide is the resource
solidworks://guide: recipes for holes, ribs, threads and assemblies, 3D-print
advice, and how to reverse-engineer a part from a mesh (STL/3MF). The same text
is in src/solidworks_mcp/guide.md.
Requirements and compatibility
Windows, with SolidWorks installed, licensed and running.
Python 3.11+ (uv fetches one if needed).
A Y-up part template, SolidWorks' standard. Since SOLIDWORKS 2025 new parts can also be Z-up; the tools build in the Y-up frame and refuse a Z-up part with a message that says so.
Tested on SOLIDWORKS 2026 (3DEXPERIENCE R2026x). The API calls it uses exist since SOLIDWORKS 2020 SP2, so 2020–2025 should work, but that is untested. To check your installation, run this with SolidWorks open:
uvx solidworks-mcp --selftestIt builds a few small parts, compares each with a hand calculation and closes them unsaved. Please paste its output in a compatibility report, whether it worked or not.
Status: early (0.x). It works end-to-end, but tool names and conventions may still change. See CHANGELOG.md.
Troubleshooting
Start with the selftest:
uvx solidworks-mcp --selftestshows your SolidWorks release, language and templates, and which tool areas work. Add its output to a bug report."No running SolidWorks found" / connection fails — SolidWorks must be running before you start the server or run a script; it attaches to the active instance via
GetActiveObjectand does not launch one.First call is slow or
EnsureModuleerrors — the first COM call generates the makepy typelib wrappers under your tempgen_pyfolder. Let it finish; if it gets into a bad state, delete thegen_pycache and retry. Early binding is mandatory on this build (see Architecture).A feature returns
{ok: false, error: ...}— that is by design: every tool fails loud with a readable message rather than silently producing wrong geometry. Read the message; it names the likely cause.Only tested against SOLIDWORKS 2026 (3DEXPERIENCE R2026x). On other builds the verified enum values or method signatures may differ — re-run
scripts/introspect_api.pyto inspect your installed typelib.
Development
Clone the repository, then install it editable into a venv:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .[dev]To run the MCP server from this checkout instead of via uvx, point your client at the venv's Python:
{
"mcpServers": {
"solidworks": {
"command": "C:\\path\\to\\SolidWorks-MCP\\.venv\\Scripts\\python.exe",
"args": ["-m", "solidworks_mcp.server"]
}
}
}Run the verification scripts
With SolidWorks open:
.\.venv\Scripts\python.exe scripts\probe_connection.py # M0
.\.venv\Scripts\python.exe scripts\m1_block.py # M1
.\.venv\Scripts\python.exe scripts\m2_parametric.py # M2
.\.venv\Scripts\python.exe scripts\test_mcp_server.py # M3 (full MCP loop over stdio)
.\.venv\Scripts\python.exe scripts\m5_demo_bracket.py # M5 (3D-print bracket, every step verified)scripts/introspect_api.py regenerates/inspects the installed typelib and prints
verified enum values — run it if SolidWorks is upgraded and signatures change.
Tests
.\.venv\Scripts\python.exe -m pytest # all tests
.\.venv\Scripts\python.exe -m pytest -m "not solidworks" # fast unit layer, no SolidWorksTwo layers: pure unit tests (units, selector/direction parsing, polygon
cleaning, the component-placement maths, and that every MCP tool forwards its
arguments to the right session method) run anywhere; integration tests
(solidworks marker) drive a running SolidWorks and verify each feature's
volume — or each component's placement — against a hand calc. They auto-skip if
SolidWorks isn't reachable.
Tools
The server speaks MCP over stdio.
Part tools
Tool | Purpose |
| Is SolidWorks reachable? revision, server version, active/current part |
| Create a new empty part (becomes current) |
| Sketch rectangle + extrude; returns mass properties |
| Cylinder by revolving a profile 360° about an axis (Y axis) |
| Disc/puck/flange: circle extruded along +Z, centred at (x, y) (holes/patterns compose) |
| Cone/frustum by revolve (top Ø = 0 → full cone) |
| Revolve any closed |
| Sweep a round profile along a 2D path with rounded bends (pipes, tubes, rods), or along a spline through the points with |
| Sweep any closed cross-section along a 2D path (rails, gaskets, trim, channels); |
| Loft/blend 2+ polygon or round profiles on stacked parallel planes (transitions, adapters, a leg thick at the knee) |
| Straight rib / gusset in a plane parallel to Front at |
| Extrude any closed polygon |
| A reference plane offset from a plane, or turned about a model axis; its offset or angle a dimension; gives its origin and axes |
| Extrude a polygon drawn on any plane (3D points on it), merged with the part |
| The part's solid bodies: name, volume, bounding box |
| Add, subtract or intersect bodies of the part ( |
| Split the part into two bodies along a plane |
| Extrude a smooth closed spline through points (free-form/organic outlines) |
| Cut a circular through-hole at (x, y) through the depth axis |
| Counterbored screw hole (flush cap-head / heat-set insert) on +Z |
| Real, printable ISO metric thread (e.g. |
| Round hole on ANY planar face at a 3D point, through or blind (side holes, heat-set insert holes); the face through the point is used |
| ISO hole from SolidWorks' Hole Wizard tables: clearance (ISO 273 fits), counterbore, countersink or tapped; |
| Round boss (standoff, peg) grown out of ANY planar face |
| Polygon pad/ledge grown out of ANY planar face (3D points on the face) |
| Engrave text into ANY planar face, or emboss it: labels, version numbers; the position is two dimensions |
| Cut a polygon pocket/slot from the +Z face (blind or through), optionally turned about a pivot |
| Cut a polygon pocket on ANY face (3D points on the face) |
| Cut a polygon drawn on the Front/Top/Right plane or a plane by name, through all both ways or |
| Pocket a face leaving a rim along its outline (I-beam web, tray, frame); rim and depth are dimensions |
| Cut a straight slotted hole (obround) on the +Z face at any angle |
| Extrude a stadium (rounded tab, lug, link) between two points, the round ends centred on them |
| Round edges ( |
| Round a rib's top off completely between its two closest opposite sides |
| Chamfer edges at 45° ( |
| Hollow to a wall thickness; open a face ( |
| Repeat a feature N times along |
| Repeat a feature N times around an axis (bolt circle) |
| Mirror features (copies follow their seeds) or the whole body about the Front/Top/Right plane, or a plane by name, moved |
| Change a named driving dim (e.g. |
| Add a global equation or variable linking dims (e.g. |
| Add or replace a list of equations with one rebuild |
| List the equations (value, global, broken) / delete one by name or index |
| Cross-sections of an STL/3MF mesh as polygon loops, ready to use as profiles |
| Compare the part's cross-sections with a reference mesh (area and extent differences) |
| A sketch read back in model coordinates: lines, arcs, circles, splines, its dimensions, fully defined or not |
| Sketch an outline of lines, arcs and splines on any plane, fully defined: tangent where it flows, dimensioned from the origin |
| Build on an existing sketch by name (one a person drew): extrude it blind or up to the next face, or cut it blind or through all |
| Every dimension in the part: name (for |
| The part's history in tree order (name, type, suppressed); flags features that fail to rebuild and sketches that are not fully defined |
| Undo a step: delete a feature with its sketch; refuses (and names them) while other features depend on it, unless |
| Take a feature out but keep it and its dimensions (try a variant); |
| Assign a material (e.g. |
| Force rebuild, report errors |
| Volume, mass, density, surface area, centre of mass, bounding box |
| Tight part bounding box (min/max/size, mm) |
| Inspect faces (normal/area/centre; a cylinder's axis, radius and centre, also of a component in an assembly) and edges (type/length/ends/axis) by index, narrowed to a face, a feature, a box or a length |
| For a print direction: overhanging faces (area, worst lean, centre), bed contact, height; with |
| STEP/STL/IGES/Parasolid/3MF (silent; verifies file). STL/3MF tessellation: |
| PNG/JPG/TIF from a standard view ( |
| 2D drawing as PDF or editable |
| Save to / open a native |
| Close the current part or assembly; without one, SolidWorks' active document if it is saved |
| The open documents (path, type, unsaved changes) / make one current again, also one never saved |
Assembly tools
Tool | Purpose |
| Create a new empty assembly (becomes the current document) |
| Open / save a native |
| Insert a part, or a |
| Name, path, fixed, position, rotation and bounding box of every component (its own extent, also when turned), and the mates with their dimensions and errors |
| Remove a component from the assembly, with its mates |
| Move/rotate a component; the transform is read back and verified |
| Mate two faces (by direction, or |
| Step a joint through its range: overlapping pairs and chosen distances per step, the smallest distance and where it occurs, the components that moved |
| What a component covers in a plane over a joint's range: its outline, with a margin, in the coordinates of the part to cut from |
| Delete a mate, or suppress it (and bring it back) |
| Component pairs whose solids overlap, with the volume in mm³ (touching faces don't count) |
| Smallest distance between two components, to a point (with the nearest point, and whether the point is in the material), or to an axis |
| Tight bounding box of the whole assembly (min/max/size, mm) |
export and screenshot work on assemblies too.
Faces are selected by direction in the component's own frame (+x, -z, …),
so a selector keeps meaning the same face however the component is turned. Add
:inner (e.g. +y:inner) for the cavity side of a hollow part — the inside of a
room wall instead of its outer skin.
All linear dimensions are millimetres; the server converts to/from the SolidWorks-internal metre/radian units at the boundary.
Architecture
src/solidworks_mcp/
binding.py early-binding plumbing (wrap raw dispatches in generated classes)
com_worker.py one dedicated STA thread; all COM calls serialised through it
session.py SolidWorks operations (must run on the COM thread)
server.py FastMCP tools that delegate to session via the worker
constants.py enum values read from the installed typelib (verified)
units.py mm<->m, deg<->rad
errors.py SolidWorksError -> agent-facing {ok:false,error}Two non-obvious design decisions, both load-bearing:
Early binding is mandatory. On this build
GetActiveObjectreturns a dispatch whoseGetTypeInfo()fails, soEnsureDispatch/CastTocannot infer types and pure late binding breaks (IModelDoc2.FirstFeature→DISP_E_MEMBERNOTFOUND). We generate makepy wrappers from the installed typelib and wrap each raw dispatch in the right interface class; calls then go by dispid viaInvokeTypes, bypassing name resolution. Seebinding.py.A dedicated COM thread. COM is STA and thread-affine. The MCP server runs on asyncio, so all COM work is pinned to one worker thread (
com_worker.py) that handlers post to and await — actively enforcing the "one COM session, single-threaded" rule that does not hold automatically in an async server.
Status and roadmap
Proven end-to-end against SOLIDWORKS 2026 (3DEXPERIENCE R2026x):
Milestone | What it proves | State |
M0 | COM connection to a running SolidWorks | ✅ |
M1 | new part → sketch rectangle → extrude → mass properties (volume matches hand calc) | ✅ |
M2 | change a named dimension → rebuild → volume changes predictably | ✅ |
M3 | full agent loop via the MCP server: build → measure → correct → export STEP/STL + screenshot | ✅ |
M4 | revolve, sweep, loft, profiles, holes/pockets/counterbores, slots, fillet/chamfer, shell, patterns, equations, materials, save/open | 🚧 ongoing |
M5 | end-to-end 3D-print part: build a functional mounting bracket through the full loop → verify every dimension → export a fine STL (scripts/m5_demo_bracket.py) | ✅ |
M6 | assemblies: insert and position components, mate them, check interference — every placement and mate measured back (tests/test_assembly.py) | ✅ |
See Docs/PROGRESS.md for the detailed log and roadmap. Feedback and contributions are welcome.
Known limitations
Geometry so far: boxes, cylinders/cones (revolve), arbitrary extruded profiles, holes, polygon pockets/slots (
cut_profile), fillets, chamfers, shells, linear + circular patterns (bolt circles); plus equations, materials, geometry inspection, and save/open of.sldprt, holes + pockets on any planar face (model→sketch transform), round flanges (disc + bore + bolt circle), and slotted holes (cut_slot, obround at any angle — the first arc-based sketch), general revolves (add_revolved_profile: any(r,z)profile → shafts, vases, rings), swept pipes/tubes (add_swept_pipe: a round profile along a rounded 2D path), and lofts (add_lofted_solid: blend stacked polygon profiles → transitions/adapters), free-form extrusions (add_extruded_spline: a smooth closed spline → organic/aesthetic outlines), and non-circular sweeps (add_swept_profile: any cross-section along a path → rails, gaskets, trim), and mirrors (add_mirror: features or the whole body about a plane through the part).Selection: plane walk, face-by-normal/direction (
_planar_face_by_normal,+z/…, with:innerfor the cavity side of a hollow part), and edge selection by axis or explicit index (_select_edges).list_faces/list_edgeslet an agent inspect geometry before selecting.Assemblies (M6): components, transforms, mates and interference detection. Component patterns, in-context features, configurations, drawings and Simulation (FEA) are out of scope.
Available Tools
86 toolsactivate_documentA
Make an open document current again by its title, also a new one that was never saved.
For after open_part / close_part on another document; list_documents gives the titles.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that it works both on previously opened documents and on new, never-saved ones, but says nothing about error behavior when a title is missing or what side effects (e.g., switching away from the current document) occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the context. No wasted text, though the first sentence's grammar is a bit loose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool, the description covers purpose, triggering context, and title sourcing. It lacks failure-mode and state-change details, but is largely sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'title' parameter is only typed as string in the schema. The description compensates by telling the agent where titles come from (list_documents) and that they can refer to unsaved documents, which is meaningful added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: making an open document 'current again by its title', and clarifies it also handles a never-saved document. An agent can distinguish this from open_part/close_part siblings, though the phrasing 'make current' is slightly informal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly situates usage: 'For after open_part / close_part on another document', and points to list_documents as the source of titles. It gives a clear triggering context but no explicit exclusions or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_boss_on_faceB
Grow a round boss (standoff, peg) height_mm out of ANY planar face, centred at (x, y, z) mm.
The face is found as for add_hole_on_face. For a PCB standoff, add a blind
hole in its top. Returns mass properties and dimensions.
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| name | No | Boss | |
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| height_mm | Yes | ||
| diameter_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It helpfully discloses units (mm) and the return payload ('mass properties and dimensions'), and the face-finding behavior, but it does not state that this is an additive/material-creating operation, nor any permission or reversibility context expected of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with the core action first and supporting details after; minimal waste. It is dense rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations, 0% schema coverage, and no output schema, the description covers the essential geometry and even the return values. However, the additive/mutating nature and the undocumented 'name' parameter leave gaps an agent would need filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies height_mm, the (x, y, z) centring semantics, and the 'round' nature implying diameter, but leaves the diameter unit/meaning and the optional 'name' parameter (default 'Boss') unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Grow') and resource ('round boss (standoff, peg)'), with the key geometric modifiers height_mm and a centring point. It distinguishes itself from near-siblings by noting it acts on 'ANY planar face' and tying face-finding to add_hole_on_face, though it does not explicitly separate itself from add_cylinder/add_disc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The reference to how add_hole_on_face locates the face gives implied guidance, and the PCB-standoff note hints at a scenario, but there is no explicit when-to-use/when-not or a named alternative tool for the same job. 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.
add_boxA
Add a rectangular block: sketch width x height on the first plane, extrude by depth.
Dimensions are in millimetres. Returns the created feature name, the
addressable depth dimension ('D1@'), dimensions (width, height,
depth; for set_dimension) and the resulting mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | BlockExtrude | |
| depth_mm | Yes | ||
| width_mm | Yes | ||
| height_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the creation/extrusion workflow, units in millimetres, the returned feature name, the depth dimension handle 'D1@<name>', and the dimensions structure for set_dimension. It does not mention preconditions like needing an active part, but the main behavioral contract is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core action and method, while the second provides only high-value details about units and return values. Every sentence earns its place with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple primitive shape, four parameters, and no output schema, the description is nearly complete: it covers operation, units, return values, and an integration hint for set_dimension. It could be more explicit about the active-part requirement, but the essential call context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It usefully explains that dimensions are in millimetres and maps width/height to the sketch and depth to the extrusion. However, the optional 'name' parameter is not explicitly described, and the meaning of the returned 'dimensions' array is mentioned only as output context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Add a rectangular block', then details the construction method (sketch width x height, extrude by depth). This clearly distinguishes it from sibling primitive tools like add_disc, add_cylinder, and add_extruded_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the 'rectangular block' phrasing, so an agent can infer it is for box-like solids. However, there is no explicit guidance on when to prefer this tool over alternatives like add_extruded_profile, nor any mention of exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_chamferB
Chamfer edges of the current part: distance_mm back along a face, at angle_deg (default 45°) to it.
edges: "all" (default), "x"/"y"/"z", a face outline like "+z:outline", a feature's edges like "feature:Boss", or explicit indices like "2,5" from list_edges. Another angle than 45° needs from_face, which way the face that the distance runs along faces: "-z", angle_deg=60 makes an underside edge printable without support (round an arc the chamfer is a cone). Returns the number of edges chamfered and the mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Chamfer | |
| edges | No | all | |
| angle_deg | No | ||
| from_face | No | ||
| distance_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses the geometric outcome ('round an arc the chamfer is a cone') and the return payload ('number of edges chamfered and the mass properties'), which is real added value, but says nothing about whether the operation mutates/marks the part destructively, permissions, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information density is high and nothing is pure filler, but the second sentence is a run-on that mixes the from_face rule, an example, and a parenthetical fragment ('round an arc the chamfer is a cone') in one breath. The core action is front-loaded, but the parameter guidance is harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly reports the return value, and with no annotations it is the only source of behavior — yet it omits the name parameter and any statement about mutating the active part. Adequate for calling it, but not complete for a 5-parameter, annotation-free mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it documents distance_mm ('distance back along a face'), angle_deg's default and its dependency on from_face, from_face's meaning and format ('-z'), and the full selector grammar for edges. The name parameter is left entirely unexplained, which keeps it out of 5 territory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Chamfer edges of the current part') and the geometry it operates on, so an agent immediately knows this is the edge-chamfering operation. It never names or contrasts with the closely related siblings add_fillet and add_full_round, which is what would have earned a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides conditional usage rules for the tool itself — 'Another angle than 45° needs from_face' and the printable-underside example at angle_deg=60 — which is genuinely helpful. It gives no guidance on when to choose chamfer over add_fillet/add_full_round or what document state is assumed, so usage is only implied relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_circular_patternA
Repeat a feature count times evenly around 360° about an axis.
The axis is the cylindrical face nearest (center_x_mm, center_y_mm) — e.g. a centre hole drilled there. feature_name defaults to the last feature. Bolt circle: drill a centre hole + one bolt hole, then pattern the bolt hole.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| center_x_mm | Yes | ||
| center_y_mm | Yes | ||
| feature_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses a key behavioral trait: the axis is determined by the cylindrical face nearest to (center_x_mm, center_y_mm), and `feature_name` defaults to the last feature. However, it doesn't mention whether the operation is destructive, requires a rebuild, or what happens if no cylindrical face is found. These are gaps, but the disclosed axis-selection behavior is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence states the core behavior, the second explains the axis selection heuristic, and the third gives a practical example. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema and no annotations, the description covers the essential semantics and provides a usage example. It doesn't specify error cases (e.g., no cylindrical face found) or whether the pattern is associative/parametric, but the core information needed to invoke the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the meaning of `count` (repeat count around 360°), `center_x_mm`/`center_y_mm` (used to find the nearest cylindrical face), and `feature_name` (defaults to last feature). This adds significant meaning beyond the raw schema, which only provides types and titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: repeating a feature `count` times around 360° about an axis. It specifies the resource (feature), the operation (repeat/pattern), and the key parameters (count, center coordinates). It also distinguishes itself from the sibling `add_linear_pattern` by explicitly describing a circular pattern around an axis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete usage example: 'Bolt circle: drill a centre hole + one bolt hole, then pattern the bolt hole.' This implies when to use the tool and how to set it up. It doesn't explicitly state when not to use it or name alternatives like `add_linear_pattern`, but the circular-vs-linear distinction is clear from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_coneA
Create a cone/frustum by revolving a trapezoidal profile 360°.
top_diameter_mm = 0 gives a full cone. Returns mass properties (volume = π·h/3 · (rb² + rb·rt + rt²)). Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Revolve | |
| height_mm | Yes | ||
| top_diameter_mm | Yes | ||
| bottom_diameter_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral burden. It discloses the construction method, the special full-cone case, and that the tool returns mass properties with a volume formula. It omits placement/orientation and failure behavior, but the core behavioral profile is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the main action appears first, followed by the key parameter case, return value, and prerequisite. Every sentence adds useful information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and no schema-level parameter descriptions, the description covers the essential call context: what the tool creates, when the shape is a cone vs. frustum, what it returns, and the need for a new part. It could add placement/orientation and numeric validity constraints, but an agent can likely invoke it correctly as written.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by explaining top_diameter_mm = 0 and giving a volume formula that ties height, bottom radius, and top radius together. The optional name parameter and the rb/rt notation are not detailed, but the required geometry is interpretable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 creates a cone/frustum by revolving a trapezoidal profile 360°. This directly distinguishes it from sibling tools like add_cylinder, add_disc, and add_revolved_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite ('Use new_part first') and clarifies the cone vs. frustum distinction via top_diameter_mm = 0. It does not explicitly name sibling alternatives or say when to prefer add_cylinder, 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.
add_counterbore_holeA
Cut a counterbored screw hole on the +Z face at (x_mm, y_mm).
A clearance shank through the thickness plus a larger coaxial flat-bottom pocket of cbore_depth_mm from the top — so a cap-head screw or heat-set insert sits flush/recessed (common for 3D-printed parts). cbore_diameter must exceed clearance_diameter. Coordinates share add_box's system. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Counterbore | |
| x_mm | Yes | ||
| y_mm | Yes | ||
| cbore_depth_mm | Yes | ||
| cbore_diameter_mm | Yes | ||
| clearance_diameter_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains the cut geometry, the coaxial flat-bottom pocket, the through-thickness clearance shank, the coordinate system sharing add_box's system, and that mass properties are returned. This gives the agent a solid behavioral model, though it doesn't mention prerequisites like an active part or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence states the core action, the second explains the geometry and use case, and the third adds the constraint and coordinate system. Every sentence adds value; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description covers the essential context: what is created, where, how, common use, parameter relationships, coordinate system, and return value. It could be more explicit about active-part requirements and when a simpler hole tool should be used, but it is largely complete for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does: clearance_diameter and cbore_diameter are semantically explained as clearance shank and counterbore pocket, cbore_depth is described, x_mm/y_mm are tied to the +Z face, and the constraint 'cbore_diameter must exceed clearance_diameter' is explicitly stated. Only the optional name parameter is not described, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Cut a counterbored screw hole on the +Z face at (x_mm, y_mm).' It clearly distinguishes this from generic hole tools like add_hole or add_hole_on_face by describing the counterbore geometry, making it unambiguous what operation is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is for cap-head screws or heat-set inserts that need to sit flush/recessed, common for 3D-printed parts. It does not explicitly name alternatives or state when not to use it, but the use case is concrete 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.
add_cylinderB
Create a cylinder by revolving a profile 360° about an axis.
The first revolve-based primitive. Returns the resulting mass properties (volume = π · r² · h). Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Revolve | |
| height_mm | Yes | ||
| diameter_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses that the tool returns mass properties including the volume formula, and hints at state requirements with 'Use new_part first.' However, it does not describe side effects on the current part, placement/axis orientation, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose first, no filler. 'The first revolve-based primitive' adds positioning context but is somewhat vague; overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, it leaves important gaps: default axis/orientation, units, placement, and behavior when no part exists. It covers purpose, prerequisite, and return value, but not enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only gives a volume formula using r while the schema parameter is diameter_mm. It does not explain diameter_mm, height_mm, or the optional name parameter beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Create a cylinder by revolving a profile 360° about an axis') with the resource and construction method. It is clear, though it does not explicitly differentiate from sibling add_revolved_profile beyond calling itself 'the first revolve-based primitive.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite ('Use new_part first') and implies it is the primitive form of revolve, but does not state when to choose it over add_revolved_profile or other primitives like add_disc/add_cone. No exclusions or alternative conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_discA
Create a disc/puck/flange: a circle extruded along +Z, centred at (x_mm, y_mm).
Flat faces are +Z/-Z, so add_hole and add_circular_pattern compose with it (round-flange bolt circles). The centre defaults to the origin; off it, its x and y are dimensions. Returns mass properties. Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Disc | |
| x_mm | No | ||
| y_mm | No | ||
| diameter_mm | Yes | ||
| thickness_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the build orientation (+Z with flat faces at +/-Z), the return value ('Returns mass properties'), and the prerequisite. It does not describe failure modes or what happens if the part is not open, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition, then composition, defaults, return value, and prerequisite in a tight sequence. The phrase 'off it, its x and y are dimensions' is compact but slightly cryptic; otherwise every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers geometry, orientation, composition, defaults, return value, and prerequisite. It omits the meaning of diameter/thickness and error behavior, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning for x_mm/y_mm (centre defaults to origin; off-origin they are dimensions), but says nothing about diameter_mm, thickness_mm, or name. It partially compensates for the coverage gap rather than fully closing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (disc/puck/flange) and defines the geometry precisely: 'a circle extruded along +Z, centred at (x_mm, y_mm)'. This cleanly distinguishes it from siblings like add_cylinder, add_box, and add_extruded_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('Use new_part first') and explains composition partners (add_hole, add_circular_pattern for bolt circles). It stops short of an explicit when-not-to-use versus add_cylinder, but the context is strong enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_extruded_profileA
Extrude a closed polygon into a solid: points_mm = [[x,y], ...] in mm.
The polygon (first-plane coordinates, same as add_box) is auto-closed and extruded by depth_mm. Unlocks arbitrary prismatic shapes (brackets, profiles, polygons). corner_radii_mm rounds the corners with real sketch fillets: one radius for all, or one per vertex (0 = sharp); equal radii share one dimension ('radius', else 'r'). rotate_deg turns the profile counterclockwise about about_mm ([x, y], the origin by default) first: draw a crank or a lug straight, then set it at its angle. draft_deg tapers the walls inwards as they rise (negative: outwards), a dimension 'draft' (a moulded boss, a printable taper). merge=False keeps the result a separate body: list_bodies, combine_bodies. Returns mass properties (volume = polygon area * depth; a right-angled corner of radius r loses r^2 (1 - pi/4), a concave one gains it).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Extrude | |
| merge | No | ||
| about_mm | No | ||
| depth_mm | Yes | ||
| draft_deg | No | ||
| points_mm | Yes | ||
| rotate_deg | No | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and discloses several important traits: auto-closing the polygon, merge=False leaving a separate body, and returning mass properties with a volume formula including corner-radius effects. It does not state preconditions such as requiring an active part or document, which would be valuable for a mutation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core operation in the first sentence, then each subsequent clause earns its place by explaining a parameter's geometry, behavior, or use case. Despite its length, there is no filler or repetition, and the density is appropriate for eight undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (eight params, no annotations, no output schema, zero schema descriptions), the description is very complete: it covers parameters, return values, and key side effects like merge. The remaining gaps are preconditions (e.g., active part/document) and explicit routing to the on-plane/on-face siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so thoroughly: points_mm format, depth_mm extrusion, corner_radii_mm modes and dimension naming, rotate_deg with about_mm and rotation direction, draft_deg sign convention and dimension name, and merge behavior. Only the trivial name parameter is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Extrude a closed polygon into a solid,' and gives the core input format. It also anchors the tool by saying the polygon uses 'first-plane coordinates, same as add_box.' However, it does not explicitly differentiate this tool from the closely named siblings add_extruded_profile_on_plane or add_extruded_profile_on_face, leaving the agent to infer the distinction from 'first-plane'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete use cases (brackets, profiles, polygons; draw a crank or lug straight; a moulded boss; a printable taper) and names alternatives for the merge=False case (list_bodies, combine_bodies). What is missing is explicit when-to-use guidance versus the on-plane and on-face extrusion siblings, so the agent still has to infer when this base-plane variant is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_extruded_profile_on_faceB
Grow a polygon boss depth_mm out of ANY planar face: points_mm = [[x,y,z], ...] in mm.
The 3D points lie on the face (found as for add_hole_on_face). For pads, ledges and mounting blocks on an existing part. corner_radii_mm rounds the corners as for add_extruded_profile. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| name | No | Boss | |
| depth_mm | Yes | ||
| points_mm | Yes | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden. It does disclose a key constraint (points must lie on the face), the point format, corner-rounding behavior, and that it returns mass properties, but omits whether existing geometry is merged/union-ed, failure behavior if points miss the face, or any permission/rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and required inputs in the first sentence, then adds constraint/usage detail. Cross-references are compact, though the reliance on 'as for add_hole_on_face'/'as for add_extruded_profile' slightly leans on the reader knowing siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, 0%-schema-coverage, no-annotation, no-output-schema tool, the description covers the core geometry params and return value but leaves the required 'face' selector and 'name' unexplained, so it is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains points_mm ([[x,y,z]] in mm on the face), depth_mm (extrusion depth), and corner_radii_mm (rounds corners), but leaves the required 'face' parameter and the 'name' parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Grow a polygon boss ... out of ANY planar face,' with the required points_mm and depth_mm named. It distinguishes itself from the plane-based add_extruded_profile by scoping to 'ANY planar face,' though it does not explicitly separate itself from add_boss_on_face.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers use-case context ('For pads, ledges and mounting blocks on an existing part') and analogizes to add_hole_on_face and add_extruded_profile, but gives no explicit when-to-use-vs-alternatives routing against the several similar siblings (add_boss_on_face, add_extruded_profile).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_extruded_profile_on_planeA
Extrude a polygon drawn on a reference plane, such as one add_plane made at an angle.
points_mm = 3D [x, y, z] points ON the plane (origin + u x_axis + v y_axis from add_plane). depth_mm along the plane's normal, or the other way with reverse=True; merged with the part. corner_radii_mm, draft_deg and merge work as for add_extruded_profile. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Extrude | |
| merge | No | ||
| plane | Yes | ||
| reverse | No | ||
| depth_mm | Yes | ||
| draft_deg | No | ||
| points_mm | Yes | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the coordinate frame for points (origin + u/v from add_plane), the direction logic (normal, reversed via reverse=True), the merge behavior, and that mass properties are returned. It omits failure/error conditions and what merge=False produces, but the core behavioral profile 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a dense but well-organized set of parameter notes. Every sentence earns its place; the telegraphic style ('points_mm = ...') is efficient rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers the plane dependency, direction, merge, the reused parameters, and the return value. It is nearly sufficient for correct invocation, missing only explicit error/edge-case behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: points_mm, depth_mm, reverse, corner_radii_mm, draft_deg, merge, and the plane are all explained, including the non-obvious 3D points-on-plane convention. Only 'name' is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (extrude a polygon on a reference plane) and explicitly ties the plane to add_plane, distinguishing it from add_extruded_profile and add_extruded_profile_on_face. An agent can select this over its siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'such as one add_plane made at an angle' makes the preconditions clear and points to the sibling that produces the required plane. It stops short of an explicit when-not or a direct comparison to add_extruded_profile_on_face, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_extruded_slotB
Extrude a stadium (rounded tab, lug or link) from point start_mm to end_mm ([x, y] mm).
The half-round ends are centred on the two points themselves; width_mm is the tab's width, depth_mm the extrusion along +Z. Volume = (width * length
pi * (width/2)^2) * depth. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Slot | |
| end_mm | Yes | ||
| depth_mm | Yes | ||
| start_mm | Yes | ||
| width_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and partially meets it: it discloses the return value ('Returns mass properties'), the geometric semantics of the half-round ends, and a volume formula. It does not state whether the extrusion is unioned into an existing body, whether it is additive vs. subtractive, or any failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and shape, then tight parameter semantics. The volume formula is arguably extra but earns its place by pinning down exactly how width/length/depth combine.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, and the description covers geometry and return value reasonably well. It leaves open whether the result is added to an existing solid or creates a standalone body, and gives no error or naming guidance for a 5-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: start_mm/end_mm are [x, y] mm points that centre the half-round ends, width_mm is the tab width, depth_mm is the +Z extrusion. Only the optional 'name' parameter is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Extrude) and resource (a stadium / rounded tab, lug or link) and gives the geometric definition, which distinguishes it from cut_slot and the generic add_extruded_profile. It never explicitly names a sibling, so differentiation is by shape description only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the geometry is but gives no when-to-use guidance or when-not, and does not mention the obvious alternatives (add_extruded_profile, cut_slot). Usage is only implied by the shape description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_extruded_splineA
Extrude a smooth CLOSED spline through points: points_mm = [[x,y], ...] in mm.
Like add_extruded_profile but the outline is a smooth curve through the points (free-form/organic shapes: cams, rounded outlines, aesthetic bosses), auto-closed and extruded by depth_mm. A spline's area is not analytic, so the returned volume is the measured value. Returns mass properties. Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Spline | |
| depth_mm | Yes | ||
| points_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the spline is auto-closed, that volume is measured rather than analytic, and that mass properties are returned. It also notes the prerequisite of new_part. These go beyond the schema and give useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no fluff. The first sentence states the action and inputs, the second differentiates from a sibling, and the third covers a key behavioral note and return value. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain returns; it does ('Returns mass properties'). It also notes the measured volume. It lacks details on potential errors or edge cases, but for a creation tool with clear prerequisites and behavior, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the format of points_mm ([[x,y], ...] in mm) and that depth_mm is the extrusion depth. It does not describe the optional name parameter, but that is minor. The main required parameters are well explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: extrude a smooth CLOSED spline through points. It clearly distinguishes itself from the sibling add_extruded_profile by specifying the smooth curve nature, and mentions the inputs and output. An agent can immediately understand what it does and how it differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a direct contrast with add_extruded_profile ('Like add_extruded_profile but...') and gives examples of use cases (cams, rounded outlines, aesthetic bosses). Also instructs 'Use new_part first.' It doesn't explicitly list when not to use other tools, but the main alternative is clearly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_filletA
Round edges of the current part with one constant radius (mm).
edges: "all" (default), "x"/"y"/"z" for edges parallel to that world axis, a face outline like "+z:outline" (the outer edges of the top face, not those of holes in it), every edge of one feature like "feature:Boss" (its top and where it meets the part: a moulded look), or explicit indices like "2,5" from list_edges. radii_at_mm = [[x, y, z, r], ...] makes the radius vary: r at the edge end at each point (list_edges gives the ends), radius_mm at the other ends, straight in between; 'vertex_radii' gives each end's dimension. skip_shorter_mm leaves out edges shorter than that. tangent_propagation=True carries the round on along edges that run on smoothly from the given ones, as SolidWorks does by default: an edge ending where it runs into another tangentially, such as round a fillet, only rounds so. A refusal names the edges the radius does not fit (each tried alone, and with propagation). Returns the number of edges filleted and the mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Fillet | |
| edges | No | all | |
| radius_mm | Yes | ||
| radii_at_mm | No | ||
| skip_shorter_mm | No | ||
| tangent_propagation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses failure behavior ("A refusal names the edges the radius does not fit") and return information ("Returns the number of edges filleted and the mass properties"), though it does not discuss prerequisites or feature-creation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but it is front-loaded with the core purpose and every subsequent sentence adds operational detail about edge selection, variable radii, and propagation. It is appropriately sized for a complex CAD operation, though slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema description coverage, the description supplies substantial behavioral and parameter context, including return values and failure handling. It remains incomplete only because the name parameter is never described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives rich meaning for edges, radii_at_mm, skip_shorter_mm, and tangent_propagation, but does not explain the name parameter, leaving one of six parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Round edges of the current part with one constant radius (mm)." The operation is clear, but the description does not explicitly differentiate it from sibling tools such as add_chamfer or add_full_round.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the opening sentence and extensive edge-selection guidance, but there is no explicit when-to-use guidance, no when-not-to-use conditions, and no named alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_full_roundB
Round a rib's top off completely: a full round fillet, as on a moulded part.
The face facing face ("+z", ...) through the point (x, y, z) is the top;
the two opposite flat side faces along it that lie closest together are the
sides, so the round runs across the rib, not along it. The radius is half
their distance (width_mm in the result) and follows the rib. Hand
calculation: a rib w wide and L long loses L w^2 (1/2 - pi/8).
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| name | No | FullRound | |
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds real geometric behavior context (the round runs across the rib, not along it; radius is half the side distance; result contains width_mm), which is valuable. But it never states that this is a model-mutating operation, nor covers failure conditions or permissions, leaving the mutation nature undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose, then selection rules, then the result/area formula. Dense but each sentence earns its place; the hand-calculation formula is a small extra but aids the geometry mental model.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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's hint that the result contains width_mm is a useful partial return description. However, for a mutation tool with 0% schema coverage and no annotations, it omits whether the model is modified, the effect on existing geometry, and the meaning of the `name` parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for most parameters: it defines what `face` denotes (the top face), how the two side faces are selected, and that (x, y, z) is a point the top face passes through. Only the optional `name` parameter goes unexplained, which is a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: "Round a rib's top off completely: a full round fillet, as on a moulded part." This is clearly distinguished from a generic fillet by being scoped to a rib top and to a full-round profile. It does not, however, explicitly name sibling tools like add_fillet or add_chamfer to disambiguate the choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains geometry selection (which face is the top, which are the sides) but never states when to use this versus add_fillet, add_chamfer, or other rounding tools, nor any prerequisites or exclusions. Usage must be inferred from the geometry narrative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_holeA
Cut a circular through-hole at (x_mm, y_mm), through the part's depth axis.
The hole runs straight through the thickness (the add_box extrude direction), perpendicular to the width x height profile face. Coordinates share add_box's system (the centre of a 40x20 profile is x=20, y=10). Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Hole | |
| x_mm | Yes | ||
| y_mm | Yes | ||
| diameter_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the through-thickness behavior ('runs straight through the thickness'), the orientation relative to the profile face, the coordinate system with an example, and the fact that mass properties are returned. It does not cover prerequisites or failure behavior when a part is absent, but the essential runtime behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action and geometry, with supporting coordinate detail kept to a second sentence. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple hole primitive, the description covers geometry, orientation, coordinate frame, and return value, and the optional name has a schema default. The exact mass-properties payload is unspecified because no output schema exists, and no alternative-selection guidance is given, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds real meaning to x_mm and y_mm ('share add_box's system... centre of a 40x20 profile is x=20, y=10'), but diameter_mm receives no constraints or unit clarification beyond its name, and the optional name parameter is ignored.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Cut a circular through-hole') and locates it in the part geometry ('at (x_mm, y_mm), through the part's depth axis'). The 'through-hole' and 'depth axis' wording distinguishes it from sibling hole variants like add_counterbore_hole and add_hole_on_face 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the geometry described: a circular through-hole along the depth axis in the same coordinate system as add_box. It never states when to choose this over add_counterbore_hole/add_hole_on_face or notes prerequisites such as a part already existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_hole_on_faceA
Drill a round hole on ANY planar face, centred at 3D point (x, y, z) mm.
face is "+x"/"-x"/"+y"/"-y"/"+z"/"-z": the face facing that way through the
point is drilled, so a pocket floor or a step works too. Through all, or
depth_mm deep (blind: heat-set inserts, screw pilots). Returns mass
properties and dimensions (diameter, x, y, depth).
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| name | No | Hole | |
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| depth_mm | No | ||
| diameter_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it defines through-all vs blind behaviour via depth_mm, explains the direction-string semantics, and states what is returned (mass properties and dimensions). It omits error/failure behaviour and permission needs, but the mutation semantics are 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, front-loaded sentences with no filler; the primary action leads and the face/depth details follow. Slightly compact given the number of concepts packed in, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the geometry semantics and even the return value. Minor gaps remain around name and diameter, but an agent could call this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it enumerates the face direction strings, ties x/y/z to a 3D centre point in mm, and explains depth_mm as null-for-through vs a blind depth. It does not clarify diameter_mm or the name default, but the geometry-critical parameters are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (drill) and resource (round hole) with a clear scope: on ANY planar face, centred at a 3D point. It does not explicitly differentiate itself from sibling tools add_hole, add_hole_wizard, or add_counterbore_hole, so an agent must infer 'on_face' means anchored to an arbitrary planar face.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage context: pocket floors and steps work too, and blind holes suit heat-set inserts and screw pilots. However, it never says when to pick this over add_hole / add_hole_wizard, 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.
add_hole_wizardB
An ISO hole from SolidWorks' Hole Wizard, sized by its standard tables.
kind: 'clearance' (ISO 273), 'counterbore' (socket head cap screw),
'countersink' (socket countersunk screw) or 'tapped'; size e.g. 'M3'.
Centred at (x, y, z) mm on the face through that point; through all, or
depth_mm deep. fit: 'close' / 'normal' / 'loose'. For tapped holes
thread='modeled' cuts a real, printable ISO thread instead of SolidWorks'
cosmetic one. Returns the standard's sizes in hole and mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | normal | |
| face | Yes | ||
| kind | Yes | ||
| name | No | ||
| size | Yes | ||
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| thread | No | cosmetic | |
| depth_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose useful traits: through-all vs depth_mm termination, that thread='modeled' cuts a real printable thread rather than SolidWorks' cosmetic one, and that it returns standard sizes plus mass properties. It omits any statement about mutating the active part, permissions, or reversibility, so it is only partially adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded, leading with the tool's identity before enumerating options. Line breaks group related parameters sensibly; a couple of clauses (e.g. thread='modeled') are long but each carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no annotations and no output schema, the description covers geometry and sizing well and even mentions the return payload. It still lacks usage guidance, the meaning of name, and any indication of side effects on the part, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains kind values (clearance/counterbore/countersink/tapped with their ISO standards), size format ('M3'), fit options, thread behavior and depth semantics, plus centring on the face at (x,y,z). Only name is left unexplained, so it nearly covers all 10 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 adds an ISO Hole Wizard hole sized by standard tables, which is more precise than the generic sibling add_hole and distinct from add_counterbore_hole. However it never explicitly names or contrasts those siblings, so differentiation is inferential 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no mention of alternatives such as add_hole, add_counterbore_hole or add_hole_on_face. The text is almost entirely parameter semantics, leaving the agent to infer selection context on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_linear_patternA
Repeat a feature count times, spacing_mm apart, along a direction.
direction: "+x"/"-x"/"+y"/... feature_name: the feature to repeat (e.g. "Hole"); defaults to the most recently added feature. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| direction | No | +x | |
| spacing_mm | Yes | ||
| feature_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the tool returns mass properties and that feature_name defaults to the most recently added feature, which is useful. However, it does not mention that the operation modifies the part, what happens on invalid feature names, or any potential side effects, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and efficient: a one-sentence purpose statement followed by parameter details. It front-loads the core operation and every sentence contributes useful information—no filler, digressions, or redundant repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no annotations, and no output schema, the description covers all parameters and explicitly states the return value (mass properties). It is largely sufficient for an agent to call the tool correctly. However, it omits explicit statements about model mutation and failure conditions when no feature exists, which would be valuable for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the sole source of parameter meaning. It explains all four parameters: count (times), spacing_mm (distance apart), direction (with examples like '+x'/'-x'+y'), and feature_name (with default behavior). This adds substantial semantic value beyond the bare schema, making correct invocation feasible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific operation: 'Repeat a feature `count` times, `spacing_mm` apart, along a direction.' It names the resource (feature) and key parameters (count, spacing, direction). The linear nature and direction format (+x/-x/+y) implicitly distinguish it from the sibling add_circular_pattern, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter usage hints (direction format, feature_name defaulting to most recently added feature) but does not explicitly state when to use this tool versus alternatives like add_circular_pattern. It lacks any exclusions, prerequisites, or guidance on when not to use it, leaving the agent to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_lofted_solidA
Loft (blend) 2+ closed profiles on parallel planes stacked along +Z.
profiles_mm: per profile a polygon [[x,y],…] (mm) in Front-plane coords, or a round section {"center_mm": [x, y], "diameter_mm": d} (thick at the knee, thin at the foot, centres free to wander). heights_mm = the +Z offset (mm) of each profile, same length, strictly increasing, starting at 0. A 2-profile loft is a ruled transition; 3+ blend smoothly. Each profile starts at its first vertex (a round one on +x): give polygons in a consistent vertex order to avoid twist. Returns mass properties. Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Loft | |
| heights_mm | Yes | ||
| profiles_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so well: it discloses that 2 profiles give a ruled transition while 3+ blend smoothly, that centers may wander, the vertex-order twist hazard, and that the tool returns mass properties. It does not state permissions or whether the operation is reversible, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and every following sentence adds a distinct constraint (ordering, length, twist). The heavy parenthetical asides make it denser than ideal, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex geometry tool with no annotations and no output schema, the description covers inputs, ordering rules, the ruled-vs-smooth distinction, and the return (mass properties). It is nearly complete, missing only failure modes or unit/permission caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: profiles_mm is explained as either a polygon of [x,y] pairs in Front-plane coords or a round {center_mm, diameter_mm} section, and heights_mm is described as a strictly increasing +Z offset list of equal length starting at 0.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Loft/blend) and resource (closed profiles on parallel planes along +Z), with enough detail to distinguish it from siblings like add_swept_profile and add_revolved_profile 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete prerequisite ('Use new_part first') and implicitly frames the tool as a solid-creation step, but never states when to choose loft over the neighbouring sweep/extrude/revolve tools. 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.
add_mateA
Mate a face of one component to a face of another.
comp_a/comp_b are component names ('Bed' or 'Bed-1'; 'Leg-1/Thigh-1' inside
a sub-assembly). face_a/face_b select a face in that component's OWN frame:
by direction "+x"/"-x"/"+y"/... (optionally "+y:inner" for the cavity side
of a hollow part), by its list_faces(component=...) index, "#5", or by a
point on it, "@x,y,z" (a hole's wall: its centre plus the radius along x).
mate_type between planar faces:
"coincident", "distance" (distance_mm), "parallel", "perpendicular" or
"angle" (angle_deg between the faces' normals, 0..180); "concentric" between
two cylindrical faces (a pin in a hole, a hinge axis), leaving the turn
about the axis free. flip takes the other solution: the mirror side of a
distance, the other turning direction of an angle. A distance or angle
mate returns its dimension: drive it with
set_dimension, or step it with check_motion. An angle mate's dimension
then turns the joint the whole way round, past 180 and below 0 (-30 is 30
the other way, the same turn as 330). The result is measured back
after the rebuild; a mate that does not hold is removed and the components
are put back.
| Name | Required | Description | Default |
|---|---|---|---|
| flip | No | ||
| comp_a | Yes | ||
| comp_b | Yes | ||
| face_a | Yes | ||
| face_b | Yes | ||
| angle_deg | No | ||
| mate_type | No | coincident | |
| distance_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the verification/rollback semantics ('The result is measured back after the rebuild; a mate that does not hold is removed and the components are put back') and the dimension-driving workflow. This is non-obvious failure behavior an agent could not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and most sentences are information-dense, but the nested parentheticals and the extended angle-wrap discussion ('past 180 and below 0') push length higher than strictly necessary. Still, very little is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter assembly-mate tool with no output schema, no annotations, and 0% schema coverage, the description covers selection syntax, valid mate types, modifiers, follow-up tools, return value ('its dimension'), and failure handling. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: comp_a/comp_b naming conventions, four distinct face_a/face_b selection syntaxes (direction with ':inner', list_faces index, '#5', '@x,y,z'), the enumerated mate_type values with distance_mm/angle_deg applicability, and flip's effect on the solution. Only default values go unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a precise verb and resource: 'Mate a face of one component to a face of another.' It clearly distinguishes this assembly operation from siblings like delete_mate, suppress_mate, and set_component_transform, so an agent can identify it without schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes when this tool applies (positioning two components via face mates) and routes the agent to follow-on tools: 'drive it with set_dimension, or step it with check_motion.' It does not explicitly state when NOT to use it or contrast it against alternatives like set_component_transform, 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.
add_mirrorA
Mirror features, or the whole body, about the 'front'/'top'/'right' plane moved offset_mm.
Mirrors about z / y / x = offset_mm; plane may also name another plane in the part ('Plane1'), moved offset_mm along its normal. features: list_features names; the copies follow their seeds. Without features the body is mirrored and merged: model half of a symmetric part, mirror it about the face where the halves meet. The plane position comes back as dimension 'plane_offset'. Fails, leaving the part as it was, when a copy would land outside the part.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Mirror | |
| plane | Yes | ||
| features | No | ||
| offset_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the merge behavior of a body mirror, the failure mode and its guarantee ('Fails, leaving the part as it was, when a copy would land outside the part'), and the resulting dimension name 'plane_offset'. It does not state prerequisites such as requiring an open part or the effect on pre-existing features.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded and every sentence carries information, but the plane/offset explanation is dense and split awkwardly across line breaks, forcing a re-read. Slight tightening would improve it without losing substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must stand alone, and it covers inputs, merge semantics, failure behavior, and the produced dimension. The main remaining gap is the absence of any precondition (e.g., an open part) or interaction with existing features.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: it explains that plane accepts 'front'/'top'/'right', a z/y/x offset, or another plane name moved along its normal, that offset_mm is that displacement, and that features takes list_features names whose copies follow their seeds. Only the 'name' parameter is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Mirror features, or the whole body') and immediately bounds the scope by plane type and offset. An agent can distinguish this from the pattern siblings (add_linear_pattern, add_circular_pattern) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage scenario: 'Without features the body is mirrored and merged: model half of a symmetric part, mirror it about the face where the halves meet.' That tells the agent when the no-features path applies, but no alternative tool is named for cases where mirroring is not the right operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_planeA
Make a reference plane to sketch on: an offset or a turned plane, its position a dimension.
base moved offset_mm along its normal (base: front/top/right or a plane by name), or a default plane turned angle_deg about a model axis it holds, about='x'/'y'/'z' (front holds x and y, top x and z, right y and z), by the right-hand rule. For both, turn first, then offset that plane. Returns its name for plane= arguments, and origin_mm, normal, x_axis and y_axis: a point (u, v) on it is origin + u x_axis + v y_axis.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | front | |
| name | No | ||
| about | No | ||
| angle_deg | No | ||
| offset_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses transform order ('turn first, then offset'), the right-hand-rule convention, and the exact return contents (name, origin_mm, normal, x_axis, y_axis). It stops short of stating side effects on the document or error behavior for invalid inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence front-loads purpose, then details follow. It is dense but each clause (axis conventions, transform order, return formula) earns its place; heavier parenthetical nesting slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema and no annotations, the description supplies the missing parameter meanings, the return schema, and construction semantics. Only error/edge-case behavior is unaddressed, which is a minor gap for a plane-creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it defines base (front/top/right or a plane by name), offset_mm (distance along the normal), angle_deg (turn amount), and about='x'/'y'/'z' with which axes each base holds. The 'name' input parameter is only referenced obliquely via the return value, leaving mild ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Make a reference plane to sketch on') and immediately distinguishes its two construction modes (offset vs. turned). An agent can tell exactly what this builds and how it differs from siblings like add_sketch or add_extruded_profile_on_plane.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to configure the two modes in detail, but never states when to choose add_plane over alternatives or the conditions/prerequisites for each mode. Usage is implied rather than prescribed, which is adequate but leaves selection reasoning to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_revolved_profileA
Revolve a closed profile on the Front plane about an axis in it.
Without axis_mm: profile_mm = [[r, z], …] in mm, r = distance from the Y axis, z = position along it. With axis_mm = [[x1, y1], [x2, y2]]: profile_mm gives [x, y] points and the axis is the line through those two points, anywhere and at any angle (a hub turned about its own centre). Auto-closed and spun angle_deg (default 360°). Points on the axis give a solid (shafts, vases); a profile away from it gives a ring. The profile may not cross the axis. corner_radii_mm rounds corners as for add_extruded_profile (not those on the axis). Returns mass properties. Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Revolve | |
| axis_mm | No | ||
| angle_deg | No | ||
| profile_mm | Yes | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the auto-close/spin behavior, the default 360° angle, the hard constraint that the profile may not cross the axis, and that it returns mass properties. It stops short of document-state requirements beyond 'use new_part first' 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then builds geometry semantics in dense but useful sentences. Slightly long for a tool description, but nearly every clause carries information the schema cannot.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters at 0% schema coverage and no output schema are fully accounted for: input formats, defaults, constraints, geometry outcomes and the returned mass properties are all stated, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it specifies the two distinct profile_mm formats ([r,z] radial vs [x,y] absolute) tied to the presence of axis_mm, explains axis_mm as a two-point line, and notes angle_deg defaults and corner_radii_mm corner-only-on-profile behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Revolve a closed profile on the Front plane about an axis in it'), and the geometry described (spun profile, axis semantics) clearly separates it from add_extruded_profile, add_swept_profile and add_lofted_solid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection context (points on the axis yield solids/shafts, an offset profile yields a ring) and a prerequisite ('Use new_part first'), but never names an alternative sibling or states when not to use this in favor of extrusion/sweep/loft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_ribA
Add a straight stiffening rib / gusset in a plane parallel to the Front plane.
start_mm/end_mm = [x, y] ends of the rib's free edge (add_extruded_profile coordinates); the plane sits at height z_mm. The rib grows toward toward_mm (any [x, y] point on the side to fill, e.g. the inner corner of an L-bracket) until it meets the part, thickness_mm thick, centred on the plane. Returns mass properties: a triangular gusset with legs a and b adds a*b/2 * thickness.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Rib | |
| z_mm | Yes | ||
| end_mm | Yes | ||
| start_mm | Yes | ||
| toward_mm | Yes | ||
| thickness_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does so well: it explains how the rib grows toward toward_mm until meeting the part, how thickness is applied, and that it returns mass properties. It doesn't mention prerequisites like an active part or failure modes, but it discloses the key behavioral and return characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the purpose, then parameter semantics, then return behavior. Each sentence provides distinct value, and the mass-properties formula earns its place because it tells the agent what result to expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no param descriptions, and no output schema, the description is remarkably complete for a CAD primitive tool. It covers the geometry, all key parameters, and the return. Minor gaps are the lack of an explicit prerequisite that a part must be open and no discussion of failure conditions if the rib never meets the part.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description explains almost every meaningful parameter: start_mm/end_mm as [x,y] endpoints, z_mm as plane height, toward_mm as the fill direction, and thickness_mm as the rib thickness. It also ties coordinates to add_extruded_profile, which helps an agent understand the expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: adds a straight stiffening rib/gusset in a plane parallel to the Front plane. The geometric detail and the mention of 'rib/gusset' differentiate it clearly from generic extrusion or sweep siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the clear domain language ('stiffening rib / gusset'), and the coordinate reference to add_extruded_profile gives some context. However, it does not explicitly state when to prefer this over alternatives like add_extruded_profile or add_swept_profile, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_shellA
Hollow the current part to a wall of thickness_mm, opening one face.
open_face: a direction "+z"/"-z"/"+x"/... removes that planar face (open shell); "none" makes a closed hollow. Returns the resulting mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| open_face | No | +z | |
| thickness_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool modifies geometry (hollows the part) and returns mass properties, which is important context. However, it does not mention destructive nature (permanent modification), potential side effects like altering existing features, or error conditions. It adds some value beyond the schema but has gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loads the core operation. It efficiently explains the open_face parameter in the second sentence. No wasted words, though it could be slightly more structured, but it's 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary operation and parameter semantic, but lacks details on return format (even though output schema is absent), prerequisites (e.g., must be a solid part), and edge cases like multiple faces or non-cuboid shapes. For a tool with 2 parameters and no output schema, it is functional but misses some completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must explain parameters. It does: open_face is clearly described with possible values and meanings, and thickness_mm's purpose is implied by 'wall of thickness_mm'. The description provides meaning that the schema lacks, making it highly valuable for correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Hollow') and the resource ('current part'), and clarifies that it transforms the part by creating a wall of given thickness. It also explicitly defines the open_face parameter's effect, making the tool's purpose unambiguous. This distinguishes it from sibling modeling tools like add_box or add_shell's related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for hollowing operations but does not specify when to use this versus alternatives like cut_profile or add_hole. It lacks explicit context about part requirements (e.g., must be a solid with at least one face) or scenarios where a different tool is more appropriate. However, it does convey the core operation clearly enough for an agent to infer basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sketchA
Draw a sketch of lines, arcs and splines on a plane, fully defined, to extrude or cut.
plane: "front", "top", "right" or a plane by name (add_plane). Points are [u, v] in the plane's own axes, which the result gives (origin_mm + u x_axis + v y_axis): front is (x, y), top (x, -z), right (-z, y). The outline starts at start_mm; each segment runs on from where the last ended: {"line": [u, v]}; {"arc": [u, v], "through": [u, v]} (an arc through a middle point); {"arc": [u, v], "tangent": true} (an arc flowing on from the segment before); {"spline": [[u, v], ..., [u, v]]} (through the points, ending at the last). "tangent": true on a line checks that it flows on. End on start_mm to close the outline. Segments that meet smoothly get a tangent relation, the rest is dimensioned from the origin: x/y for the i-th point given (points_mm lists them; start_mm is 0), r for the radius of segment k. Then extrude_sketch / cut_sketch the returned sketch.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| plane | Yes | ||
| segments | Yes | ||
| start_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it defines the plane-relative (u, v) coordinate mapping per plane, the start_mm anchor, closure rule, automatic tangent relations, and the naming of generated dimensions (x<i>/y<i>, r<k>). This is the rich behavioral context an agent needs to compose a valid sketch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded with the core action first, then coordinate conventions and segment grammar. Every sentence carries construction detail; the size is justified for a geometrically complex tool, though it reads as a single block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains the return (a fully defined sketch whose plane axes and points_mm are accessible) and the follow-up tools. Only the undocumented 'name' parameter and the absence of any error/edge-case guidance leave minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it documents plane, start_mm, and the segment format in detail. The 'name' parameter is left entirely undocumented in both schema and description, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (draw a sketch of lines, arcs and splines on a plane) plus scope and downstream intent (to extrude or cut). This clearly separates it from neighbors like add_extruded_spline, add_swept_profile, and read_sketch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent forward ('Then extrude_sketch / cut_sketch the returned sketch') and points to add_plane for named planes. It gives a clear context for use but does not state when not to use this or contrast it against other profile-creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_swept_pipeA
Sweep a circular profile (pipe/tube/rod) along a 2D path on the Front plane.
path_mm = [[x, y], …] in mm is the centreline. Interior corners are rounded with bend_radius_mm (required when the path turns; a 2-point straight path needs none); smooth=True runs a spline through the points instead, a flowing curve. diameter_mm = outer Ø; the round profile is auto-generated perpendicular to the path. Returns mass properties (pi r^2 x path_length_mm). Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Pipe | |
| smooth | No | ||
| path_mm | Yes | ||
| diameter_mm | Yes | ||
| bend_radius_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and discloses useful traits: the round profile is auto-generated perpendicular to the path, smooth creates a spline, bend radius is conditional, and it returns mass properties via pi r^2 x path_length_mm. It stops short of covering error conditions or document-context requirements beyond 'Use new_part first'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and resource, then explains the key parameters and return value in a few dense sentences. Every sentence adds useful instruction or behavior; no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a feature-creation tool with no annotations and no output schema, it covers the core geometry, parameter semantics, prerequisite part context, and return-value formula. Minor gaps remain around the optional name parameter and explicit failure modes, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: path_mm is [[x, y], ...] in mm as the centreline, diameter_mm is the outer diameter, bend_radius_mm is required when the path turns, and smooth runs a spline. Only the optional name parameter is not described, which is a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: sweep a circular profile (pipe/tube/rod) along a 2D path on the Front plane. It is clear what solid is created and its geometric scope, but it does not explicitly differentiate itself from the generic sibling add_swept_profile or other sweep/profile tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides prerequisite context ('Use new_part first') and conditional guidance for bend_radius_mm and smooth, which implies when the tool applies. However, it gives no explicit alternatives or when-not-to-use guidance versus siblings such as add_swept_profile or add_cylinder.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_swept_profileA
Sweep an arbitrary closed PROFILE (cross-section) along a 2D PATH.
profile_mm = [[u,v],…] in mm: the closed cross-section on the Right plane (u → world -Z, v → world +Y), centred near the origin. path_mm = [[x,y],…] in mm on the Front plane — MUST start at the origin heading +X (the profile is perpendicular to the path there). Path corners are rounded with bend_radius_mm; corner_radii_mm rounds the profile's corners as for add_extruded_profile. Volume = profile_area · path_length. For non-round extrusions along a path (rails, gaskets, trim, channels). Returns mass properties. Use new_part first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Sweep | |
| path_mm | Yes | ||
| profile_mm | Yes | ||
| bend_radius_mm | No | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: hard constraints on the input ('MUST start at the origin heading +X', profile perpendicular there), the body it creates, the volume relation, and the return value ('Returns mass properties'). It omits failure modes and whether the sweep is additive/merges with existing bodies, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The capability and its use cases are front-loaded, and the dense notation is justified by the geometry it encodes. The parenthetical coordinate mapping is information-heavy but not padded; slightly telegraphic for a first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param geometry tool with no annotations and no output schema, it covers geometry conventions, constraints, rounding behaviour, and a return-value note, plus the ordering prerequisite. Remaining gaps (typical error cases, how the new body interacts with existing ones) are moderate but not blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: profile_mm and path_mm orientations, planes, coordinate mappings, and units are given, and bend_radius_mm / corner_radii_mm are explained in terms of the behaviour they change. Only 'name' is left unaddressed, which is self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Sweep an arbitrary closed PROFILE along a 2D PATH') and then scopes it with concrete use cases (rails, gaskets, trim, channels) that separate it from the sibling add_swept_pipe (round pipe) and swept_region. An agent can pick this 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('For non-round extrusions along a path') and gives a prerequisite ('Use new_part first'). It implies rather than names the alternative (add_swept_pipe for round sections), so no exclusion rule is spelled out, keeping it 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.
add_text_on_faceA
Engrave text into ANY planar face, or emboss it with emboss=True (labels, version numbers).
(x, y, z) is the text's lower-left corner on the face; the text runs along the face sketch's horizontal axis: upright along +x on the top (+z) and front (-y) faces, turned on the others (vertical on +/-x, upside down on +y), so put labels on the top or front. height_mm is the character height, depth_mm the engraving depth or embossing height. The position is two dimensions ('x', 'y'); font must be installed (default: SolidWorks' own). Returns text_area_mm2, since letters have no hand calculation.
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| font | No | ||
| name | No | Text | |
| text | Yes | ||
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| emboss | No | ||
| depth_mm | Yes | ||
| height_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the per-face orientation behavior, the font-installed prerequisite, and the return value (text_area_mm2). It omits permission/error behavior and mutation reversibility, but for a local CAD modeling op this is strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and use case, and each sentence carries real information. The orientation clause is dense but earns its place by preventing misplacement; minor redundancy between the corner and 'two dimensions' phrasing costs a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description supplies the return value, and for a 10-param tool at 0% schema coverage it documents most semantics plus orientation behavior. The undocumented face/name parameters and the z-axis ambiguity are the only material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and does explain x/y/z, height_mm, depth_mm, emboss and font semantics. However it leaves 'face' and 'name' undocumented and introduces confusion by first describing a three-coordinate corner then stating 'the position is two dimensions ('x','y')' while z_mm is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Engrave text into ANY planar face, or emboss it') that an agent can distinguish from every sibling, none of which touch face text. The parenthetical use case (labels, version numbers) sharpens intent further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance by explaining which faces yield readable text ('put labels on the top or front') and how the emboss=True variant is selected. No explicit alternatives are named, but no sibling overlaps this operation, so the practical routing advice is the useful part and it is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_threadA
Cut a real, printable ISO metric thread (SolidWorks' own Thread feature).
size: e.g. 'M10x1.5', 'M3x0.5', 'M10x1.0' -- checked against SolidWorks' thread profiles. (x_mm, y_mm, z_mm) = centre of the circular edge where the thread starts: the end face of a rod, or the mouth of a hole (internal=True). It runs length_mm into the material, right-handed. External: the rod must have the nominal diameter (M10 -> Ø10). Internal: drill the ISO basic minor diameter first, D - 1.0825*P (M10x1.5 -> Ø8.376). Returns mass properties and the thread's size, pitch and diameters.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Thread | |
| size | Yes | ||
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| internal | No | ||
| length_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that the thread runs into the material, is right-handed, has validation against SolidWorks' thread profiles, and returns mass properties plus thread dimensions. It does not discuss reversibility or side effects, but it gives a solid picture of what the operation does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose first, then parameter semantics, then usage prerequisites, then return value. There is no filler or repetition of schema titles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations and no output schema, the description covers the essential context: coordinate convention, length direction, handedness, external/internal prerequisites, and return information. An agent has enough to call it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does thoroughly. It explains the size format with examples and validation, the coordinate meaning (centre of the circular edge), the internal boolean (hole vs rod), and length_mm. Only 'name' is left to the schema, and its default makes it self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Cut'), a specific resource ('a real, printable ISO metric thread'), and the mechanism ('SolidWorks' own Thread feature'). This clearly distinguishes it from siblings like add_hole and cut_profile, which are different operations on different geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: where the thread starts, how far it runs, and the prerequisites for external versus internal threads (nominal diameter for rods, pre-drilled minor diameter for holes). It does not explicitly name alternative tools or state when not to use it, but the conditions are concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_interferenceA
Report component pairs whose solids overlap, with the volume in mm^3.
Touching faces do not count (a bed standing on the floor is fine); only real overlapping material does. count == 0 means the assembly is clash-free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it defines the unit (mm^3), excludes touching faces with a concrete example, and explains the meaning of count == 0. It stops short of stating whether the tool is read-only or how strict the overlap tolerance is, but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, well-structured sentences lead with the main purpose, add the critical touching-face exclusion, and end with the count interpretation. Every sentence earns its place and no unnecessary details are included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter analysis command, this is complete: an agent knows what is returned (overlapping component pairs and volumes), how to interpret count, and what edge case (touching faces) is deliberately excluded. No output schema exists, but the description covers the essential return contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema accurately reflects that, so there are no parameter semantics to document. The description still adds value by describing the output semantics (per-pair overlap volume and clash count), which is useful in the absence of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Report component pairs whose solids overlap, with the volume in mm^3.' This clearly identifies it as an interference/clash analysis tool and separates it from the creation/getting siblings such as add_box or get_mass_properties, which do not report pairwise overlaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies this is the tool to use for clash detection and gives an interpretative rule (count == 0 means clash-free), but it never explicitly states when to call it versus alternatives or what conditions apply, such as requiring an open assembly or a prior rebuild.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_motionA
Step a joint through its range and check the assembly at every step.
dimension_name: an angle or distance mate's dimension (add_mate returns it); values in degrees for an angle, mm for a distance, e.g. [30, 60, 90, 120, 150]. Each step gives the overlapping pairs with their volume and the distance between each pair in distances ([["Rod", "Bolt"], ...]); the summary gives clash_free and each pair's smallest distance with the value where it occurs. The dimension goes back to its value afterwards. A joint inside a sub-assembly is 'D1@Angle1@Leg-1'. Refused while a mate is broken: the parts it should hold would drift and the result mean nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | ||
| distances | No | ||
| dimension_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the return structure (per-step overlapping pairs with volumes/distances, summary with clash_free and minimum distance), the reversal side-effect ('The dimension goes back to its value afterwards'), and the failure mode when a mate is broken. It omits performance/timing characteristics, so not quite a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the rest is dense but earns its place. Some sentences run long and blend input-parameter guidance with output description, which slightly hurts scanability, but there is little dead weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description explains returns, the reversal side-effect, parameter formats, and the refusal condition, which is close to complete. It could say a bit more about cost/runtime for a sweep over many values, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does for all three parameters: dimension_name (a mate dimension, with the sub-assembly syntax 'D1@Angle1@Leg-1'), values (degrees vs mm with a concrete example array), and the distances pair format. This fully covers the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Step a joint through its range and check the assembly at every step.' This is clearly distinct from a static clash tool like check_interference, but the description never names that sibling, so the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real precondition (refused while a mate is broken, and why) and explains how to obtain the required dimension_name from add_mate. It lacks an explicit statement of when to prefer this over a static interference check, 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.
check_printabilityA
Check the current part for 3D printing, built along up ('+z', '-y', ...).
Overhangs: downward faces leaning more than overhang_deg from vertical (90 = a flat ceiling) need support; the faces on the bed do not count. Gives the overhanging area per face (list_faces index) with its worst lean and centre, the bed contact area and the print height. With min_wall_mm (e.g. two nozzle widths) also the walls thinner than that, measured straight through the material from points spread over every face, with where each is thinnest. A spot right beside an edge where faces meet at a sharp angle reads as thin as the wedge of material there is: that is the edge, not a wall.
| Name | Required | Description | Default |
|---|---|---|---|
| up | No | +z | |
| min_wall_mm | No | ||
| overhang_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it explains overhang detection, bed-contact exemption, the min_wall_mm scan through material, the edge-vs-wall caveat, and the returned per-face measurements. It does not mention computational cost or side effects, but for a read-only analysis tool this is strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loads purpose and then adds necessary technical detail. Most sentences earn their place by clarifying non-obvious behavior, though the stream-of-consciousness style and parentheticals make it slightly harder to scan than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of printability analysis, zero annotation coverage, and no output schema, the description is nearly complete: it explains what is measured and roughly what is returned. It could more fully specify the output structure or field names, but an agent can call it correctly from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: `up` is illustrated as '+z', '-y', etc.; `overhang_deg` is defined with the 90-degree flat-ceiling example; and `min_wall_mm` is given practical meaning (e.g. two nozzle widths) plus measurement behavior. It stops short of full unit/format detail for every return field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb and resource: 'Check the current part for 3D printing, built along `up`'. It clearly distinguishes itself from generic geometric queries and siblings like check_interference by defining the printability domain (overhangs, bed contact, thin walls).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Check the current part for 3D printing') and explains how optional parameters affect checks, but it does not explicitly say when to prefer this tool over alternatives such as check_interference or measure_distance. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_partA
Close the current part or assembly without saving (export/save first if needed).
With no current document it closes SolidWorks' active one, but only when that has no unsaved changes.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key behavior: the operation does not save, it targets the current document, falls back to SolidWorks' active document, and refuses when unsaved changes exist. It omits error/return behavior and how the 'save' parameter changes outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in the first clause, then appends the edge case. Two short sentences with little waste, though the second paragraph is somewhat niche for its placement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations, so the description must stand alone. It covers the main action and the no-document fallback but leaves the 'save' parameter's semantics undefined, which is a meaningful gap for an operation whose main risk is unsaved data loss.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'save' boolean is undocumented. Worse, the description flatly says it closes 'without saving', which implies save is always false and leaves the save=true behavior unexplained, creating tension with the parameter's existence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Close') and resource ('current part or assembly') with clear scope, and the parenthetical about export/save distinguishes it from the save_part/export siblings an agent might otherwise pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives actionable context: close without saving, export/save first if needed, and the fallback behavior when no document is open. It implies a when-not condition (only closes the active doc when it has no unsaved changes) but does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combine_bodiesA
Combine solid bodies of the part into main (a list_bodies name).
operation 'add' joins the tools to main, 'subtract' cuts them out of it, 'common' keeps only what main shares with them. tools: body names, every other body by default. Returns mass properties and the bodies left.
| Name | Required | Description | Default |
|---|---|---|---|
| main | Yes | ||
| name | No | Combine | |
| tools | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses operation outcomes and the return value ('mass properties and the bodies left'), but it does not state whether the operation mutates or consumes source bodies, permission requirements, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and resource, then efficiently explains operation modes and defaults. Every sentence contributes necessary invocation context with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations, no output schema, and no schema descriptions, the description is largely complete: it covers purpose, operation semantics, parameter meaning for three of four parameters, and return content. It omits the `name` parameter and mutation/safety context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `main` as a `list_bodies` name, defines operation values (`add`, `subtract`, `common`), and clarifies `tools` as body names defaulting to every other body. The `name` parameter is left undocumented, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: combines solid bodies into `main`. It also defines the three operation modes (`add`, `subtract`, `common`), making the tool's core purpose unambiguous and distinct from sibling body operations like `split_body`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what each operation does and that `tools` defaults to every other body, which implies usage for combining bodies. However, it does not explicitly say when to use this tool versus alternatives such as `split_body` or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_with_meshB
Compare the current part's cross-sections with a reference mesh's at the same heights.
offset_mm [dx, dy, dz] moves the mesh into the part's frame. A different area means a misread feature; equal areas with different extents a shifted frame. Returns per-section pairs and the worst differences.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | ||
| path | Yes | ||
| frame | No | object | |
| offset_mm | No | ||
| heights_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses useful behavior: what offset_mm does and that the output is per-section pairs plus worst differences, compensating somewhat for the missing output schema. However, it does not state whether the operation is read-only or has side effects, nor any permission/state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then adds interpretation and return-value notes in two short paragraphs. Every sentence carries information; only slight density/crypticness in the interpretation sentence costs it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter comparison tool with no annotations and no output schema, the description usefully covers the return shape and offset behavior, but leaves axis, heights_mm, frame, and path undefined and omits side-effect/permission context. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are 5 parameters, so the description must compensate. It only clarifies one parameter (offset_mm as [dx, dy, dz] moving the mesh into the part's frame); path, axis, heights_mm, and frame semantics remain entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: comparing the current part's cross-sections against a reference mesh's at matching heights. This clearly distinguishes it from construction siblings, though it does not explicitly contrast itself with the related slice_mesh tool. An agent can tell what it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to interpret results (different area = misread feature; equal areas = shifted frame) but never says when this tool should be chosen over alternatives or what preconditions apply (e.g., mesh must exist, part must be loaded). No when-to-use or when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_offset_pocketA
Pocket a planar face, leaving a rim rim_mm wide along its outline.
The recessed web of an I-beam that follows a curved link, a tray, or a frame
(depth_mm omitted: through all). The face is the one facing face
('+z', ...) through the point (x, y, z). The rim follows the outline, arcs
and splines included; holes in the face stay holes. rim and depth come back
as dimensions, and the pocket follows the outline when it changes. Returns
mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| name | No | ||
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| rim_mm | Yes | ||
| depth_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the through-all default when depth_mm is omitted, how the target face is identified, that the rim follows arcs and splines, that interior holes are preserved, that rim/depth become dimensions, and that mass properties are returned. It omits editability/reversibility of the resulting feature, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and constraint in the first sentence, then layers geometry and return-value details. The parenthetical about the I-beam/tray/frame example is slightly digressive, but nearly every clause carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-annotation, no-output-schema geometry tool, the description covers the face selection, depth default, outline behavior, and return values ('Returns mass properties'), which is most of what an agent needs. It could still say more about the feature's post-creation lifecycle (edit/suppress/delete).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for most parameters: face, the (x, y, z) point used to select it, rim_mm, and depth_mm's null-means-through-all semantics. Only the `name` parameter (default 'Pocket') is left unexplained, a minor gap against a 7-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Pocket a planar face') plus the defining geometric constraint (rim rim_mm wide along the outline). This distinguishes it from the neighboring cut_profile, cut_profile_on_face, and cut_slot siblings, which produce different geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use-case context (recessed web of an I-beam, tray, frame) and a default behavior (depth_mm omitted = through all), which implies usage. However, it never explicitly says when to prefer this over cut_profile_on_face or cut_slot, nor states prerequisites such as the part needing an open planar face.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_profileA
Cut a polygonal pocket/slot from the +Z face: points_mm = [[x,y], ...] in mm.
Auto-closed polygon, cut blind by depth_mm or all the way through when depth_mm is omitted. For pockets, slots, cutouts. corner_radii_mm rounds the corners and rotate_deg turns the profile about about_mm, as for add_extruded_profile (notches at +/-60 degrees around a pivot). Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Cut | |
| about_mm | No | ||
| depth_mm | No | ||
| points_mm | Yes | ||
| rotate_deg | No | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the critical default that omitting depth_mm cuts all the way through, that the polygon is auto-closed, and that it returns mass properties. Missing only permission/body-context behavior, which is minor here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and format, then layers behavior. Efficient overall, though the parenthetical about 'notches at +/-60 degrees around a pivot' referencing add_extruded_profile is slightly cryptic and could confuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param, zero-coverage, annotation-free tool it covers nearly all parameters and key behaviors, and even notes the return value despite no output schema. Adequate to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it documents points_mm syntax ([[x,y],...] in mm), depth_mm blind-vs-through behavior, corner_radii_mm rounding, and rotate_deg/about_mm rotation. Only 'name' is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, and scope: 'Cut a polygonal pocket/slot from the +Z face.' The '+Z face' scope helps separate it from cut_profile_on_face and cut_profile_through_plane, but it never names those siblings to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For pockets, slots, cutouts' gives a usage hint but doesn't say when to prefer this over near-identical siblings like cut_offset_pocket, cut_slot, or cut_profile_on_face. Usage is implied rather than delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_profile_on_faceA
Cut a polygon pocket/slot on ANY planar face: points_mm = [[x,y,z], ...] in mm.
The 3D points must lie on one face facing face ("+x"/"-x"/...), which is
found through them; cut blind by depth_mm or through when omitted. For side
pockets/cutouts. corner_radii_mm rounds the corners as for
add_extruded_profile. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| face | Yes | ||
| name | No | Cut | |
| depth_mm | No | ||
| points_mm | Yes | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful mechanics: the points must be coplanar on one face, the face is inferred from them ('found through them'), and depth_mm controls blind vs through cutting. It also names the return value (mass properties). Gaps remain on failure modes (e.g. non-coplanar points or an unfindable face), but the core behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and scopes the required parameter early, then layers the face/depth mechanics. Mostly tight, though the inline parameter definitions create a slightly dense run-on that could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description covers the essential inputs, the blind/through behavior, and the return value ('Returns mass properties'). It is complete enough to invoke correctly, missing only edge-case/error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it documents points_mm's format as [[x,y,z]] in mm, gives valid face strings ('+x'/'-x'), explains depth_mm's blind-vs-through behavior, and clarifies corner_radii_mm. Only 'name' is left unexplained, a minor gap for a label parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cut a polygon pocket/slot on ANY planar face') with explicit scope ('ANY planar face'). It is clearly separable from siblings like cut_profile, cut_profile_through_plane, and add_extruded_profile_on_face, and the 'side pockets/cutouts' phrase further narrows its domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ('For side pockets/cutouts') and the key selection rule (cut blind by depth_mm or through when omitted), plus a pointer to add_extruded_profile for corner-radius semantics. It stops short of explicitly stating when to prefer cut_profile or cut_profile_through_plane instead, so no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_profile_through_planeA
Cut a polygon sketched on a reference plane, symmetric about that plane.
plane: 'front' (z = 0), 'top' (y = 0), 'right' (x = 0) or the name of another plane in the part ('Plane1'); points_mm = 3D [x, y, z] points ON that plane (e.g. x = 0 for 'right'). Cuts through all in both directions (depth_mm omitted) or depth_mm in total, centred on the plane. For shapes seen from the side: wedges, windows, symmetric recesses. corner_radii_mm rounds the corners as for add_extruded_profile. keep_inside=True cuts away everything OUTSIDE the profile (through all): extrude the front view, cut the side view with keep_inside, and the part is the 3D shape both views agree on. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Cut | |
| plane | Yes | ||
| depth_mm | No | ||
| points_mm | Yes | ||
| keep_inside | No | ||
| corner_radii_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the default that omitting depth_mm cuts through all in both directions, that depth_mm is a total centered on the plane, and the semantics of keep_inside and corner_radii_mm. It even notes the return ('mass properties'). It does not cover permissions or reversibility, but for a geometry cut 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, then parameters and usage details follow. The layered per-parameter notes are dense but each earns its place; the keep_inside example is a slight verbosity but clarifies an otherwise ambiguous flag.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, no-annotation, no-output-schema mutation tool, the description covers purpose, plane/point conventions, default behavior on omitted depth, the keep_inside workflow, and the return value. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must teach the parameters, and it explains plane naming and the plane-coordinate implication ('x = 0 for right'), that points_mm are 3D points ON the plane, and how depth_mm/keep_inside/corner_radii_mm behave relative to add_extruded_profile. Only the 'name' parameter goes unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Cut a polygon sketched on a reference plane') and pins down the distinguishing behavior of the operation: symmetric about the plane, cutting through in both directions. That geometric specificity separates it from cut_profile, cut_profile_on_face, and cut_sketch without the agent having to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies concrete usage context ('For shapes seen from the side: wedges, windows, symmetric recesses') and a worked keep_inside workflow ('extrude the front view, cut the side view... the 3D shape both views agree on'). It stops short of naming an alternative tool or explicitly stating when-not to use this, so it lands just below the top.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_sketchA
Cut an existing sketch of the current part by name into the body.
depth_mm deep, or through all when depth_mm is omitted, against the sketch's normal: into the part from a face. From a plane with the part in front of it (a box on the Front plane) give reverse=True. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Cut | |
| sketch | Yes | ||
| reverse | No | ||
| depth_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses mutation into the body, default through-all behavior when depth_mm is omitted, direction relative to the sketch normal, reverse handling, and that mass properties are returned. It omits failure modes or dependencies, but coverage is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the core action. The line breaks are somewhat awkward, but every clause contributes operational information and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, mentioning that it returns mass properties is helpful. Core behavior and the key direction/depth parameters are covered, though the optional name parameter and sibling-tool routing remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for sketch (by name), depth_mm (deep or through all), and reverse (when to set True), but never explains the name parameter or its default 'Cut', leaving partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: cutting an existing sketch of the current part into the body. It clearly is not a generic process tool, but it does not explicitly distinguish itself from sibling tools such as cut_profile or cut_profile_on_face.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides operational conditions for parameters, e.g. through-all when depth_mm is omitted and reverse=True for a plane with the part in front of it. It does not explain when to choose this tool over sibling cut operations, so usage guidance remains 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.
cut_slotA
Cut a straight slotted hole (obround) on the +Z face.
Centred at (x_mm, y_mm); length_mm is centre-to-centre of the rounded ends, width_mm the slot width, angle_deg its orientation in the +Z plane (0 = +X). Cut blind by depth_mm or through when omitted. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Slot | |
| x_mm | Yes | ||
| y_mm | Yes | ||
| depth_mm | No | ||
| width_mm | Yes | ||
| angle_deg | No | ||
| length_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well: it explains blind versus through cuts based on depth_mm, clarifies coordinate/orientation semantics, and states that mass properties are returned. It does not mention prerequisites or reversibility, but core cut 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with the operation and face, then defining geometry parameters, then covering depth behavior and return value. Every sentence carries necessary information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description covers the essential geometry, defaults, and return behavior. It is slightly incomplete only in not stating the prerequisites (e.g., an active part or face context) and not differentiating from overlapping cutting tools, but an agent can invoke it correctly from the provided details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It meaningfully defines every functional parameter: x_mm/y_mm as the center, length_mm as centre-to-centre, width_mm as slot width, angle_deg with 0=+X, and depth_mm as blind depth or through when omitted. Only the trivial name parameter is left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Cut') and resource ('straight slotted hole (obround) on the +Z face'), identifying exactly what the tool does. This distinguishes it from related sibling tools like cut_profile or add_hole without requiring the agent 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever a straight slotted hole on the +Z face is needed. However, it does not explicitly compare to alternatives such as cut_profile_on_face or add_hole, nor does it state when not to use it, leaving some selection guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_componentA
Remove a component from the current assembly, with the mates that hold it.
component: its name in list_components ("Bracket-1", or "Bracket" while there is one). Returns the mates deleted, the components left and the assembly's mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one important trait beyond the name: deleting a component also deletes the mates that hold it. However, it says nothing about irreversibility, undo, or required permissions — meaningful gaps for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its side effect, then the parameter note, then the return summary. Every sentence earns its place; the parenthetical naming example is the only slightly verbose element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming what is returned (mates deleted, remaining components, mass properties). Combined with the parameter explanation and the cascade warning, this is nearly complete for a single-parameter tool; only precondition/permission details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains that 'component' is the name as it appears in list_components, including the exact naming convention ('Bracket-1', or bare 'Bracket' while unique). That is real meaning beyond a bare string parameter, though format nuances (case sensitivity, resolution of ambiguous names) remain unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a component from the current assembly') and immediately qualifies the scope with the cascading effect ('with the mates that hold it'). That cascading clause is what separates it from siblings like delete_mate and suppress_mate, so an agent can tell the tools apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from the current assembly' implies the precondition that an assembly is active, but there is no explicit when-to-use guidance and no routing to alternatives such as suppress_mate or delete_mate. Usage is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_equationA
Delete an equation by the name it sets ("L_thigh", "D1@Boss") or its list_equations index.
Rebuilds and returns what was deleted, failing_features and mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| equation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present the description carries the full burden, and it does disclose the key side effect: the model is rebuilt as part of the deletion. It also names the return payload (deleted item, failing_features, mass properties). It stops short of saying whether deletion is irreversible or what happens when the equation name/index is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the identifier formats an agent needs before anything else. Minor awkwardness in the phrase 'the name it sets' and a slightly clipped second sentence, but nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema mutation tool, the description covers the essentials: input formats, the rebuild side effect, and the return contents. Remaining gaps are failure/error behavior and reversibility, which are secondary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'equation' property has no description, so the description must compensate — and it largely does, explaining the accepted name syntax with two concrete examples and the alternative list_equations index. It lacks detail on index base (0- or 1-based) or quoting rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (delete an equation) and immediately defines the two accepted identifier forms — the name the equation sets, e.g. "L_thigh" or "D1@Boss", or its list_equations index. This separates it cleanly from set_equation/set_equations/list_equations 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells the agent how to supply the argument (name or list_equations index), which is genuine usage help. It does not, however, state when to prefer this over alternatives such as set_equation (modify) or delete_feature, nor any preconditions. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_featureA
Delete a feature (a list_features name) with its sketch, then rebuild and remeasure.
The way to undo a step. Refuses when other features are built on it and names them, and what is built on those; with_children=True deletes them all. dry_run=True only lists what would go (would_delete). Equations that named its dimensions break and come back as broken_equations; with_equations=True deletes them (global variables stay).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| dry_run | No | ||
| with_children | No | ||
| with_equations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well: it discloses the refuse-on-dependents behavior and that dependent features are named, the with_children override, dry_run semantics (would_delete), the equation breakage and broken_equations reporting, the with_equations override with the caveat that global variables survive, and the implicit rebuild/remeasure side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then layered with conditions in a logical order. Dense and slightly run-on in the middle clause ("names them, and what is built on those"), but essentially every sentence conveys a distinct behavioral fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, four-parameter tool with no annotations and no output schema, the description is nearly self-sufficient, even naming return keys (would_delete, broken_equations). Minor gaps remain around confirmation/permission expectations and the source from which the feature name must be obtained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for all four parameters, and it explains dry_run, with_children, and with_equations precisely in terms of observable effects. The required name parameter is only glossed as "a list_features name," leaving its format slightly implicit, but overall coverage is strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Delete") plus resource ("a feature"), and it even resolves the argument identity by pointing to list_features names. It also frames the operation as "the way to undo a step," which distinguishes it from sibling mutators like suppress_feature and delete_equation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context (undo a step) and conditions under which behavior changes: refuses when children exist, with_children=True overrides that. However it never explicitly contrasts delete_feature against the obvious sibling alternative suppress_feature, so an agent must infer when deletion beats suppression.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_mateA
Delete a mate of the current assembly by name (list_components, or add_mate's 'mate').
Its components are free to move again. Returns the mates left.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a real effect ('Its components are free to move again') and the return value ('Returns the mates left'), which is more than baseline. It omits whether the deletion is permanent/undoable and any permission requirements, leaving meaningful gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, with the retrieval hint and behavioral note following. The parenthetical is slightly awkwardly embedded but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete tool with no output schema and no annotations, the description covers purpose, the effect on components, and the return value. It is reasonably self-sufficient, missing only permanence/permission detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only labels the field 'Name', so the description must compensate. It does so by clarifying the name identifies a mate and by pointing to list_components and add_mate's 'mate' output as sources for it, adding real meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (delete a mate) and scopes it to the current assembly, which cleanly separates it from siblings like delete_component and suppress_mate. It does not explicitly name suppress_mate as the non-destructive alternative, so it falls just 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(list_components, or add_mate's "mate")' implies where the required name comes from, which is useful implied usage guidance. However, it never states when to use this versus suppress_mate or what preconditions apply, so usage is only inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exportA
Export the current part or assembly to STEP/STL/IGES/Parasolid/3MF (format from extension).
Silent (no prompts). Verifies the file appears on disk and reports its size.
For STL/3MF, tessellation resolution is set first: quality 'coarse'|'fine'
(default 'fine' for print quality), or pass deviation_mm (+ optional angle_deg)
for a reproducible custom resolution (overrides quality). Ignored for other formats.
An assembly goes to STL as one file, or one file per component with
per_component=True (SolidWorks names them); files lists what was written.
STL/3MF keep the part's or assembly's own coordinates (frame), also per
component, so a mesh measures back where the model is; slicers place it anyway.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| quality | No | fine | |
| angle_deg | No | ||
| file_format | No | ||
| deviation_mm | No | ||
| per_component | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that export is silent (no prompts), verifies the file exists on disk, reports its size, describes the assembly-to-STL naming/coordinate behavior, and explains the tessellation override logic. It omits overwrite/permission behavior and failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded (format, then silent/verification behavior, then format-specific tessellation rules), and each sentence carries real information. It is on the longer side with a few parenthetical asides, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema, no-annotation mutation tool, it covers the return signal (`files` lists what was written, size reported) and the tricky assembly/coordinate cases. The remaining gap is the unexplained file_format parameter and lack of error/overwrite semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it explains quality, deviation_mm, angle_deg, and per_component well. However, it never clarifies the file_format parameter (it instead says format comes 'from extension') or the path parameter, leaving two of six params semantically unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (export), the exact resource (current part or assembly), and enumerates the supported interchange formats (STEP/STL/IGES/Parasolid/3MF), so the purpose is unambiguous. It does not explicitly contrast itself with save_part/save_assembly, but the format list implicitly separates it from native-save siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied (producing interchange meshes/CAD for external tools) rather than stated. There is no explicit 'use this vs. that' routing and no mention of prerequisites like an active/fully-rebuilt document, which matters given it targets 'the current part or assembly'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extrude_sketchA
Extrude an existing sketch of the current part by name, e.g. one a person drew.
depth_mm along the sketch's normal (reverse=True: the other way), merged with the body. Or up_to='next': up to the next face of the part, ending on its shape (a post into a curved wall) and following it when it changes; or up_to='@x,y,z': up to the face through that point, also where 'next' fails (a side of the profile on a face: the refusal names a point ahead). The sketch keeps its own dimensions and relations, so the person's design stays in charge; read_sketch shows it first. Returns mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Extrude | |
| up_to | No | ||
| sketch | Yes | ||
| reverse | No | ||
| depth_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose real behavior: the result is merged with the body, the sketch keeps its dimensions/relations (a non-destructive claim about authored geometry), the return is mass properties, and it hints at failure semantics ('the refusal names a point ahead'). It omits whether the operation is purely additive and what preconditions (active part, valid sketch) apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a run-on of nested parentheticals and asides ('e.g. one a person drew', 'so the person's design stays in charge') that make the mode logic harder to scan than it needs to be. Information density is high, yet the structure could be tightened without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and five undocumented parameters, the description supplies a lot: modes, direction, return value, and sketch preservation. It remains a bit short on preconditions and on the 'name' argument for a tool whose siblings imply richer feature-graph behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does well for three of five parameters: depth_mm is 'along the sketch's normal', reverse=True goes the other way, and up_to accepts 'next' or a '@x,y,z' point with distinct behaviors. The 'name' parameter (feature naming, default 'Extrude') is never explained, leaving one gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb+resource ('Extrude an existing sketch of the current part by name'), and the qualifier 'existing sketch' implicitly distinguishes it from siblings like add_extruded_profile that create new geometry. It does not name any sibling outright, so the differentiation is inferred 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear selection logic among modes: depth_mm along the normal, or up_to='next', or up_to='@x,y,z' when 'next' fails, plus the prerequisite 'read_sketch shows it first'. It never says when to prefer this tool over cut_sketch or add_extruded_profile, so the routing guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assembly_bounding_boxA
Get the bounding box of the whole assembly (min/max/size in mm).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly discloses the return content (min/max/size in mm), and the verb 'Get' with zero parameters strongly signals a non-mutating query. It does not mention prerequisites like having an assembly open, but that is a minor omission for such a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every element—verb, resource, scope, output, and units—is meaningful, and the most important scoping detail ('whole assembly') appears early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no annotations, and no output schema, the description covers everything needed to invoke the tool correctly and understand its result. It states what is returned and in what units, making it complete for an operation of this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters)Skip: schema coverage is 100% by default, so the baseline is 4. There are no parameter semantics to add beyond what the description already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a clear resource ('bounding box of the whole assembly'), and specifies the output fields and units (min/max/size in mm). It is immediately distinguishable from the sibling tool 'get_bounding_box' by the 'whole assembly' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for the whole assembly rather than individual parts, but it does not explicitly compare against 'get_bounding_box' or state when one should be preferred. The usage context is reasonably clear from 'whole assembly', but no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bounding_boxA
Get the tight bounding box of the current part (min/max/size in mm).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool returns min/max/size values in millimeters, which is the key behavioral output. It does not mention side effects or behavior when no part is loaded, but 'get' implies a read-only operation and the core return semantics are clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and immediately provides the essential output details. There is no filler and every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with no output schema, the description is complete: it identifies the scope, the returned quantities, and the units. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no ambiguity for the agent to resolve. The description does not need to add parameter-level detail, and no parameter semantics are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a clear resource ('bounding box of the current part'), and the exact output components (min/max/size in mm). It also distinguishes this from the sibling get_assembly_bounding_box by explicitly scoping it to the current part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current part' gives clear context that this is for part-level bounding boxes rather than assembly-level ones, so the agent can infer the relevant alternative. However, it does not explicitly mention when not to use it or name the alternative directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mass_propertiesA
Get volume (mm^3), mass (kg), surface area (mm^2), centre of mass, and bounding box.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It lists the output values and their units, but does not communicate whether this is a read-only operation, whether it requires a loaded model, whether it depends on a rebuild, or what happens if no part is open. These are important preconditions that the description omits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that lists the outputs in a logical order. It is immediately front-loaded with the action and the main resource, and every element (units and property names) adds value. No superfluous words or filler are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema and no annotations, the description should at least hint at preconditions (e.g., 'on the current model') and possibly note that this is a combined query replacing multiple calls. It does specify the output units and properties, but misses guidance on when it is appropriate to call (e.g., after a rebuild) and how it compares to the get_bounding_box sibling. This is sufficient for a trivial command but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document beyond the already-empty schema. The description adds no parameter semantics, but the baseline for 0 parameters is 4, which is appropriate since the lack of parameters is self-evident and no further clarification is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and a resource ('mass properties') and enumerates the exact quantities returned (volume, mass, surface area, center of mass, bounding box). It is clearly distinguishable from siblings like get_bounding_box, which returns only the bounding box, so the purpose is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention that it operates on the current part or assembly, nor does it reference the more specialized get_bounding_box or other related getters. An agent has to infer the appropriate context, which is a significant gap for a simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusA
Report whether SolidWorks is reachable, its revision, this server's version, and the active/current part.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does so by enumerating exactly what is reported (reachability, revision, server version, active part), making clear this is a non-mutating read. It does not say whether an unreachable SolidWorks produces an error or a negative status, which is the one behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the verb first and the four returned items enumerated compactly. No filler, no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must convey the return content itself — and it does, listing all four reported fields. Only the failure/unreachable-path behavior is left unspecified, a minor omission for a zero-arg status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Report') plus the exact payload: reachability, SolidWorks revision, server version, and the active part. Against a sibling list made up almost entirely of modeling/mutation operations, this is unmistakably the diagnostic health-check tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 preflight/health check to run before issuing modeling commands. No explicit when-to-use, prerequisites, or named alternatives are given, though for a zero-parameter diagnostic tool little guidance is genuinely needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_componentA
Insert a .sldprt, or a .sldasm as a sub-assembly, with its ORIGIN at (x, y, z) mm.
The part's own origin lands exactly on that point, and the placement is read back and verified. fixed=True pins the component; fixed=False leaves it free for mates. The default fixes only the FIRST component, giving the assembly a ground to build against. Returns the component's name, placement and box.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| x_mm | No | ||
| y_mm | No | ||
| z_mm | No | ||
| fixed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that placement is read back and verified, that fixed controls whether the component is grounded or mateable, and what the call returns (name, placement, box). It doesn't cover failure modes for an invalid path, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and coordinate semantics, then the fixed behavior. Slight redundancy between 'with its ORIGIN at (x, y, z) mm' and 'The part's own origin lands exactly on that point', but every sentence otherwise carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the action, coordinate units, the fixed semantics, the default behavior, and the return payload. Only edge cases (invalid path, unit assumptions for the returned box) are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: path is tied to .sldprt/.sldasm, x/y/z are tied to the origin landing point in mm, and fixed is given true/false semantics plus a default rule. Units and meaning are supplied for essentially every parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (insert), resource (.sldprt / .sldasm as sub-assembly), and the exact placement semantics (origin at x,y,z mm). An agent can distinguish this from set_component_transform or delete_component 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains the fixed parameter's operational consequence (pins vs. free for mates) and the default behavior (only the first component is fixed to give the assembly a ground). No explicit when-to-use-vs-sibling routing, 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.
list_bodiesA
List the part's solid bodies: name, volume and bounding box.
A part holds several after merge=False or split_body; combine_bodies joins them again.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It discloses the read-only nature implicitly (listing) and the effect of merge/split on body counts, which is useful contextual behavior. However it doesn't clarify state/pagination/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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the primary action and outputs. The second sentence adds operational context without bloat, though it could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description must describe return values—and it does name the fields returned. However it omits any note about empty parts, errors, or relationships to sibling list tools, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so baseline 4 applies. There are no parameters to document, and the description does not need to compensate for any parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (the part's solid bodies) and enumerates returned fields (name, volume, bounding box). Easily distinguished from siblings like list_faces or list_edges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage via a note about when a part holds several bodies (after merge=False or split_body) and the inverse operation combine_bodies. But it doesn't explicitly say when to call this versus alternatives like list_features; usage is inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_componentsA
List the assembly's components (name, path, fixed, position, rotation, bounding box) and mates.
Positions are in mm and rotations in degrees, both in assembly coordinates; the bounding box of each component is in assembly coordinates too. Each mate gives its name, SolidWorks type, the dimension of a distance or angle mate, and an error when SolidWorks flags it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses return semantics, units, coordinate systems, and mate error reporting, but does not state whether the operation is read-only, whether an assembly must be open, or what side effects or limitations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then efficiently details return fields, units, and coordinate systems. Every sentence contributes useful information with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does a good job explaining returned component and mate fields plus units. It is slightly incomplete because it does not say whether subassembly components are included or whether the assembly must already be open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero input parameters, so parameter semantics baseline is 4. The description adds no parameter meaning because there is no parameter surface to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (assembly's components and mates), with concrete return fields. It clearly differs from siblings like list_faces or list_edges by resource type, but does not explicitly name alternative tools or contrast their scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what is returned but gives no when-to-use guidance, no prerequisites, and no alternatives. An agent can infer it is for inspecting assembly components/mates, but the definition does not state when to choose it over related tools such as list_features or get_assembly_bounding_box.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dimensionsA
List every dimension in the current part: name (for set_dimension), feature, value, unit.
For a part opened from disk, or when the names the tools returned are gone.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It usefully discloses the returned fields and the reopened-part/name-loss scenario, but does not explicitly confirm read-only behavior, permissions, or error behavior; 'List' implies a safe read, but the disclosure is thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the action and output fields. The second sentence is a sentence fragment, which slightly weakens structure, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter list tool with no output schema, the description does a good job naming the returned fields and giving a use condition. It is largely complete, though it could clarify return order or shape for greater certainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 applicable. Schema coverage is 100%, and the empty input schema is self-explanatory. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List every dimension in the current part.' It also lists the returned fields and ties the name field to set_dimension, so an agent can distinguish this tool from sibling set_dimension.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an implied use case: 'For a part opened from disk, or when the names the tools returned are gone.' This points to when the tool is needed, but it does not explicitly state when not to use it or name alternative sibling tools beyond the parenthetical reference to set_dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsA
List the documents open in SolidWorks: title, path (empty until saved), type, unsaved changes.
current marks the one the tools work on, active SolidWorks' own. Parts
an open assembly loaded come along, with visible false.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses behavioral details beyond the schema: path is empty until saved, 'current' vs 'active' markers carry different meanings, and assembly-loaded parts appear with visible false. It does not explicitly state read-only nature or error conditions, but for a zero-parameter list tool this is substantial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and uses a second sentence for important output semantics. It is tight and free of filler, though the final clause is slightly cryptic and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value meaning. It names the key fields (title, path, type, unsaved changes) and explains the current/active distinction and assembly-loaded parts. It is nearly complete for a simple list tool, missing only a fuller structural description of the returned list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 per the rubric. There are no parameter semantics to clarify, and the description does not pretend otherwise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the documents open in SolidWorks') and enumerates the returned fields, so an agent can identify it apart from list-oriented siblings like list_bodies or list_features. The scope is precise enough that no sibling ambiguity remains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to call this tool versus alternatives such as get_status, nor does it state prerequisites or exclusions. The second sentence explains how to read output but offers no routing guidance, leaving usage entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_edgesA
List the part's edges: index, type, length, ends; lines also axis and midpoint.
Narrow it on a big part: face (a list_faces index, "#5"), feature (the edges of the faces it made), within_mm ([[x1, y1, z1], [x2, y2, z2]]: both ends inside), min_length_mm. Indices are always those of the whole part: use them with add_fillet/add_chamfer edges="2,5".
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | ||
| feature | No | ||
| within_mm | No | ||
| min_length_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers key behavioral context: what each returned edge includes, that lines additionally carry axis and midpoint, and critically that indices are always whole-part indices (stable regardless of filtering). It doesn't state read-only safety or error behavior, but the disclosed index semantics are a genuine behavioral trait 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and return shape, then the filters, then the index-usage note, with no filler sentences. The line break lands mid-clause ('face (a list_faces index, "#5")') and the density is high, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description still covers the return fields, all filter parameters, and how the indices are consumed downstream, which is enough to invoke the tool correctly. It omits pagination/limits and error behavior on an invalid face/feature, minor gaps for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully, and it does: face is given the '#5' format and its source (a list_faces index), feature is defined as the edges of the faces it made, within_mm is given the explicit [[x1,y1,z1],[x2,y2,z2]] shape and 'both ends inside' semantics, and min_length_mm is self-describing. This is far richer than the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the part's edges') and immediately enumerates the returned fields (index, type, length, ends, axis, midpoint), which distinguishes it from sibling listing tools like list_faces and list_bodies. An agent can tell exactly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to 'Narrow it on a big part' and lists the filter conditions for doing so, plus how the returned indices feed into add_fillet/add_chamfer. It lacks an explicit statement of when NOT to use it or a named sibling alternative, so it falls just 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.
list_equationsA
List the equations and global variables: index, equation, name it sets, value, global.
broken marks an equation that names a dimension or variable that is gone,
as one left behind by delete_feature; delete_equation removes it.
automatic_solve_order False means SolidWorks solves them as listed: one
above the line that sets its variable then warns and lags a rebuild. Any
set_equation turns it on.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does add real behavioral value by explaining the `broken` flag (an equation whose dimension/variable is gone, left by delete_feature) and `automatic_solve_order=False` (solver warns/lags a rebuild). However, it never explicitly states this is a read-only, side-effect-free operation, which is a notable omission for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good, but the second half is dense and hard to parse ('one above the line that sets its variable then warns and lags a rebuild'). The jargon-heavy explanation of automatic_solve_order could be tightened. It is not wasteful in length but loses clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 must explain the returned data, and it does enumerate the returned fields plus the meaning of the `broken` and `automatic_solve_order` states. For a zero-parameter list tool this is close to complete, though the ambiguous automatic_solve_order prose leaves some interpretation to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly spends no space on parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the equations and global variables') and even enumerates the fields returned (index, equation, name it sets, value, global). It is clearly distinguishable from set_equation, delete_equation, and list_dimensions by resource. It stops short of explicitly naming which sibling to prefer, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: this is an inspection/read tool, and the notes reference delete_equation and set_equation as related operations. There is no explicit 'use this when...' or 'do not use this for...' statement, so the agent must infer the when-to-use context from the field semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_facesA
List the part's faces (index, planar?, normal, area, centre) for inspection.
A cylindrical face also gives its axis, radius and a point on the axis (for a hole: its centre), so hole patterns can be read off. component: a component of the current assembly, listed in its own frame (e.g. an imported servo); for a sub-assembly, every part's faces in the sub-assembly's frame, each naming its part. A part's indices shift as features are added; a component's are ordered by part, type, centre and area, so they stay while its shape does. add_mate takes them as '#5'.
| Name | Required | Description | Default |
|---|---|---|---|
| component | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses extra fields for cylindrical faces, the axis/radius/point-on-axis semantics for holes, the frame a component is listed in, and the critical caveat that a part's indices shift as features are added while a component's are stable. It omits nothing safety-relevant for what is a read-only listing, though it doesn't discuss error or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and each subsequent sentence adds distinct value (cylindrical faces, component frames, index stability, add_mate reference). It is dense and somewhat parenthetical, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe return values, and it does — listing the face fields and the extra cylindrical-face fields. Combined with the component-frame and index-stability notes, it is complete enough to call the tool correctly, though edge cases (no part open, unknown component) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'component' parameter has 0% schema coverage, so the description must compensate — and it does, explaining that it selects a component of the current assembly listed in its own frame, and that for a sub-assembly it returns every part's faces in the sub-assembly's frame each naming its part. This adds substantial meaning beyond the bare anyOf string schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the part's faces') and enumerates exactly what is returned (index, planar?, normal, area, centre). This clearly distinguishes it from siblings like list_edges, list_bodies and list_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('for inspection', and that add_mate consumes the indices as '#5'), so the agent can infer the downstream purpose. However, there is no explicit when-to-use/when-not versus list_edges or guidance on when to pass the component argument, so guidance remains implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_featuresA
List the current part's modelling history in tree order: name, type, suppressed.
For a part opened from disk, or to find the step to undo. Flags features that fail to rebuild and names sketches that are not fully defined.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses two behavioral traits beyond a bare listing: it flags features that fail to rebuild and names sketches that are not fully defined. However, it says nothing about what happens when no part is open (error vs empty), whether hidden/suppressed-only filtering applies, or ordering guarantees beyond 'tree order'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences; the returned fields are given first and the use case second, which is the right order for scanning. The mid-sentence line break adds a little visual noise but no content waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must stand alone, and it does state the returned attributes and two special diagnostics. It is complete enough to call correctly, though it omits edge-case behavior (no open part, empty history).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and the baseline of 4 applies. There is no parameter information to omit or misstate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (the current part's modelling history) plus the exact returned fields (name, type, suppressed). This clearly separates it from the other list_* siblings (list_dimensions, list_faces, list_edges), which return different entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts: 'For a part opened from disk, or to find the step to undo.' This implies when to reach for it without naming an alternative tool. It does not route the agent explicitly to delete_feature/suppress_feature for acting on the listed history, so it falls short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_drawingA
Make a 2D drawing of the current part: a PDF, or an editable .slddrw.
Front, top and right views in European (first angle) projection plus an isometric view, on an A4 sheet at the scale SolidWorks picks, with the model's own dimensions, each shown once: a dimensioned sketch to print or send. Save the part first (save_part): the drawing refers to its file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the sheet size (A4), projection standard (first angle), view set (front/top/right + isometric), SolidWorks-chosen scale, and that dimensions appear once. It is silent on file naming, whether an existing drawing is overwritten, and where output lands, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and output formats, then supporting detail, with no filler sentences. Slightly long relative to a one-parameter tool, but every line describes a concrete artifact trait.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must cover everything; it thoroughly describes the produced drawing but leaves the lone required parameter and file-output side effects unexplained. Adequate overall, with a real gap around the input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter 'path' is documented nowhere. The description never mentions what the path refers to (output file location? part file? format selection?), leaving the agent to guess despite it being the only input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Make a 2D drawing of the current part') and enumerates the output formats (PDF or editable .slddrw), which cleanly separates it from siblings like export or screenshot. An agent can identify 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite ('Save the part first (save_part): the drawing refers to its file'), which is actionable context an agent would otherwise miss. It stops short of explaining when to prefer this over export/screenshot or when a drawing is unnecessary, so 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.
measure_distanceA
The smallest distance (mm) from a component to another one, a point or an axis.
Give component_b; or point_mm = [x, y, z] in assembly mm, and the nearest point on the component comes back too, with inside: true when the point lies in its material; or axis_mm = [[x, y, z], [dx, dy, dz]], the endless line through that point along that direction, such as a bolt's axis. 0 means they touch or overlap; check_interference tells which. Sub-assemblies count with all their parts; one part inside is 'Leg-1/Thigh-1'.
| Name | Required | Description | Default |
|---|---|---|---|
| axis_mm | No | ||
| point_mm | No | ||
| component_a | Yes | ||
| component_b | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It reveals units (mm), that the nearest point is returned, the meaning of inside, the meaning of 0 distance, and that sub-assemblies include all parts. It does not explicitly state that the operation is read-only or non-destructive, which is a minor gap for a measurement tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then compactly explains input formats and edge cases. It is dense but every clause adds useful information; a slightly cleaner structure would improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does a good job covering input alternatives, units, return hints, and sub-assembly behavior. It could still clarify component_a’s expected string format and confirm the read-only nature, but it is largely complete for a distance-measurement tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: point_mm is documented as [x, y, z] in assembly mm, axis_mm as [[x, y, z], [dx, dy, dz]], and component_b is explained as the alternative target. Component_a is implied as the source component.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific measurement verb and resource: smallest distance in mm from component_a to component_b, a point, or an axis. It also explicitly routes overlap/touch questions to the sibling tool check_interference, distinguishing it from nearby interference-checking tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains how to use each alternative target input: pass component_b, point_mm, or axis_mm. It also tells the agent that a distance of 0 should be interpreted with check_interference, but it does not explicitly state when not to use the tool or list all alternative measurement tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_assemblyA
Create a new empty assembly document; it becomes the current document.
Assemblies compose saved parts: insert_component places each part, add_mate constrains them, check_interference proves nothing overlaps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses the key state change—becomes the current document—but does not mention persistence, whether the previous document is closed, or any other side effects. Core behavior is covered, but not richly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The primary action and state effect are front-loaded, and the second sentence earns its place by providing workflow context and pointing to sibling tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, no-argument creation tool, the description is largely complete: it names what is created, its state, and how it fits into the assembly workflow. Without annotations or an output schema, a note about return values or safety would make it fully complete, but nothing essential is missing for calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, so the schema leaves nothing undocumented. No parameter explanation is needed, and the baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new empty assembly document; it becomes the current document.' This clearly distinguishes the tool from sibling creation tools like new_part by naming the document type and empty initial state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by explaining that assemblies compose saved parts and names the follow-up tools (insert_component, add_mate, check_interference). It does not explicitly exclude new_part or state 'use when...', so it stops short of full when/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_partA
Create a new empty part document; it becomes the current part.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the key side effect that the new part becomes the current part, which is an observable state change. It does not discuss file persistence or unsaved-work handling, but for a zero-argument creation command the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler; the verb and object are front-loaded and the side effect follows immediately. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description explains what is created and the resulting state. It is nearly complete, though it could add one clause about what happens to the previously current part to remove all ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no properties and the description reflects that by describing the operation as parameterless. With zero parameters, there is nothing for the description to add to the schema, so this is the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Create'), names the resource ('new empty part document'), and states the immediate effect ('becomes the current part'). This distinguishes it from siblings like new_assembly and open_part 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call it when you want to start a new empty part. However, it does not explicitly say when not to use it or mention alternatives such as new_assembly or open_part, leaving the routing decision mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_assemblyA
Open a .sldasm, or import a STEP/IGES/Parasolid assembly; it becomes the current document.
An imported assembly's parts arrive as components at their places, ready for list_components and add_mate; the result gives the component count. A file holding a single part is refused (use open_part).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does so well: it names the side effect (the file becomes the current document), the post-import state (parts arrive as components at their places), the return value (component count), and the refusal behavior for single-part files. It stops short of error/permission behavior or what happens to a previously open document, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action and file formats, followed by import semantics and the exclusion rule. Every sentence carries information; the only mild looseness is the semicolon-clause structure, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter open tool with no annotations and no output schema, the description supplies the return value (component count), the side effect on document state, and the alternative tool. That is close to complete; only edge-case error handling is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'path' parameter is undocumented in the schema. The description partially compensates by naming accepted file formats, which tells the agent what kind of path is valid, but adds no syntax, extension-vs-directory, or resolution detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (open/import) plus resource (assembly), enumerates the accepted file formats (.sldasm, STEP, IGES, Parasolid), and explicitly distinguishes itself from open_part by noting that single-part files are refused. An agent can route between open_assembly and open_part 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use it (assemblies) and when not to (files holding a single part), naming the alternative tool (open_part) with the selecting condition. It also hints at follow-on tools (list_components, add_mate), which further anchors intended usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_partA
Open a .sldprt, or import a STEP/IGES/Parasolid file as a new part; it becomes the current part.
list_features shows its history, list_dimensions its dimensions. An imported body has no history, but the tools work on it (holes and pockets on its faces, bosses, fillets); an import returns its solid body count and mass properties. A file holding an assembly is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does substantial work: it discloses the side effect (becomes the current part), import behavior (no history, but face tools still work), return info (solid body count and mass properties), and an error condition (assembly refused). Missing only finer details like path resolution or overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and keeps the follow-on behavior terse. The parenthetical enumeration of face operations is slightly awkward but each clause adds real behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema, single-parameter tool, the description is fairly complete, covering purpose, side effects, import semantics, return info, and an error condition. Minor gaps remain around path format and permission/error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (path) with 0% schema coverage, so the description must compensate. It partially does by naming accepted file types (.sldprt, STEP, IGES, Parasolid), effectively defining the value domain, but gives no format details (absolute vs relative path, etc.).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Open') plus resource (.sldprt / STEP/IGES/Parasolid import) and clarifies it becomes the current part. It also distinguishes itself from the assembly-oriented sibling by stating 'A file holding an assembly is refused.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (opening or importing a part) and an exclusion (assembly files refused, implicitly routing to open_assembly). It also names follow-up tools (list_features, list_dimensions), though it doesn't explicitly name the alternative tool to use for assemblies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sketchA
Read a sketch of the current part back, e.g. one a person drew (a list_features name).
Gives its lines, arcs, circles and splines in MODEL coordinates (mm), construction geometry marked, its dimensions (for set_dimension) and whether it is fully defined: check a design against fixed points before building on it with extrude_sketch / cut_sketch.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses return contents (geometry types, MODEL coordinates in mm, construction geometry marking, dimensions, fully-defined status), but does not mention permissions, errors, or side-effect guarantees beyond the implication that 'read' is safe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core purpose and then the return details. Every clause contributes useful return or usage information with no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain return values; it does so with geometry types, coordinate system, units, dimensions, and fully-defined status. Parameter validation and missing-sketch behavior remain implicit, keeping it from being fully complete for a no-annotation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single required 'name' parameter. The description identifies it as a list_features name, which helps an agent source the value, but does not specify naming conventions, case sensitivity, or error behavior for invalid names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (sketch) and enumerates the returned entities: lines, arcs, circles, splines, dimensions, and fully-defined status. This clearly distinguishes it from siblings like list_features and list_dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to check a design against fixed points before building on it with extrude_sketch / cut_sketch, and references list_features as the source of the sketch name. It does not state when not to use it or name an alternative for listing sketches without geometry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rebuildB
Force a rebuild of the current part or assembly and report whether it rebuilt without errors.
In an assembly, mate_errors names each mate SolidWorks flags, and each mate that lost a face or edge it used (it rebuilds fine, but holds nothing).
| Name | Required | Description | Default |
|---|---|---|---|
| top_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose useful return semantics – that in assemblies mate_errors names each flagged mate, and distinguishes mates that rebuild 'fine, but hold nothing' (dangling references). However it never states that a rebuild mutates/regenerates geometry, what the top_only flag does, or any document/state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by an assembly-specific note. Two focused sentences with little waste, though the mate_errors clause is somewhat dense and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description must cover both behavior and returns, and it partially does via the mate_errors explanation. But it omits the top_only parameter entirely and says nothing about mutation side effects or required state, leaving real gaps for a write-type operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter top_only has 0% schema description coverage and is never mentioned in the description. Since the description doesn't compensate for the coverage gap, an agent cannot tell that top_only limits the rebuild to the top-level assembly rather than rebuilding children.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Force a rebuild of the current part or assembly and report whether it rebuilt without errors.' An agent immediately knows the action and the object. No sibling tool performs rebuilds, so explicit differentiation isn't required, though it never names what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'the current part or assembly' – the agent infers it must be run against an active document. There is no explicit guidance on when to rebuild versus inspecting features or status, nor any stated prerequisite (e.g., an open/active document must exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_featureA
Move a feature (a list_features name), with its sketch, to just before another one; rebuild and remeasure.
For a boss added last that filled holes cut earlier: build it at the end as usual, then move it before the first of those cuts, and they cut through it again. Refused, the part as it was, when the feature is built on something at or after that place. Returns the new order (features) and the features that fail to rebuild (failing_features).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| before | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behaviors: moving the associated sketch, rebuilding and remeasuring, refusing the operation if dependency order is violated, and returning both the new order and failing features. It omits permissions, rate limits, or whether dependent features are automatically updated, but the core mutation and failure semantics are 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and efficient, but the following example paragraph is long and somewhat convoluted, using awkward phrasing that requires rereading. It could be trimmed or restructured without losing much information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description supplies return values (features, failing_features). Given no annotations, it explains rebuild/remeasure and a refusal condition. It is fairly complete for a dependent-feature reorder operation, though it could state prerequisites or effects on other dependents more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'name' is a feature name from list_features and 'before' is another feature name. This gives meaningful semantics for both parameters, though it does not specify format constraints or whether 'before' must be an existing feature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Move) and resource (a feature, a list_features name) and the exact effect (to just before another one, rebuild and remeasure). This distinguishes it from sibling tools like add_feature, delete_feature, or suppress_feature, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete scenario for use ('For a boss added last that filled holes cut earlier...') and a refusal condition ('Refused... when the feature is built on something at or after that place'). It does not explicitly compare to alternatives like suppress_feature or rebuild, but the when-to-use context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_assemblyC
Save the current assembly to a native .sldasm file (so it can be reopened).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden for behavioral disclosure. It states that it saves to a .sldasm file, implying a write operation and file system interaction, but does not mention whether it overwrites existing files, requires certain conditions, or what happens on failure. The description is minimal and leaves important behavioral aspects unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and to the point, with no unnecessary words. It is appropriately front-loaded with the purpose. It earns a 4 for efficiency, though it could be slightly more detailed without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only one parameter and no output schema, so baseline completeness could be higher. However, given the zero schema coverage and lack of annotations, the description fails to provide essential context such as file handling behavior and parameter specifics. An agent might not know whether to include '.sldasm' in the path or if the tool creates directories. It is incomplete for a file-saving operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter schema coverage is 0%, meaning the description must compensate for the undocumented 'path' parameter. The description says 'Save the current assembly to a native .sldasm file', which implies that 'path' is the file location, but it does not clarify if the path should include the file extension, whether directories are created automatically, or any format requirements. This is a significant gap given the zero coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Save') and the resource (current assembly) and specifies the output format (.sldasm). This distinguishes it from save_part, which is a sibling, though it does not explicitly differentiate between saving assemblies and parts. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when the user wants to save an assembly for later reopening. It does not explicitly state when not to use it or mention alternatives like save_part, but the context of 'assembly' is clear. No contraindications are provided, but the purpose is obvious enough that an agent can infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_partA
Save the current part to a native .sldprt file (so it can be reopened/edited).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It clearly states the core write behavior and the native format, but it does not disclose whether an existing file is overwritten, whether the path must include the .sldprt extension, or what the tool returns. This is an adequate but incomplete disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence states the operation, destination format, and rationale with no filler. The parenthetical adds purpose without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter save operation the description is broadly adequate, but with no annotations and no output schema it leaves out side effects (e.g., overwrite behavior) and return value or error information. An agent can call it correctly in the common case, but not with full certainty about edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description is the only source of parameter meaning. It indicates that 'path' is the destination file path and that it should point to a native .sldprt file, which is material information beyond the raw schema. It does not discuss extension handling or paths, but for a single string parameter the key semantics are conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Save'), identifies the resource ('the current part') and the exact output ('a native .sldprt file'), and adds the intent ('so it can be reopened/edited'). This clearly differentiates it from export, save_assembly, and other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when persisting the current part in a natively editable format. It does not explicitly name alternatives like export or save_assembly or state when not to use them, 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.
screenshotA
Save a screenshot of the current part or assembly (PNG/JPG/TIF).
view: 'iso' (default), 'front', 'back', 'left', 'right', 'top' or 'bottom'; or from_dir = [x, y, z], the direction to look from, e.g. [-1, 1, -1] to see from behind and below what iso hides (the model's +y stays up). Zoomed to fit, or onto a detail: zoom_mm = [[x1, y1, z1], [x2, y2, z2]], the corners of the region to fill the image (model mm, in any view). Reference planes and axes are left out, so they do not cut through the shape; show_planes=True keeps them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| view | No | iso | |
| zoom_mm | No | ||
| from_dir | No | ||
| show_planes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses useful defaults (iso view, planes/axes omitted unless show_planes=True) and parameter behaviors, but omits operational details such as required active document, file overwrite behavior, and error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then systematically explains each option. Every sentence adds useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers most parameter and behavioral aspects needed to invoke the tool. However, the missing path explanation and lack of document-state prerequisites leave minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides detailed semantics for view, from_dir, zoom_mm, and show_planes, but does not describe the required 'path' parameter at all, leaving a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Save a screenshot') and resource ('current part or assembly'), including output formats (PNG/JPG/TIF). No sibling tool provides screenshots, so it is uniquely identifiable from the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the context (current part or assembly) and details how to control the view, but does not explicitly state when to use this tool versus alternatives or any exclusions. Since no alternative screenshot tool exists among siblings, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_appearanceA
Colour and/or see-through of the current part, or of one component in an assembly.
rgb: [r, g, b], 0..255 each; transparency: 0 solid .. 1 clear (0 makes a see-through component solid again). In an assembly, component names it ('Bracket-1', 'Leg-1/Thigh-1'); the colour then belongs to the assembly and the part keeps its own. What is left out stays as it was.
| Name | Required | Description | Default |
|---|---|---|---|
| rgb | No | ||
| component | No | ||
| transparency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses partial-update semantics ('What is left out stays as it was'), the assembly-vs-part colour ownership rule, and the reset behaviour of transparency 0. It does not mention persistence (whether a save is needed) or error behaviour, but the core mutation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, followed by compact per-parameter clarification. Sentences are dense and mostly earn their place; the nested parenthetical on transparency is slightly heavy but still informative rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, no-annotation, no-output-schema mutation tool, the description covers purpose, all parameter formats, and key mutation semantics. It stops short of persistence/undo and permission context, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: rgb is documented as [r, g, b] with 0..255 range, transparency as a 0..1 scale with direction explained, and component as a naming convention with example paths. Formats and constraints for all three parameters are supplied beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: setting the colour and/or transparency of the current part or one assembly component. It clearly frames the tool as a visual-appearance operation, distinguishing it implicitly from geometry-modifying siblings like set_material or add_fillet, though it never names set_material to disambiguate appearance from material.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: the tool applies to 'the current part, or of one component in an assembly', and the component-name syntax hints at the assembly case. However, there is no explicit when-to-use vs when-not guidance and no named alternative (e.g. set_material for physical properties), leaving the agent to infer scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_component_transformA
Move/rotate a component: its origin to (x, y, z) mm, rotated rx/ry/rz degrees.
name is the component name ('Bed' or 'Bed-1'); rotations apply X, then Y, then Z about the assembly axes, and work on a fixed component too. The transform is read back and compared, so a move SolidWorks ignored (e.g. one already pinned by mates) fails loudly instead of silently leaving the part where it was.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| x_mm | Yes | ||
| y_mm | Yes | ||
| z_mm | Yes | ||
| rx_deg | No | ||
| ry_deg | No | ||
| rz_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it discloses rotation order (X then Y then Z about assembly axes), that fixed components are supported, and that the transform is read back and compared so ignored moves fail loudly. This goes well beyond a generic 'moves a component' statement, though it does not describe return values or success output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry high-density information with no fluff. The core action is front-loaded, and the second sentence adds crucial parameter and failure-mode details. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the essential invocation details: coordinates, rotation units/order, component naming, and error behavior. It is slightly ambiguous what 'fixed component' exactly means versus 'pinned by mates,' but overall it gives an agent enough to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates fully: it explains name with example format ('Bed' or 'Bed-1'), gives units for x/y/z (mm) and rx/ry/rz (degrees), clarifies rotation order, and states the origin is moved to the provided coordinates. All seven parameters are meaningfully defined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Move/rotate a component: its origin to (x, y, z) mm, rotated rx/ry/rz degrees.' This clearly distinguishes the tool from siblings like set_dimension, set_material, and insert_component by stating exactly what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the description of behavior ('work on a fixed component too', 'fails loudly instead of silently leaving the part'), but there is no explicit 'use this when...' or comparison to alternative tools. The context is clear enough, but 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.
set_dimensionA
Set a named driving dimension (e.g. 'D1@BlockExtrude') in mm, rebuild, and remeasure.
This is the parametric edit at the heart of the correction loop. Every
modelling tool returns its dimensions by role in dimensions. An angle (a
revolve, an angle mate) takes degrees; list_dimensions shows the unit. A
point's coordinate from the origin (a sketch's 'x3', 'y2') takes a sign,
-5 being across the origin; any other length is a size, refused below 0.
A value SolidWorks does not take (a dimension an equation drives, a size
of 0) is refused with the reason, and the part is left as it was.
| Name | Required | Description | Default |
|---|---|---|---|
| value_mm | Yes | ||
| dimension_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the rebuild+remeasure side effects, unit rules (degrees for angles, mm otherwise), sign semantics for point coordinates, and atomic failure behavior ('refused with the reason, and the part is left as it was'). Rejection cases (equation-driven dimensions, zero size, negative sizes) are enumerated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded and complete, and the following paragraph is dense with value. However, it is a single run-on block covering units, signs, and refusals without structural breaks, so it is slightly harder to scan than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param mutation tool with no annotations and no output schema, the description is nearly complete: it covers inputs, units, rejection behavior, and side effects. It only loosely signals what the remeasure step returns, leaving the response shape somewhat implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: value_mm is given unit rules, angle-vs-length interpretation, sign conventions, and negative-value validity; dimension_name is illustrated by example and by the role-based naming returned from other tools, with list_dimensions pointed to as the unit reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set), a specific resource (named driving dimension), the format convention ('D1@BlockExtrude'), the unit (mm), and the two side effects (rebuild, remeasure). An agent can immediately distinguish this from read-only siblings like list_dimensions or list_features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'This is the parametric edit at the heart of the correction loop' plus 'Every modelling tool returns its dimensions by role in dimensions' establishes when to reach for it. It also implicitly routes away from equation-driven dimensions (which it says are refused), but it never explicitly names set_equation/set_equations as the alternative for that case, so it falls short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_equationA
Add an equation, or replace the one that sets the same name; rebuild and remeasure.
A SolidWorks equation string, e.g. '"D1@BlockExtrude" = 25' or '"D1@BlockExtrude" = 2 * "D1@Sketch1"'. A global variable is '"W" = 40'; link a dimension to it with '"width@Sketch1" = "W"', and set '"W" = 45' again to change it. Persists a relation (unlike set_dimension). Returns the index, whether it replaced one, the features that fail to rebuild (failing_features) and mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| equation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses side effects ('rebuild and remeasure'), the replace-vs-add semantics, persistence behavior, and return contents (index, replaced flag, failing_features, mass properties). It omits any permission/error conditions, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary action is front-loaded in the first clause, followed by a dense but useful block of format examples. The length is justified by the non-obvious string grammar, though the example sentences could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param mutation tool with no annotations and no output schema, the description covers action, replace semantics, side effects, return values, and the full parameter format. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (the single 'equation' param has no description), so the description must compensate, and it does richly: it gives concrete syntax for dimension equations, global variables, and dimension-to-variable links ('"width@Sketch1" = "W"'), plus how to mutate an existing variable. This fully defines the parameter's expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Add an equation, or replace the one that sets the same name') and immediately distinguishes itself from a sibling by noting it 'Persists a relation (unlike set_dimension).' An agent can tell what it does and how it differs from set_dimension 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names an explicit alternative (set_dimension) and the condition that separates them ('persists a relation'). However it does not address the plural sibling set_equations, nor when to prefer this over batch/list/delete equation tools, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_equationsA
Add or replace a list of equations at once, with one rebuild at the end.
As set_equation for each, in order (later ones may use earlier ones). A refused equation undoes the whole list. Returns per equation its index and whether it replaced one, failing_features and mass properties.
| Name | Required | Description | Default |
|---|---|---|---|
| equations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses ordering semantics ('in order, later ones may use earlier ones'), atomic rollback ('a refused equation undoes the whole list'), and return contents per equation. It omits permission requirements and what exactly triggers a refusal, but the core mutation behavior is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose. Each sentence adds distinct value: purpose/rebuild behavior, ordering/atomicity, and return contents. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch mutation tool with no annotations and no output schema, the description covers atomicity, ordering, and return values reasonably well. However, it does not explain the equation item format (critical given 0% parameter coverage) or any prerequisites such as an active document or required permissions, leaving gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter with 0% description coverage and an empty item type ({}). The description only says 'list of equations' and 'As set_equation for each,' which does not explain the item format, required fields, or how each equation is represented. For a single undocumented parameter, this leaves significant ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add or replace a list of equations at once'), plus the distinctive batch behavior ('with one rebuild at the end'). This clearly distinguishes it from the single-equation sibling set_equation and from list_equations/delete_equation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies batch use through 'at once' and 'one rebuild at the end,' and references set_equation as the per-item equivalent. It does not explicitly state when to prefer this over repeatedly calling set_equation, but the context is clear enough for an agent to choose the batch tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_materialB
Assign a material by name (e.g. "6061 Alloy", "AISI 1020", "ABS").
Makes mass and density reflect a real material instead of the 1000 kg/m³ default. One SolidWorks does not have (say "TPU") comes with its density: density_kg_m3=1210 makes it, by that name, carrying only the density. Returns mass properties including density.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| database | No | ||
| density_kg_m3 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose meaningful behavior: overriding the 1000 kg/m³ default and returning mass properties including density. However, it omits permission requirements, reversibility, and what happens if a material is already assigned, leaving real gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is front-loaded and useful, but the middle sentence ('One SolidWorks does not have (say "TPU") comes with its density: density_kg_m3=1210 makes it, by that name, carrying only the density') is garbled and hard to parse, undermining otherwise efficient content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the core behavior and the custom-material fallback and states that mass properties are returned. It still leaves the 'database' parameter and permission/reversibility behavior undocumented, so it is only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds real meaning for two params: 'name' (with material examples) and 'density_kg_m3' (with the example value 1210 for a custom material). The third parameter, 'database', is never mentioned anywhere, leaving a coverage hole.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Assign a material by name') with concrete examples ('6061 Alloy', 'AISI 1020', 'ABS'), so an agent knows this sets a model's material. It does not explicitly contrast itself against siblings like get_mass_properties, but the resource is distinct enough to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by explaining the effect (mass/density reflect a real material instead of the 1000 kg/m³ default) and the fallback for unknown materials via density_kg_m3. It never states when to call this versus alternatives or prerequisites (e.g., an open/active document), so 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.
slice_meshA
Cross-sections of an STL/3MF mesh at the given heights along axis 'x'/'y'/'z'.
For modelling a part that must fit something that only exists as a mesh. Returns each section's closed loops, largest first, as polygon points (mm) ready to use as profiles. frame (3MF): 'object' (the mesh's own frame) or 'build' (as placed on the slicer's plate).
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | ||
| path | Yes | ||
| frame | No | object | |
| heights_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does reasonably: it discloses the return structure (closed loops, largest first, mm polygon points) and the meaning of frame for 3MF ('object' vs 'build'). It implies a non-mutating read but never states that the source file is untouched or what happens on heights that miss the mesh.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and output, followed by the frame caveat. Efficient, though 'ready to use as profiles' is mild padding and the line breaks fragment the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema tool with 0% param coverage, the description fills most needs: output shape, axis/frame value sets, and the target scenario. Missing only path expectations and edge-case behavior (empty sections, invalid file types).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for axis ('x'/'y'/'z'), heights_mm (heights along the axis) and frame ('object'/'build') — values the bare schema lacks. It does not describe path format or whether heights_mm accepts a single value vs array, leaving one gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cross-sections/slice) and resource (STL/3MF mesh), names the axis and heights, and describes the output form (closed loops as polygon points in mm). It is clearly distinguishable from siblings like compare_with_mesh or get_bounding_box.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the scenario for use: 'For modelling a part that must fit something that only exists as a mesh.' Clear context, but it names no alternative or exclusion, so the agent must infer 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.
split_bodyA
Split the part's body in two along a plane (front/top/right or a plane by name).
The two bodies come back by name: combine them differently, or check each with list_bodies. Use add_plane first for a cut anywhere else.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Split | |
| plane | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key post-condition - the result is two named bodies - and the prerequisite that non-standard cuts require add_plane first. It does not state whether the operation is destructive to the original body or reversible, which is the one 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-loaded with the core action, then results, then the prerequisite. Every clause earns its place, including the routing to add_plane.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter geometry tool with no output schema it covers purpose, plane values, result shape, and the add_plane precondition. The remaining gap is the role of the optional 'name' parameter and whether the original body is consumed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does explain the accepted 'plane' values (front/top/right or a name), which the schema leaves blank. However, the required 'name' parameter is entirely unaddressed, and it is unclear whether 'name' labels the resulting bodies or the feature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (split) and resource (the part's body) and the exact mechanism (a plane). It is clearly distinguishable from siblings like combine_bodies, cut_profile, or slice_mesh, which operate on different geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives: 'combine them differently' points to combine_bodies for the result, and 'Use add_plane first for a cut anywhere else' tells the agent the precondition for non-standard planes. The front/top/right carve-out defines the legitimate value range.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suppress_featureA
Suppress a feature, or bring it back with suppress=False; rebuild and remeasure.
Keeps the feature and its dimensions, unlike delete_feature, so it suits trying a variant. Features that depend on it follow both ways.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| suppress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses side effects (rebuild and remeasure), what is preserved (the feature and its dimensions), and dependency propagation ('features that depend on it follow both ways'). It does not mention permissions or reversibility limits, but the key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the core action and its inverse, then the differentiating behavior. No filler; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must stand alone; it covers the mutation's side effects and dependency behavior well. Minor gap: it doesn't clarify the name parameter's expected value or what a successful suppression returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the suppress flag well ('bring it back with suppress=False', default true) but says nothing explicit about the name parameter beyond it referring to 'a feature'. Baseline is dragged up slightly by the good suppress explanation but the name gap keeps it at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (suppress) and resource (feature), including the inverse operation via suppress=False. It explicitly contrasts with delete_feature, so an agent can distinguish it from a close sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (delete_feature) and the condition that selects this tool instead ('keeps the feature and its dimensions, so it suits trying a variant'). It also notes that dependents follow both ways, giving the agent enough to decide between suppress and delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suppress_mateA
Suppress a mate so it stops holding its components (it stays in the tree), or bring it back.
suppress=False brings it back. Returns whether it is suppressed now.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| suppress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the mate is not removed but retained in the tree, that the operation is reversible, and what the return value reports. It does not mention permissions or error conditions, but the core behavioral profile is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the primary action and its side effect, followed by the restore path. No wasted words and the parameter semantics are stated inline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no annotations and no output schema, the description supplies the effect, reversibility, and return value, which is most of what an agent needs. The remaining gap is how to specify/identify the mate by name and any failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the `suppress` boolean precisely (true suppresses, false restores), which the bare schema does not. The required `name` parameter is left entirely undefined — no format or identification guidance for the mate — so coverage is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (suppress a mate) and immediately explains the effect: it stops holding its components while staying in the tree, which distinguishes it from delete_mate and suppress_feature. It also covers the inverse operation, so the agent understands this is a reversible toggle rather than a one-way action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The toggle semantics (default suppress, suppress=False to restore) are spelled out, so the usage is implied and clear for the common case. However, there is no explicit when-to-use/when-not guidance and no named alternative (e.g., delete_mate for permanent removal), leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swept_regionA
Outline what a component covers in a plane while a joint moves, to keep clear of it or cut it away.
Steps the joint's dimension through values (as check_motion, e.g. every 5 degrees over 30..150), cuts the component at axis = each of heights_mm (a few heights inside a layer, not on its faces) and joins all of it, made margin_mm wider, within about tolerance_mm. frame: the component to give the coordinates in, such as the part to cut from; else the assembly's. Each region's outline runs counter-clockwise in the plane's other two axes, (x, y) across z: give it to add_sketch as a spline. count says how many separate regions there are.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | z | |
| frame | No | ||
| values | Yes | ||
| component | Yes | ||
| dimension | Yes | ||
| margin_mm | No | ||
| heights_mm | Yes | ||
| tolerance_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the sampling/stepping behavior, that cutting happens off the layer faces, that the join is made margin_mm wider within tolerance_mm, and the counter-clockwise winding convention. It omits nothing critical for invocation, though it does not discuss cost, failure modes, or the exact return shape beyond 'count'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening sentence, and the dense follow-on sentences each carry real constraint information (stepping, margins, winding, downstream use). It is a little stream-of-consciousness and could be tightened, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, no-output-schema, no-annotation geometric tool, the description supplies enough -- process, key constraints, orientation, and the count/count-of-regions hint -- for an agent to call it correctly. Return detail is light but the essential contract is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it explains values (the stepped joint dimension), heights_mm (a few heights inside a layer, not on faces), margin_mm, tolerance_mm, frame (component vs assembly default), and axis (the cut axis). Only dimension and component are left somewhat implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 -- outlining what a component sweeps in a plane as a joint moves -- which is a distinct operation. It does not explicitly contrast against near relatives like add_swept_profile or cut_profile_through_plane, so an agent must still infer the boundary, but the core 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the goal (to keep clear of the swept volume or cut it away) and ties the operation into a workflow, naming check_motion as the analogous stepping tool and add_sketch as the consumer of the result. No explicit when-not or alternative selection is given, 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.16.1- Changed
add_chamfer2 fields changed- added
Input schema / properties / angle_degAdded value: +{ + "default": 45, + "title": "Angle Deg", + "type": "number" +} - added
Input schema / properties / from_faceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "From Face" +}
- Changed
delete_feature1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "default": false, + "title": "Dry Run", + "type": "boolean" +}
- Added
reorder_feature - Added
set_appearance
28 tool updates
v0.13.0- Added
activate_document - Changed
add_extruded_profile4 fields changed- added
Input schema / properties / about_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "About Mm" +} - added
Input schema / properties / draft_degAdded value: +{ + "default": 0, + "title": "Draft Deg", + "type": "number" +} - added
Input schema / properties / mergeAdded value: +{ + "default": true, + "title": "Merge", + "type": "boolean" +} - added
Input schema / properties / rotate_degAdded value: +{ + "default": 0, + "title": "Rotate Deg", + "type": "number" +}
- Added
add_extruded_profile_on_plane - Changed
add_fillet3 fields changed- added
Input schema / properties / radii_at_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Radii At Mm" +} - added
Input schema / properties / skip_shorter_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Skip Shorter Mm" +} - added
Input schema / properties / tangent_propagationAdded value: +{ + "default": false, + "title": "Tangent Propagation", + "type": "boolean" +}
- Added
add_full_round - Added
add_plane - Changed
add_revolved_profile1 field changed- added
Input schema / properties / axis_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Axis Mm" +}
- Added
add_sketch - Changed
add_swept_pipe1 field changed- added
Input schema / properties / smoothAdded value: +{ + "default": false, + "title": "Smooth", + "type": "boolean" +}
- Added
combine_bodies - Changed
cut_profile2 fields changed- added
Input schema / properties / about_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "About Mm" +} - added
Input schema / properties / rotate_degAdded value: +{ + "default": 0, + "title": "Rotate Deg", + "type": "number" +}
- Added
delete_component - Added
delete_equation - Changed
delete_feature1 field changed- added
Input schema / properties / with_equationsAdded value: +{ + "default": false, + "title": "With Equations", + "type": "boolean" +}
- Added
delete_mate - Changed
export1 field changed- added
Input schema / properties / per_componentAdded value: +{ + "default": false, + "title": "Per Component", + "type": "boolean" +}
- Changed
extrude_sketch5 fields changed- added
Input schema / properties / depth_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - added
Input schema / properties / depth_mm / defaultAdded value: +null - removed
Input schema / properties / depth_mm / typeRemoved value: -"number" - added
Input schema / properties / up_toAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Up To" +} - changed
Input schema / requiredPrevious value: -[ - "sketch", - "depth_mm" -]New value: +[ + "sketch" +]
- Added
list_bodies - Added
list_documents - Changed
list_edges4 fields changed- added
Input schema / properties / faceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Face" +} - added
Input schema / properties / featureAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Feature" +} - added
Input schema / properties / min_length_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Min Length Mm" +} - added
Input schema / properties / within_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Within Mm" +}
- Added
list_equations - Changed
measure_distance1 field changed- added
Input schema / properties / axis_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Axis Mm" +}
- Changed
screenshot2 fields changed- added
Input schema / properties / from_dirAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "From Dir" +} - added
Input schema / properties / show_planesAdded value: +{ + "default": false, + "title": "Show Planes", + "type": "boolean" +}
- Added
set_equations - Changed
set_material1 field changed- added
Input schema / properties / density_kg_m3Added value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Density Kg M3" +}
- Added
split_body - Added
suppress_mate - Added
swept_region
11 tool updates
v0.9.0- Changed
add_mate1 field changed- added
Input schema / properties / angle_degAdded value: +{ + "default": 0, + "title": "Angle Deg", + "type": "number" +}
- Added
check_motion - Added
check_printability - Added
cut_offset_pocket - Changed
cut_profile_through_plane1 field changed- added
Input schema / properties / keep_insideAdded value: +{ + "default": false, + "title": "Keep Inside", + "type": "boolean" +}
- Added
cut_sketch - Added
extrude_sketch - Added
make_drawing - Added
measure_distance - Added
read_sketch - Changed
screenshot2 fields changed- added
Input schema / properties / viewAdded value: +{ + "default": "iso", + "title": "View", + "type": "string" +} - added
Input schema / properties / zoom_mmAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Zoom Mm" +}
11 tool updates
v0.8.0- Changed
add_disc2 fields changed- added
Input schema / properties / x_mmAdded value: +{ + "default": 0, + "title": "X Mm", + "type": "number" +} - added
Input schema / properties / y_mmAdded value: +{ + "default": 0, + "title": "Y Mm", + "type": "number" +}
- Changed
add_extruded_profile1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Changed
add_extruded_profile_on_face1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Added
add_extruded_slot - Changed
add_revolved_profile1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Changed
add_swept_profile1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Added
add_text_on_face - Changed
cut_profile1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Changed
cut_profile_on_face1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Changed
cut_profile_through_plane1 field changed- added
Input schema / properties / corner_radii_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Corner Radii Mm" +}
- Changed
list_faces1 field changed- added
Input schema / properties / componentAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Component" +}
4 tool updates
v0.6.0- Added
add_mirror - Added
delete_feature - Added
list_features - Added
suppress_feature
7 tool updates
v0.5.0- Added
add_boss_on_face - Added
add_extruded_profile_on_face - Changed
add_hole_on_face1 field changed- added
Input schema / properties / depth_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Depth Mm" +}
- Added
add_hole_wizard - Added
compare_with_mesh - Added
list_dimensions - Added
slice_mesh
48 tool updates
v0.4.0- First observed
add_box - First observed
add_chamfer - First observed
add_circular_pattern - First observed
add_cone - First observed
add_counterbore_hole - First observed
add_cylinder - First observed
add_disc - First observed
add_extruded_profile - First observed
add_extruded_spline - First observed
add_fillet - First observed
add_hole - First observed
add_hole_on_face - First observed
add_linear_pattern - First observed
add_lofted_solid - First observed
add_mate - First observed
add_revolved_profile - First observed
add_rib - First observed
add_shell - First observed
add_swept_pipe - First observed
add_swept_profile - First observed
add_thread - First observed
check_interference - First observed
close_part - First observed
cut_profile - First observed
cut_profile_on_face - First observed
cut_profile_through_plane - First observed
cut_slot - First observed
export - First observed
get_assembly_bounding_box - First observed
get_bounding_box - First observed
get_mass_properties - First observed
get_status - First observed
insert_component - First observed
list_components - First observed
list_edges - First observed
list_faces - First observed
new_assembly - First observed
new_part - First observed
open_assembly - First observed
open_part - First observed
rebuild - First observed
save_assembly - First observed
save_part - First observed
screenshot - First observed
set_component_transform - First observed
set_dimension - First observed
set_equation - First observed
set_material
TDQS
Scored across 86 tools
Many tools share overlapping purposes (e.g., add_box, add_cylinder, add_disc, add_cone, add_extruded_profile, add_swept_profile all create solids; multiple hole and cut tools). Descriptions are detailed and use-case oriented, which mitigates but does not eliminate misselection risk. With 86 tools, an agent must read carefully to choose the right primitive or cut.
Names are predominantly snake_case with a consistent verb_noun pattern (add_*, list_*, get_*, set_*, cut_*, check_*). Minor deviations like 'export', 'rebuild', 'screenshot', 'swept_region' break the pattern slightly but overall remain readable and predictable.
86 tools is an extreme mismatch for a single MCP server; the rubric marks 50+ tools as a 1. While the domain is complex, such a large surface is unwieldy and likely to overwhelm an agent's selection process.
Covers most part/assembly lifecycle: create, modify, delete features, dimensions, equations, mates, components, export, save/open. Minor gaps like no open_drawing or drawing edit tools, and no sheet metal/weldments, but agents can work around these limitations.
Maintenance
Related MCP Connectors
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Agent-first CAD: editable .kcad.ts source, deterministic review, OpenCASCADE kernel.
Source-linked robotics projects, bills of materials and components for AI agents.
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to automate SolidWorks (open/save parts, modify dimensions, export STEP) via COM, and optionally generate geometry using build123d code-CAD with PNG previews.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to design parametric 3D CAD models of industrial machinery end-to-end, including modeling, assembly, validation, and manufacturing drawings, through 79 MCP tools.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to control a running SOLIDWORKS session through its COM API, with tools for sketching, feature creation, assemblies, and visual feedback via screenshots.20Apache 2.0
- FlicenseNot gradedqualityAmaintenanceDrives SolidWorks 2022 on Windows via COM to perform CAD operations like sketching, features, dimensioning, and mass property inspection from AI assistants.-