inventor-mcp-server
Drives Autodesk Inventor via its COM API to build parametric 3D models from natural language — sketching, extrude/revolve, native hole features (drilled, tapped, counterbore), fillets, chamfers, circular patterns, and sheet metal, plus assembly placement and constraints (mate/flush/angle/insert) and parameter management, with volume/topology deltas reported after each feature.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@inventor-mcp-serverBuild an 80x80x4 mm sheet-metal bracket with two M6 mounting holes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
inventor-mcp-server
Maintained continuation of NeonGlay/inventor-mcp. The original repository has had no activity since its initial release (June 2026), and fresh installs there fail on MCP SDK 2.x. This repo carries the full original history plus the fixes and features that were submitted upstream as PRs and never reviewed. If the original author returns, everything here is available to be merged back. See CHANGELOG.md.
MCP server for parametric 3D modeling in Autodesk Inventor — drive Inventor with Claude (or any MCP client) in natural language.
Build real parametric parts — flanges, shafts, nuts, brackets, sheet-metal enclosures — by talking to an AI assistant. The server wraps Inventor's COM API with high-level, millimeter-based tools and ships with battle-tested knowledge of Inventor 2026 API quirks that aren't documented anywhere else.
You: "Build a DIN 934 M16 hex nut with proper conical chamfers"
Claude: creates sketch → hexagon → extrude → tapped M16×2 hole →
revolve-cut chamfers → done. Fully parametric, dimensioned sketches.Features
82 MCP tools: sketching, extrude/revolve, native hole features (drilled / tapped / counterbore), fillets, chamfers, circular patterns, sheet metal (named rules / Face / auto-mitered Flanges / Cut at world coordinates / Corner Round, with Flat Pattern support), parameters
Assemblies with vendor parts:
import_step(keeps the files in your project folder), placement with full orientation,check_interference/measure_distance, andsweep_rotationto check a door or lock moves freely through its whole rangeAssemblies (IAM): place components, ground them, constrain by origin geometry (mate / flush / angle) or drop a bolt into a hole with a single Insert constraint
execute_pythonpower tool — run arbitrary Python against the live COM connection with a persistent namespace (escape hatch for anything not covered by dedicated tools)Auto-reporting — every feature operation returns a volume/topology delta (
Hole1 | V 23497 (-503 mm³) | F7 E14), so the AI can self-verify each stepNever hangs on a dialog — calls run with
SilentOperationon a dedicated Inventor thread. A call stuck behind a modal dialog, or a long job, returns within 50 s with the dialog's title and text (read from the window list, no COM call);call_status(wait_seconds=30)follows it — with the prints andprogress()line so far — and returns the result the moment it finishes;cancel_callstops itShop-floor outputs —
flat_patterngives the flat size and writes the DXF/DWG for the laser (contour, holes and bend lines on their own layers);make_drawingmakes a PDF drawing (base + projected + iso views, overall dimensions, or the flat pattern dimensioned);bomlists the assembly's parts with quantity, part number, description, material and mass (CSV for Excel / ERP);propertiesreads and sets part number, description, stock number, material and custom propertiesReal arcs in sketches —
draw_closed_profiletakes rounded corners ([x, y, r]) and arcs through a point, plusdraw_rectangle(corner_radius),draw_slot,draw_arcandproject_edges(exact edges of a body, for remodelling). Arcs go through three points, so a sketch with flipped axes can't mirror them;inspectwarns when a curve was drawn as many short lines.sketch_patterndraws grids and circles of holes / slots,offset_profileoffsets loops, andcheck_sketch(also built into extrude's error) points at the gap that keeps a profile openSees its own work —
view_imagereturns pictures of the model (iso / front / top / … , several in one call, zoom to a component) as images the agent can look at, with sketches hidden and the user's camera put back. A flange on the wrong side or a part floating off the frame shows at a glanceSteel frames —
frame_memberslays Content Center profiles along skeleton lines (start → end, roll, centered or at the profile origin, shortened or extended at either end) and returns a saw cut list — what Frame Generator does, which has no API. A 13-member frame takes ~35 sSurfaces to solids —
surface_to_solidknits an imported surface model, patches the holes in the shell and closes it into a solid (or turns a closed shell into one directly), with the volume and any edges it couldn't closeMaterials in bulk —
set_materialgives every matching part of an assembly a material (Content Center parts left alone),material_reportshows material and mass per part and flags Generic parts, surface-only vendor models and parts with no mass;properties(mass_kg)overrides a massNested assemblies —
assembly_facesfinds faces of components inside sub-assemblies (type, normal, position, diameter) in top coordinates;constrain_facesconstrains them, corrects a wrong offset sign from where the face must land, and reports any other component the constraint dragged alongContent Center and big assemblies —
content_centerbrowses categories → families → sizes and makes members, custom length included (a 1500 mm DIN 1026-1 U 100 in one call);place_manyplaces dozens of components with position, orientation, name and grounding in one callAgent-friendly Python —
execute_pythonerrors show the traceback from the agent's own lines (also in helpers defined in earlier calls), stderr is captured, andundo_on_error=Truerolls back everything the call did.load_library(or~/.inventor-mcp/startup.py) keeps helper code loaded across namespace resets. COM errors come with their name and a hint (E_INVALIDARG, RPC_E_DISCONNECTED …) instead of a localized "Exception occurred".save_documentchecks the path first instead of failing with E_INVALIDARG and never rewrites library or Content Center files;close_unsavedclears the Part12s left by failed attemptsSeveral Inventors at once, across restarts — e.g. two agents on two projects (Claude Desktop runs one server for all its chats).
connect(project="…ipj")reuses the Inventor that has the project, or the running one if it is free, or starts a separate one; every tool takesinstance=to pick one, and each has its own call thread andexecute_pythonnamespace, so one agent's long call doesn't hold up the other.list_instancesshows them. An Inventor opened by hand can't be targeted — Windows always hands out the first one — so let the server start the second. A keeper process holds the Inventors the server started, so after a restart of the clientconnect(project=…)gets them backTransactions — wrap multi-step builds, roll back everything with one call
Hot reload — edit the API wrapper and reload without restarting the MCP client
Topology helpers — find edges/faces by coordinates instead of guessing indices
Parametric discipline — projected origin points, symmetry constraints, dimensioned sketches that survive parameter changes
Related MCP server: inventor-mcp
Requirements
Windows with Autodesk Inventor (developed on Inventor 2026, also verified on Inventor 2027; older versions may need enum adjustments — see docs/inventor-api-notes.md)
Python 3.12+
pip install "mcp[cli]" pywin32— MCP Python SDK 1.x and 2.x are both supported (2.x renamedFastMCPtoMCPServer; the server detects which is installed)An MCP client — used daily with Claude Code and Claude Desktop (several agents at once, see below)
Installation
Clone this repository:
git clone https://github.com/cenitu/inventor-mcp-server.gitInstall dependencies:
pip install "mcp[cli]" pywin32Register the server with your MCP client. For Claude Code, add to
.mcp.jsonin your project root (see.mcp.json.example). Use the absolute path toinventor_mcp_server/server.py:{ "mcpServers": { "inventor": { "command": "python", "args": ["C:/path/to/inventor-mcp-server/inventor_mcp_server/server.py"] } } }Don't use
"cwd"with-m inventor_mcp_server. Claude Code ignorescwdand starts the server from your project root, where the package can't be found — the process exits immediately and the client only reportsConnection closed. Pointing at the script by absolute path works from any directory.Configs written for 0.2.x that point at
src/server.pystill work — that file now forwards to theinventor_mcp_serverpackage — but please update them; the shim will be removed in a later release.Alternatively, install it from PyPI — no clone needed, and the config gets a plain command:
pip install inventor-mcp-server{ "mcpServers": { "inventor": { "command": "inventor-mcp-server" } } }(If your MCP client can't find the command, use the full path printed by
where inventor-mcp-server.)Restart the MCP client (MCP servers load at session start), start Inventor, then ask your AI assistant to build something.
Avoid
win32com.client.gencache.EnsureDispatchandCastToin your own scripts against the same Python install — they generate agen_pycache that breaks plainGetActiveObject(KeyError: '_dispobj_'). The server itself is immune since 0.5.0 (it never uses gen_py classes), but your scripts aren't: delete%LOCALAPPDATA%\Temp\gen_pyif it happens. See the API notes for the full story.
Claude Desktop
Claude Desktop reads the same mcpServers block from claude_desktop_config.json — use the full path
of the Python that has mcp and pywin32 installed (a bare python may be a different one):
{
"mcpServers": {
"inventor": {
"command": "C:/Users/<you>/AppData/Local/Programs/Python/Python312/python.exe",
"args": ["C:/path/to/inventor-mcp-server/inventor_mcp_server/server.py"]
}
}
}Two things that cost us an afternoon:
Where the file is. The Microsoft Store build of Claude Desktop does not use
%APPDATA%\Claude\claude_desktop_config.json. It keeps its data in%LOCALAPPDATA%\Claude-Data\claude_<id>\claude_desktop_config.json(the<id>is the package id, e.g.claude_pzs8sxrjxfjjc). If an edit seems ignored, look in%LOCALAPPDATA%\Claude\Logs\main.log— its paths show which folder the app really uses.Edit it only while Claude Desktop is fully closed. The app writes its in-memory copy of the file back when it quits, so an edit made while it runs is silently thrown away. Quit from the tray icon (closing the window is not enough), edit, start it again.
Settings → Developershould then listinventoras running; its log is%LOCALAPPDATA%\Claude\Logs\mcp-server-inventor.log.
Several agents, several projects
Claude Desktop starts one server for all its chats, so several agents share it. Each agent gets its own Inventor:
Tell each agent only its project: "Work in C:\…\Kiosk.ipj." It calls
connect(project=…)— the server reuses the Inventor that already has that project, takes the running one if it is free, or starts a separate Inventor named after the project.With several connected, every call carries
instance=<name>(the agent learns the name fromconnect); a call without it is refused instead of guessing.list_instancesshows them all.Each Inventor has its own call thread,
execute_pythonnamespace andcall_status, so one agent's long job doesn't hold up the others.
Things to know:
Let the server start the Inventors. Open at most one by hand. Windows hands every client the first Inventor that started, so a second one opened by hand can't be reached (
list_instanceslists it as unreachable).Restarting Claude Desktop (or the server) keeps the Inventors. Every Inventor the server starts is handed to a small keeper process (
keeper.py) that outlives the server; after the restart each agent'sconnect(project=…)gets the same Inventor back, open documents and all (connect(pid=…)picks one explicitly;list_instancesshows them). The keeper lets go of an Inventor when its window closes and exits on its own when it holds none. Inventors opened by hand — and ones started by a server older than 0.7 — are not kept: save and close those before restarting.Don't run tests in an agent's Inventor.
python tests/smoke_test.py --ownstarts its own Inventor and quits it. Exit your own scripts a few seconds afterapp.Quit(): a process that ends right away can leave a windowlessInventor.exebehind — which Windows may later hand to the next client that asks for a new Inventor. Tell an agent's Inventor from such a leftover by its open documents, not by its start time.
Smoke test
tests/smoke_test.py exercises every geometry-creating code path once against a live
Inventor and reports PASS/FAIL per step — the quickest way to qualify a new Inventor
release or verify your install:
python tests/smoke_test.py # starts Inventor if needed; closes only the docs it created
python tests/smoke_test.py --keep # leave the test documents open for inspection
python tests/smoke_test.py --own # in a separate Inventor it starts and quits — safe while agents workIt also checks every hard-coded enum constant against the live COM type library, so a renumbered enum in a future release shows up as a named failure instead of a cryptic COM error. Exit code = number of failed steps.
Current results: 118/118 pass on Inventor 2027.1 (Python 3.12, mcp 1.29 and 2.3).
tests/assembly_smoke_test.py does the same for the assembly tools — it builds a
plate and a pin on disk, places them, and exercises mate / flush / angle / insert
constraints (29/29 pass on Inventor 2027).
Skills (optional, recommended)
The skills/ directory contains two Agent Skills that teach Claude the workflow and the Inventor 2026 API quirks:
inventor-modeling — core patterns: units, sketch discipline, hole placement, sheet metal, diagnostic verification, common failure modes
inventor-din-parts — parametric recipes for DIN/ISO standard parts (hex nuts DIN 934 / 439, bolts DIN 933, socket head cap screws DIN 912, countersunk screws DIN 7991, washers DIN 125, flanges DIN 2573) with dimension tables
Install by copying into your skills directory:
cp -r skills/inventor-modeling ~/.claude/skills/
cp -r skills/inventor-din-parts ~/.claude/skills/Why this exists
Inventor's COM API documentation is wrong or silent about many things in recent versions. This project encodes empirically verified knowledge:
Correct Inventor 2026 enum values (
kPartDocumentObject = 12290, dimension orientation19201/19202/19203, …)ChamferFeatures.AddUsingDistance(EdgeCollection, d)— the 2026 replacement for the removedCreateChamferDefinitionSheet-metal
FlangeDefinition: the Distance argument is silently ignored; the real height is set viafeature.Definition.HeightExtent.Distance.Expression(and the angle is in radians — pass90and you get 5156°)CreateLinearPlacementDefinitionrequires aBiasPointargument that dynamic dispatch won't tell you aboutEdge indices renumber after every feature; fillets shift adjacent edges
…and more in docs/inventor-api-notes.md
Architecture
inventor_mcp_server/server.py MCP server (FastMCP / MCPServer) — tool definitions (stdio transport)
inventor_mcp_server/inventor_api.py InventorConnection — COM wrapper, all geometry logic (mm units)
skills/ Agent Skills for Claude
docs/ Hard-won API knowledgeContributing
Contributions welcome — see CONTRIBUTING.md for setup, the fast
edit → reload_api loop, and how to add a tool. Especially valuable:
Testing on Inventor 2024/2025 — run
tests/smoke_test.pyand file an Inventor version test report (no code needed)Drawing (IDW) support, and more modeling tools (shell, loft, sweep)
More DIN/ISO part recipes
Bug reports with the exact COM error and Inventor version
Start with a good first issue,
or ask and share what you built in Discussions.
License
MIT — see LICENSE.
Available Tools
82 toolsactivate_documentB
Make an open document the active one (by display name or full path).
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| name_or_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 precondition (document must be open) and the state change (it becomes the active one), but says nothing about failure modes, ambiguity resolution, or whether the switch affects subsequent tool calls — significant gaps for a state-mutating 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?
A single front-loaded sentence that states the effect first and the accepted input forms parenthetically. No filler, nothing redundant with the title or 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?
An output schema exists so return values need no explanation, but the tool mutates application state with no annotations and only one sentence of prose. An agent cannot tell what happens when the name is ambiguous, when the document is not open, or how this interacts with the 'instance' 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 50%: 'instance' is documented in the schema, while 'name_or_path' has no schema description. The description partially compensates by explaining that the identifier can be a display name or a full path, which is genuine added meaning, but the instance parameter is never mentioned in the 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?
Specific verb ('Make ... active') on a specific resource ('an open document'), with the accepted identifier forms named. It is clear what the tool does, though it does not explicitly contrast itself with siblings like list_documents or save_document that also deal with open documents.
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 word 'open' implies the precondition that the document must already be loaded, so usage is inferable. There is no explicit when-to-use/when-not guidance, no mention of using list_documents to discover valid names, and nothing about behavior when several documents match.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_parameterB
Add a new user parameter.
Args: name: Parameter name (e.g. "flange_diameter"). expression: Value or expression (e.g. "100", "width * 2"). units: Units — mm, cm, m, deg, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| units | No | mm | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does not say whether the name must be unique, what happens on collision, whether an active document is required, or whether the new parameter triggers a model rebuild.
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?
Short and front-loaded, with the purpose stated first and per-argument notes after. The stray quoting/blank line after the args block is cosmetic waste but nothing substantive is bloated.
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?
An output schema exists so return values need no explanation, and most parameters are covered. However, for a mutation tool with zero annotations it omits prerequisites (active document, instance selection) and failure modes, which an agent needs 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 description coverage is only 25% (just instance), but the description compensates by explaining name, expression, and units with concrete examples like "width * 2" and unit values. The instance parameter is documented in the schema itself, so nearly all parameters carry meaning.
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?
"Add a new user parameter" gives a specific verb plus resource and is clearly distinguishable from set_parameter/get_parameters in the sibling list. It does not explicitly name those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g. an active document or connected Inventor instance), and no explicit contrast with set_parameter for modifying an existing parameter. Only the word "new" hints at create-vs-update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_facesA
Find faces of a component anywhere in the assembly — also inside sub-assemblies — in TOP assembly coordinates (mm). Each result has a ref ("Sub:1/Part:1#F12") that constrain_faces takes. For a sub-assembly path, every part below it is searched.
Args: path: Component path from list_occurrences(depth=2), e.g. "Z AXIS:1/FIXED PLATE:1". surface: "plane", "cylinder", "cone", … (empty = any). normal: Outward normal of a plane, e.g. [0, 0, 1] for faces looking up. at: Face center coordinates to match, e.g. {"Z": 182.5}. diameter: Cylinder diameter in mm. min_area: Skip faces smaller than this (mm²). max_count: Most results to return.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| path | Yes | ||
| normal | No | ||
| surface | No | ||
| diameter | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| min_area | No | ||
| max_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclose the two traits that matter most operationally: the search spans sub-assemblies and results are returned in TOP assembly coordinates in millimetres. It also pins the returned ref format, which is what makes the tool chainable. It does not state that the operation is read-only or address multi-instance selection, which stays implicit.
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, followed by a compact args block where each line carries concrete, non-redundant information (examples and units rather than restating schema titles). Slightly dense but no filler sentences.
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 read-style query tool with a 8-param schema, no annotations, and an output schema already present, the description supplies the missing essentials: coordinate frame, units, ref format, and the origin of the path argument. Remaining gaps are minor (instance selection, ordering/limit interplay) and partly covered by structured fields.
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 only 13%, so the description must compensate, and it largely does: it gives concrete examples for path ('Z AXIS:1/FIXED PLATE:1'), normal ([0, 0, 1] for faces looking up), at ({"Z": 182.5}), plus units for diameter and semantics for min_area and max_count, and enumerates surface values. Only the instance parameter is left undocumented in the text (though the schema covers 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?
Opens with a specific verb and resource ('Find faces of a component') and narrows scope precisely: whole assembly including sub-assemblies, results in TOP assembly coordinates in mm. That scoping clause implicitly separates it from the component-scoped siblings like list_faces and find_face, but it never names them, so the differentiation is inferential rather than 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?
It says where the required path comes from ('Component path from list_occurrences(depth=2)') and what to do with results ('Each result has a ref ... that constrain_faces takes'), which is real routing guidance to two sibling tools. It also clarifies sub-assembly recursion. No explicit when-not-to-use or alternative-selection rule is given, keeping it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_infoA
Snapshot of the active assembly: components with positions, constraint count, mass and volume. One call instead of several queries.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. 'Snapshot' signals a read-only, non-mutating operation and the field list describes what is retrieved, but it is silent on cost, behavior with no active assembly, and whether the snapshot is live or cached.
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 with zero filler, and the payload enumeration is front-loaded so an agent can match it against its information need immediately.
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?
An output schema exists, so return format need not be explained, and the description still summarizes the returned fields. For a read-only single-parameter aggregate tool this is nearly sufficient; only the no-active-assembly edge case is 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 coverage is 100%, so the single optional 'instance' parameter is already fully documented in the schema, including the list_instances pointer. The description adds nothing about parameter behavior, so baseline 3 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+resource (snapshot of the active assembly) and enumerates the payload: components with positions, constraint count, mass and volume. It distinguishes itself implicitly from single-query siblings like list_occurrences or list_constraints, but never names 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?
'One call instead of several queries' implies the tool is the aggregate shortcut when you need the whole assembly picture rather than one specific datum. No explicit when-to-use/when-not, no named alternatives, and no prerequisite stated (e.g. that a document must be active).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bomA
Bill of materials of the active assembly: item, quantity, part number, description, material, stock number, mass, file. For purchasing / ERP — set part numbers and descriptions first with properties().
Args: view: "parts_only" (every part once with its total quantity) or "structured" (sub-assemblies with their parts indented). path: Also write a CSV (UTF-8, ';'-separated) — opens in Excel.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| view | No | parts_only | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the load and does disclose a real side effect — passing path writes a semicolon-separated UTF-8 CSV file to disk. It also implies the operation targets the active assembly, but says nothing about error behavior when no assembly is open or whether generation itself is read-only.
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 resource and returned columns, then a single-sentence usage note, then a compact per-argument block. Every sentence adds information; nothing is repeated from 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?
An output schema exists, so return values need no explanation, and all three parameters are accounted for between description and schema. The main remaining gap is the absence of any note on preconditions (an active assembly must exist) for a tool that writes an external file.
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 only 33%, but the description compensates well: it defines both view modes ('parts_only' = every part once with total quantity vs 'structured' = indented sub-assemblies) and explains that path triggers a CSV write with UTF-8 and ';' separators. Only 'instance' is left to the schema, which already documents 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 resource (bill of materials of the active assembly) and enumerates the exact columns produced (item, quantity, part number, material, mass, file). No sibling tool overlaps, so an agent can identify it immediately.
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 concrete use case ('For purchasing / ERP') and a prerequisite that routes to a sibling: 'set part numbers and descriptions first with properties()'. It does not state when not to use it or what happens if no assembly is active, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_statusA
Follow a call that outlived the wait (a long job, or one stuck behind an Inventor dialog): elapsed time, any open dialog's text, execute_python's progress() line and latest output — and the call's result once it has finished. Safe to call at any time.
Args: wait_seconds: Wait up to this long (at most 45 s) for the running call to finish and return its result at once — instead of calling call_status again and again. Without a name, waits until the first of the running calls finishes.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| wait_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description does useful work by saying the tool is safe to call at any time and by describing what it observes. It also discloses the 45-second wait cap, which is important behavioral context. It does not, however, fully clarify side effects or blocking semantics for every wait scenario.
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 and reasonably efficient: it first explains what the tool reports, then documents the key wait parameter. The `Args` section is useful, but the self-referential 'calling call_status again and again' phrasing and the nonexistent `name` reference add avoidable ambiguity.
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 core monitoring behavior, safety, wait limit, and progress/result reporting, which is enough for an agent to use the tool. Because an output schema exists, it need not describe return values in detail, but the missing targeting semantics for a specific call and the `name` inconsistency leave a notable gap.
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 documents `instance`, and the description adds detailed meaning for `wait_seconds`, including the 45-second maximum and its polling-replacement behavior. However, the description refers to waiting without a `name`, but the schema has no `name` parameter, which creates confusion about how to target a specific call.
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 that this tool follows an already-running call and reports elapsed time, dialog text, progress/output, and final result. It is specific about the resource and the observable outputs, but it does not explicitly distinguish itself from the sibling `status` tool or other call-related 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?
It gives a clear use case: a call that outlived the wait, such as a long job or one blocked behind an Inventor dialog. It also explains that `wait_seconds` can be used instead of polling repeatedly, though it does not explicitly state when not to use this tool or name an alternative sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_callA
Stop the running call — a long execute_python loop, a Content Center scan, a job that turned out wrong. cancelled() in execute_python code turns True at once (poll it in long loops to stop cleanly); code that hasn't stopped by itself after CANCEL_GRACE seconds gets a KeyboardInterrupt in the Inventor thread. That takes effect at the next Python line: a call stuck INSIDE one COM call (a long Inventor operation, or a modal dialog) stops only once that call returns.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly: cancelled() flips immediately, a CANCEL_GRACE timeout triggers KeyboardInterrupt in the Inventor thread, the interrupt lands at the next Python line, and calls stuck inside a COM call or modal dialog only stop after that call returns. This is exactly the behavioral nuance an agent needs to set expectations.
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 in the first clause, and every sentence conveys necessary cancellation semantics. The prose is dense and semicolon-heavy, making it slightly harder to scan than it could be, 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 a behaviorally complex cancellation tool with no annotations, the description covers mechanism, grace period, thread behavior, and COM-call limitations. An output schema exists, so return values need not be explained; nothing critical 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 description coverage is 100%, so the single 'instance' parameter is already documented in the schema. The description adds no syntax or selection guidance beyond what the schema provides, making the baseline 3 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 — 'Stop the running call' — and gives concrete examples (long execute_python loop, Content Center scan, wrong job). This clearly distinguishes it from siblings like call_status and execute_python without needing to open 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?
The use cases make it obvious when to invoke cancellation: long-running loops, scans, or erroneous jobs. It even advises polling cancelled() in long loops. However, it never names call_status as the alternative for checking progress, nor states when not to cancel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chamferC
Add chamfer (angled edge) to edges of the solid body. Distance in mm.
Args: distance: Chamfer distance in mm. edge_indices: Comma-separated edge indices (e.g. "1,2,3").
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| edge_indices | No | 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden yet says nothing about whether the operation modifies the model irreversibly, whether it fails on invalid edge indices, or whether it requires an active document. It does disclose units (mm), which is useful, but leaves the mutation behavior opaque.
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 single-sentence purpose followed by a brief Args block; nothing is wasted. There is minor redundancy in repeating 'Distance in mm' in the args line.
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?
An output schema exists, so return values need no explanation. However, for an unannotated mutation tool, missing prerequisites (active part document, valid edge discovery) and failure behavior leave the definition only minimally sufficient.
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 only 33%, and the description compensates for the two undocumented params by defining `distance` as mm and giving the comma-separated format with an example for `edge_indices`. The third param, `instance`, is only covered by the schema, so semantics are adequate but not complete.
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 chamfer (angled edge) to edges of the solid body' — and the parenthetical definition disambiguates it from a generic edge operation. It does not explicitly contrast with the sibling `fillet` (rounded vs angled), so an agent must infer that distinction.
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 never states when to use this versus `fillet` or other edge-modification tools, nor that edge indices must first be obtained via `list_edges`/`find_edge`. It also omits the prerequisite that an active solid part must exist, leaving only implicit 'use this to chamfer' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_interferenceA
Check overlap between occurrences of the active assembly. Touching faces are not reported. Intended overlaps (gasket compression) show up too — read the volume and bbox.
Args: set_a: Comma-separated occurrence names, e.g. "PANO_KAPAK:1". Use "Asm:1/2" for one part inside a sub-assembly (e.g. a vendor hinge's body). set_b: Names to test against; empty = everything else.
| Name | Required | Description | Default |
|---|---|---|---|
| set_a | Yes | ||
| set_b | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, and it does disclose important behavioral traits: interferences from touching faces are suppressed (false negatives) and intended overlaps like gasket compression appear (false positives), plus how to disambiguate via volume/bbox. It stops short of stating whether the call is read-only or has any side effects or cost on large assemblies.
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 purpose and the key caveats, then a tight Args block with examples. Slightly verbose in prose but every sentence (touching faces, gasket compression) carries information an agent would otherwise get wrong.
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 geometry query with an output schema and no annotations, the description covers purpose, caveats, set semantics, and even result interpretation. Missing only an explicit note that it is a non-mutating query and whether an active/connected assembly is required.
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 only 33% (only 'instance' is documented in-schema), but the description fully compensates for the other two: it gives concrete syntax and an example for set_a, explains the sub-assembly path form ('Asm:1/2'), and defines set_b's empty-value semantics. The remaining parameter is already covered by the 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 ('Check overlap between occurrences of the active assembly') and is clearly distinguishable from siblings like measure_distance or assembly_faces. It even scopes the semantics (touching faces excluded, intended overlaps reported), so an agent knows exactly what the result means 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?
Explains the empty-set_b case ('empty = everything else') and how to interpret output ('read the volume and bbox'), which implies usage, but gives no explicit when-to-use-this-vs-alternative guidance or prerequisites (e.g., an active assembly/document must be loaded).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sketchA
Why won't it extrude? Checks a sketch for what a closed profile needs: open ends, gaps (two ends a hair apart, not joined), points where 3+ curves meet (overlaps, stray lines), lines drawn twice — with sketch coordinates in mm — and whether Inventor builds a profile, with how many closed loops. extrude / revolve report the same when they fail.
Args: sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 does disclose return content (sketch coordinates in mm, profile success, closed-loop count), which is useful, but it never states that the operation is read-only or that it leaves the sketch untouched, nor any permission/precondition behavior. Given an output schema already exists, the description adds diagnostic context but leaves the safety/mutation profile unstated.
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 motivating question followed by a compact enumeration of checks, then the arg note. Efficient overall; the nested parentheticals ('overlaps, stray lines') add slight density but each clause carries informational 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 two-param read/diagnostic tool with an output schema, the description covers what it checks, the coordinate unit, and the key result (whether a profile builds and loop count). Instance-selection guidance lives in the schema, so the definition is nearly complete; only explicit read-only/state semantics 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 50%: 'instance' is documented in the schema, while 'sketch_index' is not. The description compensates with 'Sketch number (0 = latest sketch)', giving real meaning beyond the schema's bare default. This is solid coverage of the undocumented 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?
Opens with a concrete use case ('Why won't it extrude?') and then enumerates exactly what it inspects: open ends, near-miss gaps, 3+ curve junctions, duplicate lines, plus profile build status and closed-loop count. This is a specific verb+resource that an agent can clearly distinguish from siblings like extrude or revolve.
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?
'Why won't it extrude?' plus 'extrude / revolve report the same when they fail' implies when to call it (diagnosing failed extrusion/revolve). However, it doesn't give an explicit routing rule such as 'call this before/after extrude fails' or state exclusions, so guidance is strong but not fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
circular_patternA
Create a circular (rotational) pattern of a feature around a work axis. Ideal for bolt holes around a flange — one hole + circular_pattern instead of 8 holes.
Args: feature_index: Index of the feature to pattern (from list_features()). count: Number of instances (total including the original). angle: Total span angle in degrees (360 = full circle). axis: Rotation axis — X, Y, or Z (default Z for flanges).
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Z | |
| angle | No | ||
| count | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| feature_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses useful mechanics such as count including the original and angle representing total span, but it does not state that this mutates the document, whether it needs an active document/transaction, or how failures are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and ideal use case are front-loaded, followed by a compact Args list. Every line adds practical 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?
The description is complete enough for a CAD patterning operation: it explains the main parameters, the default axis, and the intended workflow. The main remaining gap is operational context around document state, transaction behavior, and mutation side effects, but the output schema covers return values.
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 only 20%, but the description compensates well: feature_index points to list_features(), count is explicitly total including the original, angle is total span with 360 meaning full circle, and axis defaults to Z for flanges. The only undocumented parameter is instance, which the schema itself explains.
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: create a circular pattern of a feature around an axis. It clarifies the operation enough to distinguish it from generic feature creation, but it does not explicitly differentiate it from nearby siblings like sketch_pattern or hole_linear.
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 flange/bolt-hole example gives a clear, concrete use case and implicitly tells the agent when this tool is preferable to repeating a feature manually. It does not name alternatives or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_unsavedA
Close documents that were never saved (Part12, Assembly3… left by failed attempts) without saving. Ones another open document references are kept.
Args: include_active: Close the active document too if it was never saved.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| include_active | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully discloses that documents are closed without saving and that referenced documents are preserved, but it does not mention whether unsaved documents are irreversibly lost, whether confirmation is required, or what happens if closing fails.
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-loads the core behavior before the Args section. The examples of unsaved documents and the include_active explanation are useful, with little 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 two-parameter tool with an output schema and no annotations, the description covers the main behavior, the preservation rule, and the non-schema-documented include_active parameter. The instance parameter is handled by the schema, and return values are covered by the output schema.
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 50%: the instance parameter is documented in the schema, while include_active has no schema description. The description compensates for that gap by explaining include_active, but it does not add anything about the instance parameter beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: close documents that were never saved, without saving. It also clarifies an important exception, namely that documents referenced by another open document are kept, which makes the tool's scope more precise than the name alone.
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 a cleanup use case through the phrase 'left by failed attempts' and explains when to set include_active. However, it does not explicitly compare this tool with alternatives such as save_document, list_documents, or activate_document, nor does it state 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.
connectA
Connect to Autodesk Inventor. Starts Inventor if none is running.
Working on a project? Pass project=<full path of its .ipj>: the server uses the Inventor that already has it — also one a previous server started (after a restart of Claude Desktop) — or the running one if it is free to switch, or else starts a separate Inventor for it — so two agents on two projects each get their own. The answer names the instance; when several Inventors are connected, pass instance= to every later call.
Args: visible: Show Inventor window (default True). project: Full path of an .ipj to work in. new_instance: Always start a separate Inventor. pid: Connect to this kept Inventor (list_instances shows them) — e.g. two in one project.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | ||
| project | No | ||
| visible | No | ||
| instance | No | Name for this Inventor — pass the same name to later calls. Default: 'default', or the project's name when the server starts one for it. | |
| new_instance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavior: it starts Inventor if none is running, may reuse an existing or previously started instance, may start a separate one for project isolation, and returns an instance name that must be reused later. This is unusually rich context for a connection-management 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 first sentence is front-loaded and the Args section is structured. The project/instance explanation is valuable but somewhat dense; it could be tightened slightly, but it earns most of its space.
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 an output schema exists, the description need not explain return values. It covers lifecycle behavior, project isolation, instance naming, and the role of each parameter well enough for an agent 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 description coverage is only 20%, so the description must compensate. It documents visible, project (.ipj full path), new_instance, and pid (kept Inventor shown by list_instances), and the schema supplies the instance name semantics. This adds substantial meaning beyond raw parameter 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?
The description states a specific verb and resource: 'Connect to Autodesk Inventor', and clarifies the startup behavior. It does not explicitly compare itself to siblings like list_instances or status, but the purpose is clear from the name and opening.
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 context for when to pass a project path, when the server reuses versus starts an Inventor instance, and when to pass an instance name later. It lacks explicit 'do not use if already connected' guidance, but the operational context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
constrainA
Constrain two components by their ORIGIN geometry — the parametric way to assemble. Origin constraints survive part edits; face picks break when topology renumbers.
Args: occurrence1: Index of the first component (see list_occurrences). geometry1: "XY", "XZ", "YZ", "X", "Y", "Z" or "ORIGIN". occurrence2: Index of the second component. geometry2: Same options as geometry1. kind: "mate" (planes face each other / axes collinear), "flush" (planes point the same way) or "angle". offset: Offset in mm for mate/flush. angle: Angle in degrees for kind="angle".
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | mate | |
| angle | No | ||
| offset | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| geometry1 | Yes | ||
| geometry2 | Yes | ||
| occurrence1 | Yes | ||
| occurrence2 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full behavioral disclosure. It mentions that origin constraints survive part edits (a durability trait) but omits key mutation details: permissions required, whether the operation is reversible, what happens on constraint conflict, or whether the assembly is modified in place. This is insufficient for a mutation 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 description is front-loaded with the main purpose and then lists arguments in a clear, structured format. The first sentence efficiently conveys the core value proposition, and the bullet list is easy to scan. No unnecessary fluff, though the first sentence is 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 the complexity (8 parameters, assembly operation) and the presence of an output schema, the description covers the essential information for calling the tool: purpose, parameter meanings, and allowed values. It lacks some behavioral details like failure modes or prerequisites, but these are partly mitigated by the output schema and inferred 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 only 13% (only 'instance' has a description). The description compensates by explaining most parameters: occurrence indices with a pointer to list_occurrences, allowed values for geometry1/geometry2, semantics of kind (mate/flush/angle), and units for offset and angle. Only 'instance' (covered in schema) lacks additional 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?
The description states a specific verb (constrain) and resource (two components by ORIGIN geometry), and explicitly differentiates from face-based constraints by explaining why origin constraints are more robust. An agent can immediately tell this is for origin geometry, not face picks.
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 context for when to use this tool (origin constraints survive edits) but does not explicitly name alternatives or when-not-to-use conditions. The contrast with face picks is implied but not framed as an explicit alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
constrain_facesA
Constrain two components by faces (refs from assembly_faces) or origin geometry ("Sub:1/Part:1#XY", "#X", "#ORIGIN") — anywhere in the assembly, sub-assemblies too. The constraint goes into the active (top) assembly.
Says which OTHER components the constraint moved — a constraint can drag parts through others you didn't mean to touch.
Args: a, b: Refs. a is the one meant to move. kind: "mate" (faces against each other / axes in line), "flush" (faces the same way, side by side) or "angle". offset: mm for mate / flush. Its sign is easy to get wrong — give a_at too. angle: Degrees for kind="angle". a_at: Where a's face must end up, e.g. {"Z": 182.5}. If it lands elsewhere, the offset is tried with the other sign.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| a_at | No | ||
| kind | No | mate | |
| angle | No | ||
| offset | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the burden, and it does disclose a real surprise: the call reports which OTHER components moved, since a constraint can drag unintended parts. It also discloses target-document behavior (constraint goes into the active top assembly, sub-assembly refs legal) and the offset-sign retry heuristic. It stops short of saying whether over-constrained or failed solves raise errors, which matters 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?
Front-loaded with the operation and scope, then a side-effect note, then a tidy Args block — nothing is buried. The sentence fragment 'Says which OTHER components the constraint moved' is slightly clipped and the sign caveat is repeated in both the offset arg and a_at, costing a little tightness.
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, the description covers the parts that matter: what is being constrained, reference syntax, mode semantics, offset/angle units, sign-failure recovery, output side effects, and which document is modified. An output schema exists, so not spelling out the return payload is not a gap, and the only omission is the optional 'instance' selection 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 only 14%, so the description must compensate and largely does: it defines a vs b roles, enumerates kind's three values with meaning for each, and scopes offset to mm for mate/flush and angle to degrees for kind='angle'. It leaves the 'instance' parameter undiscussed and does not constrain the keys allowed inside a_at beyond the single 'Z' example.
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 ('constrain two components by faces'), names where the refs come from (assembly_faces), and gives literal ref formats so it is unmistakably distinct from generic constrain and constrain_insert. It also pins the scope: the constraint lands in the active top assembly.
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 invocation conditions: which ref forms are accepted, that a is the one meant to move, when to supply a_at ('its sign is easy to get wrong — give a_at too'), and that a_at mismatch triggers a sign retry. It never explicitly says when to prefer constrain_insert or plain constrain over this tool, so it falls short of full alternative-routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
constrain_insertA
Insert constraint between two circular edges — a bolt into a hole in one call (aligns the axes AND seats the faces).
Args: occurrence1: Index of the first component. edge1: Circular edge index on that component (see list_component_edges). occurrence2: Index of the second component. edge2: Circular edge index on that component. offset: Distance between the two circle planes in mm. axes_opposed: True = the components face each other (normal bolt/hole case).
| Name | Required | Description | Default |
|---|---|---|---|
| edge1 | Yes | ||
| edge2 | Yes | ||
| offset | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| occurrence1 | Yes | ||
| occurrence2 | Yes | ||
| axes_opposed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses the compound effect (aligns axes AND seats faces) and the offset units, but says nothing about whether an existing constraint is replaced, what errors occur on invalid edges, or whether the operation is transactional.
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 behavior is stated in the first sentence before the arg list, and every subsequent line maps to a distinct parameter 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?
An output schema exists so return values needn't be explained, and the parameter documentation is thorough for a 7-param tool. The remaining gap is the lack of any failure-mode or precondition disclosure for a mutation call with no annotations.
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 only 14% (just 'instance'), and the description compensates well: it explains occurrence/edge pairs, cross-references list_component_edges for edge indices, gives offset units (mm) and the semantics of axes_opposed for the normal bolt case. Only 'instance' semantics and the occurrence index basis are left to the 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 (insert constraint between two circular edges) plus the concrete physical case it models (bolt into hole). The 'circular edges' scope implicitly separates it from constrain_faces and generic constrain, though no sibling is named explicitly.
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 usage context ('a bolt into a hole in one call') and points the agent at list_component_edges to obtain valid edge indices. No explicit when-not-use guidance or named alternative, which keeps 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.
content_centerA
Browse the Content Center and make member parts to place (place_component / place_many).
Step by step — each call is quick (the whole tree takes minutes to walk, so give a path): content_center() → top categories content_center("Structural Shapes") → sub-categories content_center("Structural Shapes/Channels") → families content_center("Structural Shapes/Channels", "DIN 1026-1") → sizes content_center("Structural Shapes/Channels", "DIN 1026-1", "U 100", length=1500) → part file path
Args: category: Category path, "/"-separated, as listed. family: Family name, as listed. size: Size designation as listed (spaces and case ignored). length: mm — a custom-length member (structural shapes). 0 = standard member. file_name: Where a custom member is saved (default: project workspace / Content Center Custom/ L.ipt).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| family | No | ||
| length | No | ||
| category | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| file_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 so well: it discloses that calls are cheap but the full tree is slow, that length>0 creates a custom member that is saved to disk with a default path, and that length=0 yields a standard member. It does not describe error behavior for invalid paths or whether an existing file is overwritten.
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 sentence, then a compact example ladder that conveys the recursion better than prose, then terse arg notes. Every line adds information; 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 recursive browse-and-materialize tool with an output schema present, the description covers the traversal model, the file side effect, and downstream consumption. The only omission is the 'instance' parameter, which the schema already documents.
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 only 17%, so the description must compensate, and it does for five of six parameters: category path syntax ('/'-separated), family, size (spaces and case ignored), length in mm with 0 = standard member, and file_name with its default template. Only 'instance' is left to the schema's own 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 (browse the Content Center) and the concrete output (a part file path usable by place_component / place_many). This distinguishes it from the many geometry/assembly siblings without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The step-by-step ladder shows exactly how to drill from top categories down to a sized member, and notes the whole tree takes minutes so a path should be supplied. It clearly hands off to place_component/place_many downstream, though it doesn't state when to prefer other sources (e.g. frame_members, import_step) instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
corner_roundA
Round sharp sheet metal corners (Corner Round — carried into the flat pattern). Use on exposed corners people handle, e.g. mounting plate tabs.
Args: edge_indices: Comma-separated indices of the short edges through the thickness at the corners. radius: Corner radius in mm.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| edge_indices | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose one meaningful trait beyond the name — the round propagates into the flat pattern — but says nothing about prerequisites (active sheet metal part, rule resolution), whether the radius is clamped by thickness, or whether the feature is editable/deletable afterwards.
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 sentence followed by a compact Args block; nothing is padded. The parenthetical '(Corner Round — carried into the flat pattern)' is slightly awkward but earns its place by flagging flat-pattern propagation.
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?
An output schema exists, so return values need not be explained, but for a geometry-mutating sheet metal tool with no annotations the description omits document/document-state prerequisites and the relationship to the edge-listing tool used to supply indices. Adequate to invoke, thin on 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 coverage is only 33%, and the description compensates well: it defines edge_indices as comma-separated indices of the short edges through the thickness at the corners, and gives units (mm) for radius. It stops short of five because it does not say how to obtain those indices (list_edges) or what happens when edge_indices is invalid.
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 domain object ('Round sharp sheet metal corners') and adds the important scope note that the round is carried into the flat pattern. It is clear what the tool produces, but it never contrasts itself with the nearby fillet/chamfer siblings, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use on exposed corners people handle, e.g. mounting plate tabs' gives a concrete selection criterion rather than leaving usage implied. There is no explicit when-not guidance and no named alternative (e.g. use fillet/chamfer for non-sheet-metal edges), which keeps 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.
create_assemblyA
Create a new empty assembly document (.iam).
Args: name: Display name for the assembly (optional). template: "metric" (mm, default), "english" (inches), or full path to an .iam file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| template | No | metric |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions creation and template selection, but does not disclose whether a connected Inventor instance is required, whether the new document is activated, how it is saved, or what happens if the name conflicts.
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 definition is short and front-loaded, with the core action in the first sentence and parameter details immediately after. There is very little 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 creation tool with an output schema, the description is mostly complete. It explains the document type and template options, but it leaves connection/instance context and document lifecycle behavior to the schema.
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 describes the instance parameter, while the description adds useful meaning for the other two: name is optional and template can be metric, english, or a full .iam path. This compensates well for the low schema description coverage, though instance behavior is left to the 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: create a new empty assembly document (.iam). It is easy to distinguish from create_part and other assembly tools because it explicitly says assembly and empty.
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 purpose, but the description does not explicitly say when to use this instead of create_part, place_component, or other document-creation tools. Template guidance is present, but no alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_partA
Create a new empty part document — with its material and part number right away, so no part is left "Generic" for the BOM and the mass.
Args: name: Display name for the part (optional). template: Template type — "metric" (mm, default), "english" (inches), or full path to .ipt file. material: Material from the library (list_materials), e.g. "Steel, Mild". part_number, description: iProperties for the BOM.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| material | No | ||
| template | No | metric | |
| description | No | ||
| part_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 conveys that the result is an 'empty' document and that material/part number should be set at creation, but says nothing about where the document is written, whether it is saved, or what happens on failure.
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 one-sentence purpose followed by a compact Args block; the rationale about BOM/mass earns its place by explaining why to pass metadata. Minor redundancy in listing both part_number and description on one line.
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?
An output schema exists so return values need no explanation, and most parameters are covered. However, for a mutating creation tool with zero annotations, the description omits connection prerequisites and document persistence 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 only 17% (just 'instance'), and the description compensates well: it explains template values ('metric' mm default, 'english' inches, or a full .ipt path), gives a material example ('Steel, Mild'), and explains that part_number/description are BOM iProperties. Only name is left thin ('Display name').
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 part document', and extends it to material and part-number iProperties. It is clearly not a sketch/feature/assembly creation tool, though it never explicitly contrasts with create_assembly or create_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?
Implies when to use it via the rationale about avoiding 'Generic' BOM entries, and points to list_materials for material sourcing. It gives no explicit when-not guidance or prerequisites (e.g. must a document/connection be active first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sketchA
Create a new sketch on a work plane, a body face, or an offset work plane.
Args: plane: Work plane — XY, XZ, or YZ. Ignored if face_index > 0. face_index: Index of body face to sketch on (1-based). 0 = use work plane. Use list_faces() to locate. offset: mm — sketch on a hidden work plane parallel to 'plane' at this distance (positive = along plane normal: XY→+Z, XZ→+Y, YZ→+X). For ribs/bosses at a height.
| Name | Required | Description | Default |
|---|---|---|---|
| plane | No | XY | |
| offset | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| face_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 key geometry behavior: how face_index overrides plane, the 1-based face indexing, and offset direction conventions per plane. However, it does not state document-state requirements, side effects such as whether the sketch becomes active, or 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 primary action is front-loaded in the first sentence, followed by an Args section that is dense and free of repetition. Every clause conveys operational meaning, including the per-plane offset direction shorthand.
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?
An output schema exists, so return values need not be described. The description covers the non-obvious geometry semantics of all three primary parameters and delegates instance selection to the schema. It stops short of stating document prerequisites or whether the new sketch becomes the active sketch, which would matter for a mutation tool with no annotations.
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 only 25%, but the description compensates strongly: it supplies plane enum values, explains the 0 sentinel for face_index, defines offset units and sign convention per plane, and clarifies the plane/face precedence. The remaining instance parameter is already documented in the 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 ('Create a new sketch') and enumerates the three supported placement targets: work plane, body face, or offset work plane. This distinguishes it clearly from sibling drawing tools such as draw_rectangle and draw_circle.
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?
Explains the selection logic between plane and face_index ('Ignored if face_index > 0') and points to list_faces() for locating a face. It also gives a concrete use case for offset ('For ribs/bosses at a height'), though it does not explicitly state prerequisites such as needing an active part document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_on_faceA
Cut holes through the sheet, placed in WORLD coordinates (mm) on a face. Avoids the face-sketch axis confusion — no need to know the sketch's origin. Verifies material was removed (a cut on a work plane silently removes nothing).
Args: face_index: Face of the sheet to sketch on (use find_face / list_faces). circles: JSON list of [x, y, z, diameter], e.g. "[[180, 267, 0, 4.9]]". rectangles: JSON list of 4-corner lists, e.g. "[[[-150,-300,40],[150,-300,40],[150,-300,160],[-150,-300,160]]]".
| Name | Required | Description | Default |
|---|---|---|---|
| circles | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| face_index | Yes | ||
| rectangles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 coordinate system, the silent-no-op failure mode of work-plane cuts, and that the tool post-verifies that material was actually removed. It does not mention permissions, instance requirements, or whether the cut is undoable, which keeps 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?
The key differentiator (world coordinates) and the key hazard (silent no-op) are front-loaded in the first two sentences, and the Args block is tight. The example JSON strings are long, but they earn their space for a string-typed parameter.
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 mutation tool with an output schema present, the description covers coordinate semantics, face selection, both geometry payload formats, and the verification behavior. The main residual gap is that nothing explains what the tool returns or how a failed verification surfaces.
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 25%, so the description must compensate, and it largely does for circles and rectangles by giving explicit JSON shapes and a worked example for each. However, it never restates that circles/rectangles are JSON-encoded strings (a non-obvious encoding visible only in the schema's type), and instance is documented only in the schema, so coverage is not fully closed.
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 holes through the sheet ... on a face') and pins down the defining characteristic that separates it from sibling cut tools: placement in WORLD coordinates rather than sketch coordinates. An agent can distinguish it from hole, sheet_metal_cut, or extrude-based cuts from the description alone.
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 tells the agent how to obtain a face_index ('use find_face / list_faces') and implicitly warns off work-plane cuts, which is useful routing. But it never names the alternative cut tools (hole, sheet_metal_cut) or states when this tool should be chosen over them, leaving the sibling selection ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_constraintB
Delete an assembly constraint by index (see list_constraints).
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and does not meet it. It never says whether the deletion is permanent, undoable, or transactional, what happens with an invalid or out-of-range index, or whether the model must be in a specific state. Only the index provenance hint adds 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?
A single front-loaded sentence with no filler and the key scoping information first. Its brevity is efficient rather than bloated, though it leaves the definition under-specified for a destructive operation.
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?
An output schema exists so return values need no explanation, but for a 2-parameter destructive operation with zero annotations the description should cover irreversibility, permission/connection requirements, and error behavior. None of that is present, leaving the agent to guess at the consequences of 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?
Schema coverage is 50%: the 'instance' parameter is documented in the schema but 'index' has no description there. The description partially compensates by tying index to list_constraints and scoping it to assembly constraints, though it does not say whether the index is 0- or 1-based or relative to the listing order.
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 assembly constraint") plus the addressing scheme ("by index"), which separates it from delete_feature and delete_occurrence by resource type. It stops short of explicitly naming the sibling it is not, but the resource noun 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?
The parenthetical "(see list_constraints)" gives implied guidance on how to obtain a valid index, which is a real routing hint. There is no statement of when to prefer this over suppress_feature or delete_occurrence, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_featureA
Delete one or more features by index. Use list_features() to find indices.
Args: indices: Comma-separated feature indices to delete (e.g. "3,4,5"). Deletes in reverse order automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| indices | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully discloses that multiple indices are deleted in reverse order automatically, but it does not state whether deletion is irreversible, whether it requires confirmation, or what happens on invalid indices.
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-loaded: the core action appears first, followed by the discovery hint and then the parameter format. Every sentence adds useful invocation 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?
The description gives enough to call the tool correctly, including the required index format and reverse-order deletion behavior. Because an output schema exists, return-value details are not required, though the lack of safety/irreversibility context is a minor gap for a destructive 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 schema only gives a bare string type for the required indices parameter, so the description meaningfully compensates by explaining the comma-separated format and giving an example. The instance parameter is documented in the schema itself, so the description does not need to repeat 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?
The description states a specific verb and resource: deleting one or more features by index. It also distinguishes the target from related operations by specifying feature indices and pointing to list_features() for discovery.
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 usage context by telling the agent to use list_features() to find valid indices. It does not, however, explain when to delete versus suppress a feature or mention prerequisites/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_occurrenceB
Remove a component from the assembly (see list_occurrences for the index).
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 for a destructive mutation. It never states whether removal is permanent, whether dependent constraints/features are affected, or whether it must run inside a transaction, all of which matter for a delete operation.
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?
One tight sentence with the action front-loaded and the prerequisite tucked into a parenthetical. Nothing is wasted, though it is terse enough to leave behavioral gaps unaddressed.
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?
An output schema exists, so return values need not be explained, but for an unannotated destructive tool the description gives no consequences, reversibility, or error conditions. The only real completeness win is the index lookup hint.
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?
Coverage is 50%: the 'instance' parameter is self-documented in the schema, while the required 'index' has no schema description at all. The description partially compensates by pointing to list_occurrences as the source of the index, but adds no format or origin detail beyond that hint.
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 ('Remove') and resource ('a component from the assembly'), which distinguishes it from siblings like delete_feature or delete_constraint. Minor friction: the name says 'occurrence' while the description says 'component', though the parenthetical tie to list_occurrences bridges that.
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 'see list_occurrences for the index' gives a concrete prerequisite for obtaining the required argument, which is genuine usage guidance. However, it says nothing about when not to use it (e.g. versus delete_feature/delete_constraint) or what prerequisites like an active document are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_arcA
Draw an open arc from (x1, y1) to (x2, y2) in mm — e.g. to close a profile drawn with draw_line. Either through a point on it (xm, ym), or around its center (cx, cy) running counter-clockwise in sketch coordinates. For closed shapes prefer draw_closed_profile.
Args: x1, y1, x2, y2: Start and end. xm, ym: A point on the arc between them. cx, cy: The center (start and end must be equally far from it). sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| cx | No | ||
| cy | No | ||
| x1 | Yes | ||
| x2 | Yes | ||
| xm | No | ||
| y1 | Yes | ||
| y2 | Yes | ||
| ym | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it discloses units (mm), arc direction (counter-clockwise in sketch coordinates), two mutually exclusive construction modes (through a point or around a center), and the geometric constraint that start/end must be equidistant from the center. It omits prerequisites such as needing an active sketch/document and how failures surface.
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 a usage example, then a compact Args block that adds meaning rather than restating names. No filler sentences.
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 geometry tool with no annotations and an output schema, the description covers the drawing semantics, modes, units, and direction well. It could add the context that a sketch must be active and note that xm/ym and cx/cy are optional alternatives, but nothing essential to invoking it correctly 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 only 10%, so the description must compensate, and it does: x1/y1/x2/y2 are start and end, xm/ym is a point on the arc between them, cx/cy is the center with the equidistance constraint, and sketch_index 0 means the latest sketch. Only 'instance' is not explained here, but the schema itself documents 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 and resource ('Draw an open arc from (x1, y1) to (x2, y2) in mm') plus a concrete use case (closing a profile drawn with draw_line). It also explicitly distinguishes itself from the sibling draw_closed_profile, so the agent can separate the two without inspecting 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?
Gives explicit routing: use this for open arcs, e.g. to close a draw_line profile, and 'For closed shapes prefer draw_closed_profile.' That names the alternative and the condition selecting it, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_circleA
Draw a circle in a sketch with an automatic diameter dimension. Dimensions in mm.
Args: x: Center X coordinate in mm. y: Center Y coordinate in mm. diameter: Diameter in mm. A diameter constraint is added automatically. sketch_index: Sketch number (0 = latest sketch). construction: If True, draws a reference (construction) circle — not part of profile. Useful for showing bolt PCD (pitch circle diameter) without cutting.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| diameter | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| construction | No | ||
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden; it does disclose two non-obvious behaviors — that a diameter constraint is added automatically and that construction circles are excluded from the profile. It does not state preconditions (must a sketch already exist? does it need an active document/instance?) or what happens with an invalid sketch_index.
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 purpose is front-loaded in one sentence, followed by a compact Args block. The extra clause on construction mode is short and earns its place by preventing a common misuse.
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 mutation tool with no annotations, the description covers units, coordinate meaning, sketch targeting, construction mode, and the automatic constraint side effect, and an output schema exists to cover returns. The remaining gap is execution prerequisites (sketch/document/instance state), which an agent would still have to discover.
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 only 17% (only 'instance' is documented), so the description must compensate — and it does for five of six params: mm units for x/y/diameter, 'sketch_index 0 = latest sketch', and the construction semantics with a concrete PCD example. Only 'instance' is left to the schema, which already covers 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 ('draw') and resource ('circle in a sketch') plus a defining behavioral trait: an automatic diameter dimension is added. An agent can distinguish it from draw_rectangle, draw_arc, and draw_polygon without inspecting 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 construction flag carries an explicit use case ('useful for showing bolt PCD without cutting'), which is genuine when-to-use guidance for that option. However there is no guidance on when to prefer this over draw_closed_profile or draw_slot, and no stated prerequisites such as needing an active sketch or connected instance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_closed_profileA
Draw a closed profile of lines AND arcs. All coordinates in mm. Segments share their end points, so Inventor sees one closed loop for extrude/revolve. Never approximate a curve with many short lines — round corners and arcs are built in:
[x, y] a corner [x, y, r] a corner rounded with radius r (tangent arc, lines trimmed) {"through": [x, y]} the segment from the corner before to the corner after is an arc through this point (after the last corner: the closing one)
Examples: plate with R10 corners "[[0,0,10],[200,0,10],[200,100,10],[0,100,10]]"; a D shape "[[0,-50],[0,50],{"through":[50,0]}]". Arcs go through three points, so the sketch's axis directions can't flip them.
Args: points: JSON array (or list) of the entries above. sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does well: it discloses that endpoints are shared to form one closed loop, that rounded corners come from tangent arcs with lines trimmed, and that three-point arcs are immune to sketch axis-direction flips. It does not say what happens on invalid/self-intersecting input or whether an existing sketch is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, then a compact format table, then two concrete examples. Every line — including the examples — disambiguates a real encoding decision the agent must make; 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 three-parameter geometry tool with an output schema, the description covers units, the full points encoding, sketch targeting, and the closure guarantee. An agent has everything needed to construct a valid call without consulting other tools.
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 only 33%, and the description compensates thoroughly: it fully specifies the points encoding ([x,y], [x,y,r], {"through":[x,y]}) with worked examples and explains sketch_index semantics ('0 = latest sketch') and mm units. Only 'instance' is left to the schema, which already documents 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 and resource ('Draw a closed profile of lines AND arcs') and immediately differentiates from the many sibling drawing primitives (draw_line, draw_arc, draw_polygon, draw_rectangle) by emphasizing 'closed' and 'segments share their end points'. An agent can tell at a glance this is the right tool for a sealed loop destined for extrude/revolve.
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 ('Inventor sees one closed loop for extrude/revolve') and an explicit prohibition ('Never approximate a curve with many short lines'). It lacks an explicit pointer to when to prefer draw_line/draw_arc or draw_polygon instead, so a small inference remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_lineB
Draw a line in a sketch. Coordinates in mm.
Args: x1: Start X in mm. y1: Start Y in mm. x2: End X in mm. y2: End Y in mm. sketch_index: Sketch number (0 = latest sketch). construction: If True, line becomes a construction line (used as revolve axis, not part of profile).
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | No | ||
| x2 | No | ||
| y1 | No | ||
| y2 | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| construction | No | ||
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does add real domain behavior: coordinates are in mm, sketch_index 0 means the latest sketch, and a construction line becomes a revolve axis and is excluded from the profile. It omits whether the call mutates the open document, requires a transaction, or what happens when no sketch exists.
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 one-sentence purpose followed by a compact per-argument list; every line carries information (units, endpoints, index convention, construction semantics) 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?
An output schema exists so return values need not be described, and parameters are mostly covered. However, a mutation tool with zero annotations and 7 parameters should state prerequisites (an active document/part and which sketch is being edited) and whether the geometry is committed immediately, which it does not.
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 only 14% (just the instance param), so the description must compensate and largely does: x1/y1/x2/y2 are labeled start/end in mm, sketch_index is explained as '0 = latest sketch', and construction is explained semantically, not just as a boolean. The instance parameter is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Draw a line in a sketch') plus the unit convention (mm), which makes it clearly distinct from draw_rectangle, draw_circle, draw_arc and draw_polygon. It stops short of explicitly disambiguating against the other sketch-drawing siblings or telling the agent which geometry primitive fits which situation.
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 guidance on when to use this versus draw_closed_profile or the other drawing primitives, and no stated precondition such as an active document or an existing sketch. The only contextual hint is the inline note that sketch_index 0 targets the latest sketch, which is parameter trivia rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_polygonA
Draw a regular polygon in a sketch. Dimensions in mm.
Args: x: Center X in mm. y: Center Y in mm. radius: Circumscribed radius in mm. sides: Number of sides (e.g. 6 for hexagon). sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| sides | No | ||
| radius | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 units and sketch targeting, but does not explain whether the sketch must already exist, whether this mutates or creates geometry, what happens on invalid input, or other operational constraints.
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 and compact: one sentence states the action and units, followed by a clean Args list. There is no unnecessary explanation.
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?
Because there are no annotations and the input schema has low description coverage, the description should do more to explain preconditions and mutation behavior. It adequately covers geometry parameters, but omits sketch-state prerequisites and error/return behavior despite being a drawing 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 only 17%, but the description compensates well by documenting x/y as center coordinates, radius as circumscribed radius, sides with a hexagon example, and sketch_index where 0 means latest sketch. The one omitted parameter, instance, is already documented in the 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 — draw a regular polygon in a sketch — and is clearly distinguishable from sibling shape tools such as draw_rectangle, draw_circle, and draw_arc. It also specifies that dimensions are in mm.
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 the tool operates on a sketch via sketch_index, but gives no explicit guidance on when to use it versus draw_closed_profile, draw_line, or other sketch tools, nor any prerequisites such as an existing active sketch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_rectangleA
Draw a centered rectangle in a sketch. Dimensions in mm.
Args: x: Center X coordinate in mm. y: Center Y coordinate in mm. width: Width in mm. height: Height in mm. sketch_index: Sketch number (0 = latest sketch). corner_radius: Round all four corners with real arcs (half the short side = a slot).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| width | No | ||
| height | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No | ||
| corner_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 real geometry behavior beyond the schema: centered placement, millimeter units, and that corner_radius uses real arcs rather than approximations. It says nothing about mutation side effects, undo/transaction semantics, permissions, or failure modes such as a missing sketch — significant gaps for a document-modifying call.
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 one-line front-loaded purpose followed by an Args block is an efficient structure with no filler. Repetition of parameter names in the Args block is justified because the schema gives almost no descriptions to rival it.
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 7 parameters, no annotations, and an output schema the description need not explain, the geometry story is covered well. What is missing is the operational context — whether an active document/sketch is required, what instance selection implies, and what happens on failure — leaving an agent to infer preconditions.
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 only 14%, so the description must compensate, and it largely does: it gives meaning to x/y as center coordinates, assigns mm units to width/height/corner_radius, and explains sketch_index (0 = latest) and corner_radius semantics including the slot case. The seventh parameter, instance, is left to the schema and defaults are not mentioned, but overall meaning is substantially enriched.
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 centered rectangle in a sketch' — with the centering convention and unit system (mm) made explicit. The rectangular shape plus the 'corner_radius ... = a slot' note separates it cleanly from draw_slot, draw_polygon, and draw_circle without needing to open their 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?
Usage is only implied: 'in a sketch' and 'sketch_index: 0 = latest sketch' hint that a sketch must already exist, and the slot remark hints at when draw_slot is the better choice. There is no explicit when-to-use/when-not statement, no stated prerequisite like an active document, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_slotA
Draw a slot (oblong hole / rounded-end profile) centered on (x, y), mm.
Args: x, y: Center. length: Overall length, end to end. width: Width (= the end radius x 2). angle: Direction of the length in degrees, in sketch coordinates. sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| angle | No | ||
| width | Yes | ||
| length | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose units (mm) and that sketch_index=0 means the latest sketch, which is real behavioral context. But it never says the call mutates the active sketch, what happens if no sketch exists, or whether the geometry is added to an existing sketch—material gaps for a write operation 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 shape definition and anchor are front-loaded in one sentence, followed by a tight per-argument list with no filler. Slightly verbose in restating obvious names, but every line carries 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?
Return values are covered by the output schema, so the gap is purely procedural: a 7-parameter sketch-mutating tool with no annotations should say what state must exist (active document/sketch) and what happens on failure. Geometry semantics are complete; operational context is not.
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 only 14% (only 'instance' is documented in-schema), so the description must compensate and largely does: it defines length as end-to-end, width as twice the end radius (a non-obvious constraint that prevents invalid inputs), and angle as direction in sketch coordinates. Only 'instance' is left to the 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 (draw a slot) and disambiguates the geometry with two synonyms ('oblong hole / rounded-end profile') plus its anchor point. Against siblings like draw_rectangle, draw_circle, draw_arc and draw_polygon, an agent can pick this one 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?
No statement of when to use this versus draw_rectangle/draw_closed_profile, and no prerequisites such as needing an active sketch or document. Usage is only implied by the parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_pythonA
Execute Python code against the live Inventor connection.
Pre-bound objects (re-resolved fresh on every call): inv — InventorConnection wrapper (all high-level methods, mm units) app — Inventor.Application COM object doc — active document comp — its ComponentDefinition body — comp.SurfaceBodies.Item(1) (or None) tg — TransientGeometry math — math module progress(msg) — status line call_status shows while a long job runs cancelled() — True once cancel_call asked to stop: poll it in long loops Variables you assign persist between calls until the server restarts or reload_api runs — status shows the namespace's age and names. Each connected Inventor has its own namespace. Helpers you need every time: put them in a file and load_library it (or in ~/.inventor-mcp/startup.py) — they come back by themselves in a new namespace. Internal COM units are CENTIMETERS — divide mm by 10. Objects are late-bound: a Document from Documents.Open exposes ComponentDefinition directly. Don't use CastTo / gencache.EnsureDispatch (they create a gen_py cache). Runs with SilentOperation on, so Inventor answers its own prompts instead of opening a dialog. A call longer than the wait limit keeps running; follow it with call_status(wait_seconds=30), which shows the prints so far; cancel_call stops it. Returns captured stdout + stderr (print your results!), or the traceback from your own code down on error (COM errors named: E_INVALIDARG, RPC_E_DISCONNECTED …).
Args: code: Python source. undo_on_error: Run inside one undo transaction on the active document and roll it back if the code raises — no half-built sketches or work planes left behind. timeout: Seconds; then cancelled() turns True, and the run is interrupted CANCEL_GRACE s later if it hasn't stopped — as cancel_call does (0 = none).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| timeout | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| undo_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 unusually well: it enumerates pre-bound objects, discloses that COM units are centimeters while the wrapper is mm, warns against CastTo/gencache.EnsureDispatch, notes SilentOperation suppresses dialogs, explains timeout/cancel semantics and the CANCEL_GRACE interrupt, and names the return (stdout+stderr or a named-COM-error traceback). This is the kind of behavior an agent could not infer from schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose in one line, then moves to pre-bound names, persistence, units, late binding, and failure modes. It is long and reads as a dense run-on block rather than cleanly sectioned prose, but nearly every line carries operational signal 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?
Complete for a high-complexity arbitrary-code tool: persistence model, unit trap, cancellation path, error surface, and multi-instance namespace isolation are all covered, and an output schema exists so return formatting need not be re-explained.
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 only 25% (only `instance` documented), so the description must compensate and does: `code` is Python source with documented pre-bound names, `undo_on_error` explains it wraps the run in one undo transaction and rolls back on raise, and `timeout` explains cancelled() flips True then an interrupt occurs (0 = none). Only `instance` is left to the schema, where it is already described.
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 — execute Python against the live Inventor connection — and implicitly frames itself as the raw escape hatch that the many single-purpose siblings (draw_line, extrude, fillet) do not cover. An agent can immediately tell this is the general scripting entry point rather than a modeled operation.
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 operating guidance: follow long calls with call_status(wait_seconds=30), use cancel_call to stop, put reusable helpers in a file/startup.py, and note that variables persist until restart or reload_api. It lacks an explicit 'prefer the dedicated tool over scripting when one exists' exclusion against the ~70 modeling siblings, which is the main missing routing cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentB
Export active document to another format.
Args: path: Output file path (e.g. "D:/export/part.step"). format: Export format — STEP, STL, SAT, or IGES.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| format | No | STEP | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states the export action and formats but omits overwrite behavior, required document state, permissions, failure modes, and whether the source document is modified.
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 in the first sentence, and the Args block is compact. The path example is useful and there is no meaningful waste, though the docstring-style formatting is slightly mechanical.
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?
An output schema exists, so return values need not be explained, and the schema documents the instance parameter. However, for a file-writing export operation with no annotations, missing overwrite and active-document requirements leaves a clear gap.
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 only 33%, but the description compensates by documenting the path purpose with an example and the allowed format values STEP, STL, SAT, and IGES. It omits the instance parameter, though the schema itself describes that parameter adequately.
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: export the active document to another format. It is clear enough to distinguish from most siblings, though it does not explicitly contrast with save_document or import_step.
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: use this when the active document needs to be written in another format, and the supported formats are listed. It does not explicitly say when to use this versus save_document, nor does it state prerequisites such as having an active document open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extrudeB
Extrude a sketch profile to create 3D geometry. Distance in mm.
Args: distance: Extrusion distance in mm. Ignored when extent_type="all". direction: Direction — positive, negative, or symmetric. operation: Boolean operation — join, cut, intersect, surface, or new. sketch_index: Sketch number to extrude (0 = latest sketch). extent_type: Extent type — "distance" (fixed distance, default) or "all" (through entire body).
| Name | Required | Description | Default |
|---|---|---|---|
| distance | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| direction | No | positive | |
| operation | No | join | |
| extent_type | No | distance | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses that distance is ignored when extent_type='all' and lists operation modes, but does not state that this mutates the active document, what prerequisites (active document/sketch) are required, whether it is undoable, or what errors occur if no sketch exists.
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, followed by a compact Args list that adds necessary parameter meaning. There is minor redundancy ('Distance in mm' appears twice) but no wasted sentences.
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, the description covers the main parameters and omits return values appropriately because an output schema exists. However, it lacks prerequisite/side-effect context (active sketch/document, undo behavior) needed for safe 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 17%, but the description explains five of six parameters: distance units/condition, direction choices, operation choices, sketch_index semantics, and extent_type values. It omits instance, though the schema itself describes that parameter, so the description largely compensates for the low 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 names a specific verb ('Extrude') and resource ('sketch profile') and states the outcome ('create 3D geometry'). It does not distinguish this tool from siblings such as revolve or sweep_rotation, so it is clear but lacks explicit 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?
It explains parameter choices like extent_type='all' and operation options, but gives no explicit when-to-use guidance, prerequisites, or comparison to alternatives such as revolve. The agent must infer that this is the tool for linear extrusion from the purpose statement alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filletB
Add fillet (rounded edge) to edges of the solid body. Radius in mm.
Args: radius: Fillet radius in mm. edge_indices: Comma-separated edge indices (e.g. "1,2,3"). Use status() to see edge count.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| edge_indices | No | 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, and it discloses almost nothing: no statement of what happens if an edge index is invalid or the radius exceeds the body geometry, no note on whether the operation is transactional/undoable, and no indication of which solid is modified. Only the units (mm) are surfaced.
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 and units are front-loaded in the first sentence, and the argument list is short and purposeful. The arg lines partially restate the schema, but they add the mm unit and the index-format example, so little 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?
An output schema exists, so return values need not be explained. But for a geometry-mutating tool with zero annotations, the definition says nothing about failure modes, target-body selection, or whether the change is reversible — information an agent needs before invoking a destructive CAD 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?
Schema coverage is only 33%, but the description compensates well: it documents radius units (mm) and specifies the edge_indices format as a comma-separated list with the example "1,2,3", plus a pointer to status() for valid values. The remaining instance parameter is already documented in the schema, so the gaps are effectively closed.
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 clear verb and resource ('Add fillet (rounded edge) to edges of the solid body') and even glosses the term 'fillet', so an agent unfamiliar with CAD terminology understands it. It does not distinguish itself from the sibling chamfer tool, which is the nearest alternative operation, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is one concrete usage hint: 'Use status() to see edge count' for discovering valid edge_indices. However, it never says when to choose fillet over chamfer, which body it applies to when multiple exist, or any precondition/limitation, leaving the agent to infer the selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_edgeA
Find an edge by its midpoint coordinates (mm). Returns edge index (string). Useful for flange — locate the edge to bend without printing all edges.
Args: x/y/z: Target midpoint coordinates (mm). use_x/y/z: Set True for each coord that should be matched (False = ignored). tolerance: How close midpoint must be (mm). Default 0.1.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| use_x | No | ||
| use_y | No | ||
| use_z | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 disclose that the result is a string edge index and that tolerance defaults to 0.1 mm, which is helpful. It never says what happens if no edge matches (error, None, nearest match) or if multiple edges match within tolerance — the critical failure modes for a finder 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?
Front-loaded with purpose and return value, then the arg breakdown; every line carries real information. The 'Args:' docstring style is slightly verbose but not wasteful.
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?
An 8-parameter geometry-query tool with no annotations and an output schema, so return-value explanation is rightly omitted. Still, the ambiguous cases an agent will hit — no match, multiple matches, unit/instance scoping interactions — are unaddressed, leaving gaps that matter 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 description coverage is only 13% (just 'instance'), so the description must compensate, and it does: it explains the x/y/z target coordinates, the use_x/use_y/use_z matching toggle semantics ('False = ignored'), and the tolerance unit and default. Only 'instance' is left to the schema, and the schema does document that one.
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 ('Find an edge by its midpoint coordinates') and discloses the return type (edge index string). The added note about flange use implicitly separates it from list_edges, though it never names that sibling explicitly.
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?
'Useful for flange — locate the edge to bend without printing all edges' gives a concrete use scenario and hints at the list_edges alternative, but there is no explicit when-not-to-use guidance or named alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_faceA
Find a planar face by its centroid coordinates (mm). Returns face index (string). Useful for sheet metal Cut — locate the outer panel face to sketch on.
Args: x/y/z: Target centroid coordinates (mm). use_x/y/z: Set True for each coord that should be matched. min_area: Minimum area in mm² (filters tiny edge faces). Default 100. tolerance: Centroid match tolerance (mm). Default 0.5.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| use_x | No | ||
| use_y | No | ||
| use_z | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| min_area | No | ||
| tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully discloses the return type, default min_area filtering for tiny edge faces, and default centroid tolerance, but it omits important behavior such as what happens when no face or multiple faces match.
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, front-loaded with purpose and return value, and uses a clean Args block for parameter meanings. Every sentence adds 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?
An output schema exists, so return-value details need not be expanded. For a 9-parameter search tool with no annotations, the description covers the core matching behavior well, though it could mention coordinate frame assumptions or no-match/multi-match 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 only 11%, so the description must explain parameters, and it does: x/y/z are target centroid coordinates, use_x/y/z control which coordinates are matched, and min_area/tolerance have defaults and purpose. The instance parameter is documented in the schema rather than the description, 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 states a specific verb and resource: "Find a planar face by its centroid coordinates (mm)," and it explicitly says it returns a face index string. It is clear about what the tool does, but it does not explicitly contrast itself with siblings such as list_faces or find_edge.
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 context: sheet metal Cut, locating the outer panel face to sketch on. That is clear guidance for when the tool is useful, though it does not state when not to use it or name alternative tools for other face-finding cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flangeA
Add a Sheet Metal Flange (bent wall) to one or more edges.
Real sheet-metal feature (vs Extrude) — supports Flat Pattern unfolding, has proper bend radius, depth ties to Thickness. Put ALL edges of a loop (e.g. the 4 edges of a base panel) in ONE call so the corners are auto-mitered; separate calls leave open corners. The flange bends toward the side of the face the edge belongs to: for an inward flange on a wall, pick the wall's inner-face edge.
Args: edge_indices: Comma-separated edge indices (use find_edge to locate). distance: Flange height in mm (default 25 = Inventor default). angle: Bend angle in degrees (default 90 = perpendicular). auto_miter: Miter the corners between the edges (default True). miter_gap: Corner gap expression; "GapSize" = from the sheet metal rule (default). height_datum: "outer" (from outer intersection, default), "inner", "tangent", "outer_ortho" or "inner_ortho".
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | ||
| distance | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| miter_gap | No | GapSize | |
| auto_miter | No | ||
| edge_indices | Yes | ||
| height_datum | No | outer |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclose meaningful behavior: the result unfolds in Flat Pattern, bend radius/depth tie to sheet thickness, and mitering only happens when a loop is passed in one call. It also explains bending direction relative to face ownership. It omits permission/auth needs and whether the feature is reversible (deletable via delete_feature), which keeps it below 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, then the differentiator, then the critical multi-edge rule and bend-direction gotcha, then the arg list. Every line carries distinct information; nothing is redundant with the schema beyond intentional clarification.
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 an output schema, the description plus schema cover the call mechanics almost completely, including the non-obvious mitering constraint. Minor gaps remain on failure modes (e.g. what happens if an edge is not on a sheet-metal face) and the multi-instance parameter, which the description doesn't mention.
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 only 14%, but the description nearly closes the gap: it documents edge_indices format (comma-separated, use find_edge), distance units and default (mm, 25), angle units and default (degrees, 90), auto_miter, miter_gap's 'GapSize' meaning (from sheet metal rule), and enumerates height_datum values with the default. The one remaining parameter, instance, is documented in the schema itself.
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 a Sheet Metal Flange (bent wall) to one or more edges') and explicitly distinguishes itself from a sibling ('Real sheet-metal feature (vs Extrude)'). An agent can tell what it produces and how it differs from extrude 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?
Gives a concrete usage rule: put all edges of a loop in ONE call so corners auto-miter, since separate calls leave open corners. It also routes to find_edge for locating edges and gives direction guidance (use the wall's inner-face edge for an inward flange). It does not compare against related siblings such as sheet_metal_face or corner_round, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_patternA
Flat pattern of the active sheet metal part: flat size, thickness, bend count — and with a path, a DXF/DWG for the laser / punch (layers OUTER = contour, INNER = holes and cut-outs, IV_BEND* = bend lines; tangent lines, sketches etc. left out). Creates the flat pattern if the part has none.
Args: path: Output file (.dxf or .dwg). Empty: just report the flat size. format: DXF or DWG. bend_lines: Include the bend lines (on their own layers).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| format | No | DXF | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| bend_lines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it discloses the implicit mutation ('Creates the flat pattern if the part has none'), the exact layer taxonomy of the output file (OUTER/INNER/IV_BEND*), and what is deliberately excluded (tangent lines, sketches). Gaps remain: behavior when the active document is not a sheet metal part, and whether an existing DXF at `path` is overwritten.
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 purpose and scope, then the args block; no filler sentences. It is somewhat dense and parenthetical, but every clause (layer legend, exclusion list, empty-path behavior) conveys operational information rather than restating the 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?
An output schema exists so return values need not be explained, and the description covers the mutation side effect, output file layout, and option semantics. It falls short only on failure modes (non-sheet-metal active document, file overwrite, format/path mismatch), which matter for a tool that writes a file to disk.
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 only 25%, so the description must compensate and largely does: it explains `path` semantics including the empty-string sentinel, restricts `format` to DXF or DWG, and defines `bend_lines` as emitting bend lines on their own layers. Only `instance` is left undocumented in the description, and the schema covers that one, so nothing is fully dark.
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 — generating/reporting the flat pattern of the active sheet metal part — and enumerates what it yields (flat size, thickness, bend count, DXF/DWG export). An agent can distinguish it from modeling siblings like sheet_metal_face or flange, though it never names a specific sibling to contrast with.
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 'Empty: just report the flat size' clause effectively gives the two operating modes (report-only vs. export), which is genuine when-to-use guidance. It also notes the tool will create the flat pattern if none exists, so the agent knows it need not run a separate step. No explicit when-not or prerequisite conditions (e.g. active document must be sheet metal) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
frame_membersA
Build a steel frame: structural profiles laid along skeleton lines in the active assembly — what Frame Generator does (it has no API). Each member is a Content Center custom-length part (one file per profile and length, reused), turned so its length runs from start to end. Returns the placements and a saw cut list. Check with view_image.
Args: members: [{"start": [0,0,0], "end": [0,0,2000], "name": "Post_1"}, ...] in mm. Per member, optional: "family", "size", "category" (override the call's), "roll" (degrees, turns the section about its line), "anchor" ("center" = the section's middle on the line, default; "origin" = the profile's own origin), "extend" ([at start, at end] mm, negative to shorten — e.g. to stop at a crossing member). Horizontal members keep their section level; roll 90 turns a U to face sideways. category, family, size: Default profile, as content_center lists them, e.g. "Structural Shapes/Channels", "DIN 1026-1", "U 100". folder: Where the member files go (default: project workspace /Content Center Custom).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| family | No | ||
| folder | No | ||
| members | Yes | ||
| category | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does substantial work: it discloses that each member becomes a Content Center custom-length part file (one file per profile/length, reused), where those files land, and that it returns placements plus a saw cut list. It still omits failure behavior (e.g. what happens with no active assembly or missing skeleton) and whether members are adaptively constrained to the skeleton.
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?
It is front-loaded with the one-line purpose before the argument block, and the parentheticals (Frame Generator has no API; roll 90 turns a U sideways) each resolve a real ambiguity rather than padding. Length is proportionate to a six-parameter tool with a nested member list.
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?
An output schema exists, so the brief return summary is sufficient, and the argument documentation is thorough for a complex nested-array call. The remaining gap is environmental: it never states the precondition that an assembly document must be active or what the tool does when the skeleton lines are 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 coverage is only 17%, so the description must compensate, and it does: the members array is shown with a concrete JSON example and every per-member key is defined beyond the schema — roll in degrees with a worked U-section case, anchor 'center' vs 'origin', and extend as [start,end] mm with negatives to stop at a crossing member. The only undocumented parameter, instance, is already described in the schema itself.
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 definition opens with a specific verb and resource — building a steel frame of structural profiles along skeleton lines in the active assembly — and anchors it to a known concept (Frame Generator) that has no API. An agent can tell this apart from generic profile tools like extrude or place_component 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?
It establishes the operating context (active assembly, skeleton lines) and ends with an explicit verification step — 'Check with view_image' — which tells the agent what to do after calling. It does not name alternatives or state when not to use it (e.g. when to fall back to place_component plus constrain), so the routing guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parametersA
Get all parameters of the active document. Returns JSON list.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. 'Get' plus 'Returns JSON list' establishes it as a read with a list result, but it does not say whether model, user, and reference parameters are all included, what an empty document returns, or the ordering.
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 with the resource and the return shape front-loaded; nothing is wasted and nothing needs to be re-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?
An output schema exists and the one optional parameter is fully documented, so the description need not explain return values or instance semantics. Only a note on which parameter types are returned would make it 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?
Schema description coverage is 100% and the single optional 'instance' parameter is fully documented in the schema. The description adds nothing about multi-instance selection, so baseline 3 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 and resource ('Get all parameters of the active document') and the return shape. It is distinguishable from the mutation siblings add_parameter and set_parameter, though it never names 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?
The phrase 'active document' implies scope, which indirectly points at activate_document, but there is no explicit when/when-not guidance and no mention of set_parameter or add_parameter as the write alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ground_occurrenceA
Ground (fix in space) or unground a component.
Args: index: Component index (see list_occurrences). grounded: True to ground, False to release.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| grounded | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose that this is a bidirectional state mutation (grounded=True vs False) rather than a one-way write, which is genuinely useful, but says nothing about preconditions (active assembly, component being an occurrence), failure modes, or whether the change is reversible.
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 lines, front-loaded with the action and backed by per-argument notes; nothing is padded. The docstring 'Args:' formatting is slightly mechanical but costs nothing in length.
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?
An output schema exists, so return values need not be explained. However, for a state-changing assembly operation with zero annotation coverage, the description omits the invocation context an agent needs (must an assembly be active? must the document be open?) and any error behavior, leaving a real gap.
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 only 33%, and the description compensates well: it explains that 'index' is a component index obtained from list_occurrences and defines the boolean semantics of 'grounded' ('True to ground, False to release'), neither of which appears in the schema. The third parameter ('instance') is covered by the schema itself.
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 pair and resource: 'Ground (fix in space) or unground a component', and the parenthetical clarifies what grounding means. An agent can distinguish this from constraint-oriented siblings like constrain or constrain_faces, though the description never explicitly names those 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 one useful prerequisite: the index comes from list_occurrences, which is named explicitly. It does not say when to ground versus release versus use a constraint (constrain/constrain_insert) instead, so the agent must infer the assembly-fixing use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
holeA
Create a native Inventor HoleFeature. Dimensions in mm. Creates a proper Hole feature (not extrude cut) — works with circular_pattern. Supports both plain drilled holes and tapped (threaded) metric holes.
Args: x: Hole center X in mm. y: Hole center Y in mm. diameter: Hole diameter in mm. For tapped holes this is the nominal thread diameter (e.g. 16 for M16). depth: Hole depth in mm. 0 = through-all (default). tapped: True = create tapped (threaded) hole with ISO Metric profile (6H). False = plain drilled hole. pitch: Thread pitch in mm (e.g. 2.0 for M16x2). 0 = auto-select standard coarse pitch.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| depth | No | ||
| pitch | No | ||
| tapped | No | ||
| diameter | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses mm units, native HoleFeature behavior, through-all depth semantics, ISO Metric 6H tapping, and auto coarse pitch. It omits side effects, required document context, and transaction/permission 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 core purpose, then uses a compact Args section to explain each parameter. The structure is efficient and every sentence adds practical 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?
Complete enough for a mutation tool with an output schema: it explains the feature type, defaults, units, threading behavior, and parameter meanings. It could be stronger by stating prerequisites such as an active part or sketch 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 low at 14%, but the description compensates by documenting x, y, diameter, depth, tapped, and pitch with useful format and default semantics. The instance parameter is also documented in the schema itself, so coverage is effectively 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?
States a specific verb and resource: create a native Inventor HoleFeature. It distinguishes the operation from extrude cut and notes compatibility with circular_pattern, but does not explicitly differentiate from the sibling hole_linear, leaving some ambiguity among related hole 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?
Gives clear usage context by saying this creates a proper Hole feature rather than an extrude cut, and explains plain vs tapped hole support. It does not explicitly state when to prefer this over hole_linear or what prerequisites apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hole_linearA
Hole placed parametrically from two edges of a face (Linear placement). Survives part resizing — hole keeps its distance from the edges. Drill direction resolved automatically (volume check).
Args: face_axis/face_value: planar face to drill into, e.g. ("z", 25) = top face at Z=25mm. ref1_axis/ref1_value/dist1: first edge of that face + distance from it, e.g. ("x", -34.5, 8). ref2_axis/ref2_value/dist2: second edge + distance. diameter: hole diameter mm (or thread nominal if tapped, e.g. 5 for M5). depth: 0 = through-all, otherwise depth in mm. tapped: True = ISO metric thread 6H (standard coarse pitch unless pitch given). pitch: thread pitch mm (0 = auto standard coarse). cbore_diameter/cbore_depth: >0 adds counterbore seat (M5 ISO 4762: 10 and 5.5).
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| dist1 | Yes | ||
| dist2 | Yes | ||
| pitch | No | ||
| tapped | No | ||
| diameter | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| face_axis | Yes | ||
| ref1_axis | Yes | ||
| ref2_axis | Yes | ||
| face_value | Yes | ||
| ref1_value | Yes | ||
| ref2_value | Yes | ||
| cbore_depth | No | ||
| cbore_diameter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description does useful work: it discloses that the hole persists through resizing, that drill direction is auto-resolved by a volume check, and that `tapped` produces ISO metric 6H threads. What is missing is failure behavior, preconditions (does the face have to exist and be planar on the active part?), and confirmation that this is a mutating modelling operation.
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 a two-line behavioural summary, then a scannable per-argument list where each line adds distinct meaning. No filler sentences, though the inline examples make it longer than strictly minimal.
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 15-parameter mutation tool, the description plus an existing output schema leaves an agent able to construct a call: geometry anchors, thread/counterbore options, and persistence semantics are all covered. The only gaps are the `instance` selector, which the schema documents, and precondition/error behaviour.
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 only 7%, so the description carries the load and largely does: it explains every geometric argument with units and an example ('z', 25 = top face at Z=25mm), defines depth 0 as through-all, and clarifies diameter as thread nominal when tapped. Only `instance` and the numeric defaults (e.g. diameter 5.5, cbore 0) are left to the 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: a hole placed parametrically from two edges of a face, plus the key distinguishing trait that it survives part resizing. It never explicitly contrasts with the sibling `hole` tool, so an agent must infer the difference from the placement method.
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: the linear/persistent-placement framing suggests when this beats a plain `hole`, and the drill-direction note removes a decision. There is no explicit when-to-use, when-not-to-use, or named alternative, so the agent has to infer the choice from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_stepA
Import a vendor STEP file (hinge, lock, gland...) as Inventor files in dest_folder. The STEP is copied into dest_folder first, because Inventor writes the parts of an imported assembly next to the .step file (e.g. into Downloads or a synced folder). Returns path, type, overall bbox and per-component bbox/volume — use them to find mounting faces and axes before placing it with place_component.
Args: step_path: The downloaded .step / .stp file. dest_folder: Project folder to hold the Inventor files. name: Base name for the .iam/.ipt (default: the STEP file name).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| step_path | Yes | ||
| dest_folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, and it does disclose a non-obvious side effect: the STEP is copied into dest_folder because Inventor writes parts next to the .step file. It also enumerates what is returned (path, type, overall bbox, per-component bbox/volume). It omits overwrite behavior, permission requirements, and failure modes for a write operation.
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 leads, the rationale for the copy follows, and parameters are grouped cleanly under Args. Every sentence carries information the agent needs; nothing redundant.
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 four-parameter import tool with no annotations, the description covers purpose, the key side effect, and the workflow hand-off to place_component. The output schema already covers return values, so the remaining gap is minor (overwrite/permission semantics rather than structural information).
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 only 25%, so the description must compensate, and it explains all three parameters it lists: step_path is the downloaded .step/.stp, dest_folder is where Inventor files go, and name defaults to the STEP file name. The fourth parameter (instance) is documented in the schema itself, leaving no meaningful 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 ('Import a vendor STEP file ... as Inventor files in dest_folder') plus scope details like hinge/lock/gland examples. Clearly distinct from siblings such as create_part, place_component, and execute_python.
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 downstream guidance ('use them to find mounting faces and axes before placing it with place_component'), which tells the agent when this tool fits in the workflow. It doesn't state exclusions or name alternatives for other file formats or import paths, 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.
inspectA
Compact snapshot of the active part: volume, bbox, faces/edges count, feature tree with names, sketches, sheet metal thickness. One call instead of several diagnostic queries.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. 'Snapshot' and 'diagnostic queries' imply a read-only inspection scoped to the active part, but the definition does not explicitly confirm no mutation, permissions/auth needs, behavior with no active part, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted text: the first front-loads the scope and returned diagnostic fields, and the second justifies the value over multiple calls. It is appropriately sized for the tool.
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?
An output schema exists and the parameter schema is fully described, so the description need not explain return values or instance selection. It covers the snapshot contents and active-part scope adequately for a read-only diagnostic tool, though it leaves some behavioral and usage-routing details 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?
The single parameter 'instance' has complete schema documentation explaining connected Inventor selection and the empty-default behavior. The description adds no further parameter guidance, so this sits at the baseline 3 for 100% schema description 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?
It states a specific operation and resource: a compact snapshot of the active part with enumerated contents (volume, bbox, counts, feature tree, sketches, thickness). The phrase 'one call instead of several diagnostic queries' hints at aggregation, but it does not explicitly name the sibling diagnostic tools it replaces.
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 a clear use case as a one-call diagnostic overview, implying it should be used instead of several separate queries. However, it does not state when not to use it, prerequisites such as an active part/document, or name specific alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_component_edgesA
Edge table of one placed component in its own part coordinates: '[1] circle D=10.0 c=(0.0,0.0,10.0)'. Use to pick edges for constrain_insert.
Args: occurrence: Component index (see list_occurrences). circular_only: Only list circular edges (the ones Insert can use). max_count: Maximum rows to return.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| max_count | No | ||
| occurrence | Yes | ||
| circular_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 reasonably well: it discloses the coordinate frame of the returned data, shows a concrete row format, and explains that circular_only restricts to edges Insert can actually consume. It does not state read-only behavior or what happens when occurrence is invalid, but for a listing operation that is a modest 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?
Front-loaded with the tool's purpose and a compact example row, then a short args block. Every sentence earns its place; the colon-and-quote opening is slightly awkward but not wasteful.
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?
An output schema exists, so return values needn't be spelled out, yet the description still provides a representative row and its coordinate semantics. The only real omission is guidance on the undocumented 'instance' parameter and any behavior when the occurrence index is out of range.
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 only 25%, so the description must compensate, and it does for three of four parameters: occurrence is defined as a component index with a pointer to list_occurrences, circular_only is tied to the Insert use case, and max_count is described as a row limit. The 'instance' parameter is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: the edge table of one placed component, in that component's own part coordinates, with a sample row showing the output shape. The coordinate-frame scoping is genuinely useful and separates it from a generic edge lister, though it never names the sibling list_edges it most closely overlaps with.
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?
'Use to pick edges for constrain_insert' gives a concrete downstream purpose, and 'see list_occurrences' routes the agent to the tool that supplies the occurrence index. No explicit when-not-to-use condition or contrast with list_edges/find_edge is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_constraintsB
List the assembly constraints with their indices.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 implies a safe read but says nothing about required document state, error behavior when no assembly is active, or whether the index values are stable identifiers usable by delete_constraint.
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 with zero filler; the key resource and the distinguishing detail (indices) come first.
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?
An output schema exists so return values need not be explained, and the only parameter is fully documented. However, with no annotations and no mention of prerequisites or how indices relate to other constraint tools, it is only minimally complete for an agent working in an assembly 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?
With one optional parameter and 100% schema description coverage, the schema already documents the instance selector and even points to list_instances. The description adds no meaning beyond that, so the baseline 3 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 and resource ("List the assembly constraints") and adds the scope detail that indices are included. It is clearly distinguishable from mutation siblings like delete_constraint and constrain, though it doesn't explicitly name 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?
There is no guidance about when to call this versus constrain/constrain_faces or delete_constraint, and no stated prerequisites (e.g. that an assembly document must be open). The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsA
List open documents (name, path, type, unsaved changes) and which one is active. Tools act on the ACTIVE document — check here when juggling several parts.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load: it discloses the exact information returned and the important ecosystem-level trait that all other tools operate on the ACTIVE document. It doesn't state read-only/safety expectations explicitly, but for a listing tool the residual risk is low.
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 tight sentences with zero filler; the enumerated return content comes first, followed by the usage cue. 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?
An output schema exists so return values needn't be spelled out, and the description covers the key cross-tool behavior. Minor gaps: no mention of how it relates to activate_document or close_unsaved when unsaved changes are flagged.
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 'instance' parameter is fully documented in the schema (100% coverage, including a reference to list_instances), and the description adds nothing beyond it. Baseline 3 is appropriate when the schema does all the work.
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 open documents') and enumerates the returned fields (name, path, type, unsaved changes) plus the active-document marker. This clearly separates it from siblings like list_instances, activate_document, or save_document without ambiguity.
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?
'Tools act on the ACTIVE document — check here when juggling several parts' gives a concrete trigger for when to reach for this tool. It does not name alternatives (e.g., activate_document) or state when not to use it, 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.
list_edgesA
Compact edge table of body 1: '[i] L=200.0 mid=(0.0,-225.0,0.8)' per line. Use to locate edges for flange/fillet/chamfer. min_length filters small edges (mm).
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| max_count | No | ||
| min_length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It discloses the output line format and the min_length filter, but it omits important behavior such as the max_count truncation limit (60) and whether this requires an active document or specific instance 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?
The description is two tight sentences that front-load the output format and then give the use case. There is little wasted text, though the opening 'body 1' phrasing could be clearer.
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?
An output schema exists, so return values need not be fully explained, and the tool is implicitly read-only. Still, the description leaves gaps around max_count behavior and the meaning of 'body 1', which matter for correct invocation in a CAD 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 coverage is only 33%, with only the instance parameter documented in the schema. The description compensates for min_length by explaining it filters small edges in millimeters, but it provides no semantics for max_count, leaving one of three 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 (list edges) and even shows the expected per-line output format, which is useful context. However, it does not differentiate itself from sibling tools like find_edge, list_component_edges, or list_faces, and the phrase 'body 1' is unexplained.
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 use case: locating edges for flange/fillet/chamfer operations. It also explains that min_length filters small edges. It does not mention when to prefer find_edge or other edge-listing siblings, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_facesB
Compact face table of body 1: '[i] Plane A=90000 c=(0.0,225.0,12.5)' per line. Use to locate faces for sketching/cuts. min_area filters small faces (mm²).
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| min_area | No | ||
| max_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose the compact output format and min_area filtering, but it omits read-only status, max_count truncation behavior, error conditions, and instance handling details.
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 with the output format front-loaded and no wasted phrasing. The example line is useful, though the opening is dense and assumes familiarity with the face-table notation.
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 and has an output schema, and the description gives the return-line format plus min_area meaning. Still, it leaves max_count/truncation behavior and 'body 1' ambiguous, which are relevant 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 low at 33%; instance is described in the schema, and the description explains min_area as an mm² filter for small faces. However, max_count is not explained in either the schema or the description, so compensation for the low 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?
States a specific verb and resource (list faces) and includes an output-line example plus intended use for sketching/cuts. It does not distinguish itself from siblings such as find_face or assembly_faces, and 'body 1' is unexplained.
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?
Says to use it to locate faces for sketching/cuts and notes that min_area filters small faces, which gives implied usage context. It does not say when to choose this over find_face, assembly_faces, or list_edges, nor does it state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_featuresC
List all features in the active part. Returns JSON list.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral burden, yet it only says 'Returns JSON list'. It does not disclose whether suppressed features are included, what a feature entry contains, or whether an error occurs when no part is active — all relevant for a tool acting on 'the active part'.
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 with the scope stated first; no wasted text. 'Returns JSON list' is marginally redundant given an output schema exists, keeping it just below the top score.
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 read-only list tool with a documented schema and an output schema covering return values, the description is minimally sufficient. It still leaves open the 'active part' precondition and suppressed-feature inclusion, which an agent would want before calling.
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 100% and the single 'instance' parameter is fully documented in the schema, including the pointer to list_instances. The description adds nothing about parameter behavior, so the baseline 3 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+resource ('List all features') and scopes it to 'the active part', which distinguishes it from document-level siblings like list_documents or list_instances. It does not explicitly contrast with adjacent read tools such as list_faces, list_edges, or get_parameters, but the resource noun 'features' is itself differentiating.
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?
No guidance on when to use this versus alternatives (e.g., get_parameters for parameter data, list_occurrences for assembly components), and no stated prerequisites such as needing an open part document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instancesA
The Inventors this server is connected to — name, project, open documents — and any other running Inventor it can't reach (opened by hand). Answers even while they are busy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses useful behavior: it returns instances even when they are busy, and it includes manually opened Inventors the server cannot reach. It does not explicitly state safety or error behavior, but the read-only nature is strongly implied by listing instances.
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 resource and supplemented by the key busy/unreachable behavior. 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 zero-parameter list tool with an output schema, the description is nearly complete: it explains scope and the busy-instance behavior. It could improve by explicitly naming when to choose it over sibling discovery tools.
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 the baseline is 4. The description correctly adds no parameter detail because there are none.
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 identifies the resource: Inventor application instances connected to the server, including manually opened ones it cannot reach. It distinguishes this from document-focused siblings like list_documents, though it never uses an explicit verb such as "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?
Usage is implied: an agent would call this to discover connected or unreachable Inventor instances. However, it gives no explicit when-to-use guidance or named alternatives among siblings such as status or list_documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsB
Material names in Inventor's libraries, e.g. search="steel" or "alum" — the exact names set_material / properties / create_part take.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it says nothing about whether the call is read-only, whether search is a substring or prefix match, case sensitivity, result limits, or what happens when the library is not loaded. The only behavioral hint is that returned names must match exactly, which is about downstream use rather than this call.
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 compact sentence with no filler, and the useful constraint (names are the exact strings passed to downstream tools) is front-loaded. The phrasing is slightly fragmented, 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?
An output schema exists, so return format needn't be explained, and the schema covers the instance selector. However, for a lookup tool the one thing an agent most needs — how 'search' matches and whether an empty search returns everything — is not addressed anywhere.
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 50%: 'instance' is documented in the schema, but 'search' has no schema description, and the description only supplies example values ('steel', 'alum') without stating matching semantics. That partially compensates for the gap but leaves the key parameter's behavior underspecified.
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 the resource precisely ('Material names in Inventor's libraries') and distinguishes it from mutating siblings by pointing at set_material/properties/create_part as consumers. It never states an explicit verb like 'list' or 'search', but the resource and scope are 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?
Usage is only implied: the examples ('search="steel"') and the pointer to the tools that consume the returned names suggest the lookup-then-set workflow. There is no explicit statement of when to use this versus material_report or content_center, nor any note about prerequisites such as a connected instance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_occurrencesA
Compact table of the assembly's components: '[1] block:1 pos=(0.0,0.0,0.0) grounded'. Indices feed the constrain tools.
Args: depth: 2+ also lists the components inside sub-assemblies, with their paths ("Frame:1/Post:2") for assembly_faces / constrain_faces / check_interference.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclose meaningful behavior: the output is a compact text table, first element is an index used by later calls, and depth>=2 changes both what is listed and the path notation emitted. It does not address index stability across calls or behavior on an empty assembly, so it stops short of full 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 purpose and a single illustrative output line, then the argument notes. The example line is dense but earns its place by defining the index/grounded format; nothing is redundant.
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?
An output schema exists, so return values need not be spelled out, and the description still flags the table format and index convention. Combined with the documented instance param and explained depth behavior, an agent has enough to call it correctly; only edge-case behavior 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 coverage is only 50%; the depth parameter has no schema description, and the body compensates by explaining that 2+ includes sub-assembly components and yields paths like 'Frame:1/Post:2' for specific downstream tools. The instance parameter is fully documented in the schema itself, so both params are covered, though exact semantics for depth values beyond 2 are left 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?
States a specific operation and scope: a compact table of the assembly's components, with a sample output line showing the index/name/position/grounded format. That clearly separates it from siblings like list_features, list_edges or list_documents, which cover different resources, though no sibling is named directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states that the returned indices feed the constrain tools, and the depth arg explains that deeper listing is what you need for assembly_faces / constrain_faces / check_interference. No explicit when-not-to-use guidance, but the routing to downstream tools is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sheet_metal_rulesA
List the sheet metal rules available in the active sheet metal part (name, thickness, bend radius, which one is active). Shops often encode their tooling in rule names, e.g. 'T15-V10' = 1.5 mm sheet, V10 die.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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, and it does reasonably: it is clearly a read-only enumeration scoped to the active sheet metal part, and it discloses the shape of each entry including which rule is active. It omits failure behavior (e.g., what happens when the active document is not a sheet metal part), which is the main remaining 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?
Two compact sentences, front-loaded with the action and scope; the second sentence earns its place by explaining how shops encode tooling in rule names, which helps an agent interpret the returned strings.
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 an output schema present and a fully described single optional parameter, the description supplies enough context to call the tool correctly. Only the error/precondition behavior for non-sheet-metal documents is left 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 schema documents the single optional 'instance' parameter at 100% coverage (including a pointer to list_instances), so the description need not repeat it. The description adds no additional meaning about the parameter, so baseline 3 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 and resource ('List the sheet metal rules') plus the scope ('in the active sheet metal part') and enumerates the returned fields (name, thickness, bend radius, active). The read verb implicitly separates it from the sibling set_sheet_metal_rule, though that sibling is never named.
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: an agent can infer this is the discovery step before set_sheet_metal_rule or set_sheet_metal_thickness, but the description never says when to call it, what prerequisites exist, or what to do if no rules are defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_libraryA
Run a Python file into this Inventor's execute_python namespace and keep it there: after reload_api or a new namespace it is loaded again by itself. For helper functions and cached objects (Content Center families…) you would otherwise redefine every time. A file at ~/.inventor-mcp/startup.py (or INVENTOR_MCP_STARTUP) is loaded the same way for every Inventor.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 that the loaded code survives reload_api and new namespaces via automatic re-loading, and that ~/.inventor-mcp/startup.py or INVENTOR_MCP_STARTUP is applied to every Inventor. It omits failure behavior (missing file, syntax errors) and any security notes about arbitrary code execution.
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 core action and the persistence guarantee. Dense but every clause adds information; the parenthetical example is the only mild 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?
An output schema exists, so return values need no explanation, and the description covers scope (this Inventor's namespace), persistence semantics, and the global startup mechanism. Error handling and namespace collision behavior remain unaddressed, keeping it just short of 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 50% — 'instance' is documented in the schema and the description adds no more, while 'path' is undocumented in both. The description implies the path points to a Python file but gives no guidance on absolute vs relative resolution or required extension.
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 ('Run a Python file into this Inventor's execute_python namespace') and immediately establishes the distinguishing trait — the file is kept and auto-reloaded — which separates it from the one-shot execute_python sibling.
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 use case ('For helper functions and cached objects you would otherwise redefine every time') and describes the automatic startup.py variant. It does not explicitly say 'use execute_python instead when you want a one-off run', but the contrast is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_drawingA
2D drawing of the active part or assembly (saved to disk) → PDF for the shop floor. A base view, projected views around it, overall dimensions on the base view (between its outermost straight edges — check them on assemblies), the model dimensions Inventor can retrieve, and the template's title block (filled from properties()). Read the PDF back to check the layout.
Args: pdf_path: Output .pdf. views: First is the base view (front/top/right/left/back/bottom); the rest are projected from it: top (placed below), right (beside), iso (shaded, half scale). template: Drawing template name (ISO, DIN, ANSI (mm) …) or a full .idw path. scale: 0 = largest standard scale that fits; or e.g. 0.2 for 1:5. flat: Sheet metal part: draw the flat pattern (one view). drawing_path: Also keep the drawing as .idw / .dwg (otherwise it is closed).
| Name | Required | Description | Default |
|---|---|---|---|
| flat | No | ||
| scale | No | ||
| views | No | front,top,right,iso | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| pdf_path | Yes | ||
| template | No | ISO | |
| drawing_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the on-disk side effect, that the drawing is closed unless drawing_path is supplied, that the title block is auto-filled from properties(), and warns to check overall dimensions on assemblies. It does not cover prerequisites such as requiring an activated document or expected runtime, so it stops 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-loaded with the outcome ('2D drawing ... → PDF for the shop floor') before any detail, then a tight Args list where each line adds distinct semantic value. The opening paragraph is dense and parenthetical-heavy, which costs a point on readability, but nothing is redundant.
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 geometry-generation tool with an output schema, the description covers the pipeline (generate → save → verify by reading the PDF), the per-parameter conventions, and the caveat about dimension accuracy on assemblies. An agent could invoke this correctly without opening the schema.
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 only 14%, yet the description documents six of the seven parameters with real semantics the schema lacks: view ordering and placement conventions ('top placed below', 'iso shaded, half scale'), scale encoding ('0 = largest standard scale that fits; 0.2 for 1:5'), template formats including full .idw paths, and the flat-pattern switch. Only 'instance' is left to its own schema description, which already covers 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 and artifact: produce a 2D drawing of the active part/assembly and save it to disk as a PDF. It also enumerates the contents of the output (base view, projected views, dimensions, title block), so the agent knows exactly what the call yields versus siblings like export_document or flat_pattern.
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 rather than stated: 'check them on assemblies' and 'flat: Sheet metal part' tell the agent when certain modes apply, and 'Read the PDF back to check the layout' hints at a verification loop. But no sibling is named as an alternative (e.g. export_document, flat_pattern), and no explicit when-not-to-use condition is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
material_reportA
Material and mass of every part of the active assembly (or part; below path for a
sub-assembly): counts per material, total mass, and what needs a look — parts left on
Generic, vendor models made of surfaces (no volume, mass too low), parts with no mass.
Args: path: Sub-assembly path to limit it to (list_occurrences(depth=2)). only_problems: Just the summary and the problems, no per-part rows.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| only_problems | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it discloses that `only_problems` suppresses per-part rows, that `path` scopes to a sub-assembly, and what counts as a problem (Generic material, surface-only vendor models, missing mass). It does not explicitly state that the operation is read-only, though the verb 'report' strongly implies it.
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, scannable, and free of filler. The main sentence defines the report, and the Args section adds only the details an agent needs for the two parameters not already covered in 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?
An output schema exists, so return values need not be explained. For a three-parameter reporting tool with no annotations, the description supplies enough context about scope, modes, and problem definitions 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?
Schema coverage is only 33%, but the description compensates by documenting `path` (sub-assembly path, obtainable via `list_occurrences(depth=2)`) and `only_problems` (summary and problems only, no per-part rows). The remaining `instance` parameter is well described in the 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 clearly states that this tool reports material and mass data for parts in the active assembly or part, including counts, total mass, and problem categories. It is more specific than a generic report tool, but it does not explicitly distinguish itself from sibling tools like `bom` or `properties`.
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 usage by describing what is reported and how `path` limits results to a sub-assembly. However, it never states when to use this tool instead of `bom`, `properties`, or `assembly_info`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_distanceA
Minimum distance in mm between two occurrences (0 = touching/overlapping). Names as in list_occurrences; "Asm:1/2" reaches a part inside a sub-assembly.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load; it usefully discloses the unit of measure and the meaning of a zero result. It does not state that the operation is read-only, how failures are surfaced (unknown/duplicate occurrence names), or whether cross-assembly comparison is supported.
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 tight sentences with the core measurement and its edge-case meaning front-loaded; 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?
An output schema exists, so return values need not be explained, and parameter meaning is covered. Remaining gaps are minor: failure behavior for bad names and remote-instance targeting when multiple Inventor instances are connected.
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 only 33%, but the description compensates by explaining that a and b are occurrence names from list_occurrences and that the "Asm:1/2" path syntax reaches into sub-assemblies. The instance parameter is covered by its schema description, so the important semantics are present.
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 (measure minimum distance between two occurrences) and adds unit and edge-case semantics (mm, 0 = touching/overlapping). An agent knows exactly what is computed, though no sibling (e.g. check_interference) is named to sharpen the boundary.
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: the naming reference to list_occurrences hints at the required calling sequence, but there is no explicit when-to-use/when-not and no mention of the interference-checking sibling as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offset_profileA
Offset every closed loop of a sketch by distance mm — a gasket groove, a wall, a
lip, an inner cut-out with a margin. Lines, arcs and circles stay lines, arcs and circles.
Args: distance: Offset in mm. side: "inside" or "outside" of each loop. sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | inside | |
| distance | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully discloses that only closed loops are offset and that lines, arcs, and circles preserve their geometry types, but it does not state whether the original sketch is modified or whether a new profile is created.
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 and efficient. The first sentence states the operation and scope, and the Args section adds only relevant parameter meaning without 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?
An output schema exists, so return values need not be described. However, for a sketch-modifying CAD operation with no annotations, the description should ideally state prerequisites such as the need for closed loops and whether the existing sketch geometry is preserved or replaced.
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 only 25%, but the description compensates well: it explains distance in mm, side as "inside" or "outside", and sketch_index with 0 meaning latest. The remaining parameter, instance, is already documented in the 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: offset every closed loop of a sketch. It distinguishes the operation from drawing or feature tools by describing the geometric outcome and giving concrete use cases like gasket grooves, walls, lips, and inner cut-outs.
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 examples make the intended usage clear: creating offset geometry such as grooves, walls, lips, and margins. However, it does not explicitly say when not to use it or name alternative tools for related sketch operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_componentA
Place a part or sub-assembly into the active assembly. The file must exist on disk — save_document() the part first.
Args: path: Full path to the .ipt / .iam file. x: X position in mm (where the component's origin goes). y: Y position in mm. z: Z position in mm. grounded: Fix the component in space. Ground the FIRST component of every assembly, otherwise constraints move it instead of the others. x_axis: Optional orientation — where the component's X axis points, e.g. "0,0,1". y_axis: Where its Y axis points, e.g. "0,1,0" (must be perpendicular; Z = X × Y).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| path | Yes | ||
| x_axis | No | ||
| y_axis | No | ||
| grounded | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 that the file must already exist on disk, that grounding affects how constraints behave ('constraineds move it instead of the others'), and that the Y axis must be perpendicular with Z derived as X × Y. It omits anything about failure modes, undo semantics, or instance targeting when multiple Inventor instances are connected.
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 structured Args block where each entry adds real information. Some prose in the grounded entry is wordier than needed, 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 an 8-parameter mutation tool with no annotations, the description supplies prerequisites, units, and orientation semantics, and an output schema covers return values. A brief note on the multi-instance 'instance' parameter or on what happens if the path is invalid would close the remaining gap.
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 only 13%, so the description must compensate, and it does: x/y/z are given units (mm) and meaning ('where the component's origin goes'), grounded explains behavior not just type, and the axis parameters get concrete example vectors plus the perpendicularity constraint. The only uncovered parameter is 'instance', which does carry its own schema 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 ('Place a part or sub-assembly into the active assembly'), which an agent can act on immediately. It does not, however, distinguish itself from siblings such as place_many, constrain_insert, or import_step, which occupy adjacent territory.
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 concrete prerequisite workflow ('The file must exist on disk — save_document() the part first') and practical guidance on grounding the first component. It stops short of naming alternatives or stating when to prefer place_many or constrain_insert instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_manyA
Place many parts / sub-assemblies into the active assembly in one call — for frames of dozens or hundreds of members, where place_component one by one is slow.
Args: components: [{"path": "C:/.../beam.ipt", "x": 0, "y": 0, "z": 0, "x_axis": [1,0,0], "y_axis": [0,1,0], "grounded": false, "name": "Beam_A1"}, ...]. mm. "origin": [x,y,z] works too. Axes and name are optional (axes: where the part's own X/Y point; give both). Files must exist — all are checked before anything is placed.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| components | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description still discloses a real behavioral trait: 'Files must exist — all are checked before anything is placed,' which tells the agent the call pre-validates and is effectively all-or-nothing. It also fixes units (mm) and the axis convention. It does not cover partial-failure semantics beyond file existence, undo/transactionality, or required document state.
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 purpose and the sibling comparison before the argument detail, and every sentence carries information. The trailing parenthetical about axes ('where the part's own X/Y point; give both') is dense and slightly run-on, costing a bit of 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?
For a batch mutation tool with no annotations, the description covers the essentials — units, coordinate frame, optional fields, pre-validation behavior, and the alternative tool — and an output schema exists so return values need not be explained. It stops short of stating the required document state or what a caller should expect if some entries fail validation beyond missing files.
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 only 50% and the components array is a bare 'additionalProperties: true' object, but the description compensates well by documenting every accepted key (path, x/y/z, origin alternative, x_axis, y_axis, grounded, name) and which are optional. Remaining gaps are minor — no type/default detail for grounded and no statement about unknown keys.
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 ('Place many parts / sub-assemblies into the active assembly in one call') and explicitly contrasts with the sibling place_component ('where place_component one by one is slow'), so the batch-vs-single distinction is unmistakable.
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 concrete usage trigger — frames of dozens or hundreds of members where per-call placement is slow — and implicitly routes single placements to place_component. It does not state prerequisites explicitly (e.g. that an assembly document must be active) or a hard when-not case, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_edgesA
Project a body's edges onto the sketch — exact lines, arcs, circles and splines, linked to the model. Use it to build on existing or reference geometry (e.g. remodelling an imported part) instead of re-tracing curves point by point.
Args: face_index: Project every edge of this face of the body (list_faces). edge_indices: Or these edges, "3,7,8" (list_edges). body_index: Body in a multi-body part (1 = first). sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| body_index | No | ||
| face_index | No | ||
| edge_indices | No | ||
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully discloses that the projected geometry is exact and linked to the model, but it does not state prerequisites such as an active sketch/document, whether it modifies the sketch, or whether the projection is associative/editable and reversible.
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, followed by a concise usage rationale and a compact Args section. Every sentence adds useful information without repetition.
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 has an output schema, so return values need not be explained, and the main parameters are covered well. However, with no annotations and a mutation-like sketch operation, the description should say more about prerequisites, side effects, and how the projection interacts with existing sketch geometry.
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 low at 20%, so the description must compensate. It documents four of the five parameters with useful semantics: face_index projects all edges of a face, edge_indices specifies individual edges like "3,7,8", body_index selects a body in a multi-body part, and sketch_index 0 means the latest sketch. Only instance is omitted, and that is already described in the 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 gives a specific verb and resource: projecting a body's edges onto a sketch as exact lines, arcs, circles and splines linked to the model. It clearly distinguishes this from drawing/re-tracing siblings by emphasizing projection of existing geometry rather than creating curves point by point.
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 a clear use case: building on existing or reference geometry, such as remodelling an imported part, instead of re-tracing curves. The alternative behavior is implied strongly, though it does not explicitly name sibling tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propertiesA
Read — and optionally set — the active document's iProperties: part number, description, stock number, vendor, revision, title, cost center, material, mass and custom properties. These feed the BOM and the drawing's title block.
Args: values: e.g. {"part_number": "BRS-101", "description": "Side panel 2 mm", "stock_number": "DKP-2.0"}. Unknown keys become custom properties. material: Material name as in Inventor's library (e.g. "Steel, Mild"; list_materials). mass_kg: Override the mass — for vendor models made of surfaces, which have no volume (a 1.23 kg motor showed 0.23 kg). material_report lists them.
| Name | Required | Description | Default |
|---|---|---|---|
| values | No | ||
| mass_kg | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| material | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 helpful behavioral details: unknown keys become custom properties, properties feed the BOM and title block, and mass_kg overrides mass for surface-only vendor models. But it omits key behavioral traits such as permission requirements, what happens when values is omitted or null, whether the operation is transactional, and how this relates to separate material/parameter tools.
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 scope, then organized into an Args section. It uses examples and rationale efficiently without unnecessary repetition. Minor verbosity in the mass_kg explanation is justified by the non-obvious behavior described.
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 tool's complexity (read-write, 4 parameters, no annotations) and the presence of an output schema, the description is largely complete. It covers the purpose, parameter meanings, side effects on BOM/title block, and custom-property behavior. The remaining gaps—explicit read-only conditions and differentiation from set_material—are minor but prevent a perfect score.
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 only 25% (only instance is documented in the schema), so the description must compensate. It does so effectively: it explains values with an example and the custom-property behavior for unknown keys, clarifies material as a library name and points to list_materials, and gives a concrete use case for mass_kg override. The instance parameter is covered by the schema. This adds meaningful context 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 clearly states that the tool reads and optionally sets the active document's iProperties, and it enumerates the specific properties covered (part number, description, stock number, vendor, revision, title, cost center, material, mass, custom). An agent can identify the core resource and operation, though it doesn't explicitly differentiate from the sibling set_material tool for the material field.
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 ('Read — and optionally set') and provides some guidance for material (referencing list_materials) and mass_kg (for vendor surface models, referencing material_report). However, it does not state when to use this tool versus alternatives like set_material, set_parameter, or get_parameters, nor does it clarify the read-only versus mutation conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reload_apiA
Hot-reload inventor_api.py from disk. Use after editing the wrapper — no Claude Code restart needed. Keeps the COM connections; clears this Inventor's execute_python namespace.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it discloses that COM connections are kept, the execute_python namespace is cleared, and no restart is required. It omits edge cases such as behavior when no Inventor is connected or whether the reload can fail, 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 short sentences, front-loaded with the action and followed by usage and behavioral notes. No sentence is wasted, and the key constraint about preserving COM connections is included efficiently.
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 low-complexity, the schema fully documents the only parameter, and an output schema exists. The description covers purpose, when to use it, and important side effects, but does not mention failure modes or preconditions such as an active connection.
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 100% description coverage for the single 'instance' parameter, so the schema already explains it fully. The description adds no parameter-specific details beyond the schema, making the baseline 3 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?
The description uses a specific verb and resource: 'Hot-reload inventor_api.py from disk.' It clearly states the tool reloads the wrapper module, and the note about clearing the execute_python namespace distinguishes it from related execution tools like execute_python and load_library.
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 clear usage condition: 'Use after editing the wrapper — no Claude Code restart needed.' This tells the agent exactly when to invoke it, but it does not explicitly mention exclusions or compare against sibling tools like load_library or execute_python.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revolveA
Revolve a sketch profile around a work axis to create or cut 3D geometry.
PREFERRED workflow — no construction line needed in sketch:
create_sketch("XY")
draw_closed_profile([[0,0],[30,0],[30,8],[15,60],[0,60]]) ← profile only
revolve(axis="Y", operation="join")
For a revolve CUT (e.g. groove):
create_sketch("XY")
draw_closed_profile([[8,26],[15,26],[15,34],[8,34]]) ← groove cross-section
revolve(axis="Y", operation="cut")
Profile must be on one side of the axis (all X ≥ 0 when axis="Y").
Args: angle: Revolution angle in degrees (360 = full revolution, default). axis: Rotation axis — "X", "Y", or "Z". Default "Y" for lathe parts on XY plane. sketch_index: Sketch number (0 = latest sketch). operation: Boolean operation — join (add material), cut (remove), intersect, or new.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Y | |
| angle | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| operation | No | join | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it explains that operation can join, cut, intersect, or create new geometry, and it warns that the profile must be on one side of the axis. It does not describe error handling or transactional behavior, but for a CAD lattice operation this is a solid 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 purpose and then structured into workflows and argument notes. The examples are useful but make it somewhat long; however, every section contributes actionable guidance, so it remains efficient overall.
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 tool has an output schema, the description need not explain return values. It covers the key operational semantics, defaults, profile constraints, and workflows for a five-parameter CAD operation, making it complete enough for an agent to invoke correctly without additional 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 only 20%, but the description compensates by explaining angle as degrees with default 360, axis as X/Y/Z with default Y, sketch_index 0 meaning latest, and operation meanings for join/cut/intersect/new. The instance parameter is left to the schema, which already describes it, so the coverage gap is largely addressed.
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: "Revolve a sketch profile around a work axis to create or cut 3D geometry." This clearly distinguishes it from siblings like extrude and sweep_rotation by naming the revolve operation and its create/cut outcomes.
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 explicit preferred workflows for both join and cut revolves, including sketch creation and profile shape, which tells the agent when and how to use the tool. It does not explicitly state when to prefer revolve over alternative tools like extrude or sweep_rotation, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_documentA
Save the active document — never opens a dialog, and never writes a library or Content Center file. Dependents that changed (e.g. sub-assemblies, edited parts) are saved one by one first, except files in the project's library paths or Content Center folders and Content Center members: Inventor marks standard parts dirty after opening an old assembly, and re-saving them would rewrite shared library files. Returns the files saved and the ones skipped. The path is checked first (characters, extension, an existing file) so a bad one gets a clear message instead of Inventor's E_INVALIDARG.
Args: path: Full file path to save as (e.g. "D:/parts/flange.ipt"). If empty, saves in place. overwrite: Replace a file that already exists at path (not one open in Inventor). save_dependents: False = save only this document (Save2(False)); changed dependents stay unsaved and are listed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| overwrite | No | ||
| save_dependents | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and does so well. It discloses that no dialog opens, library and Content Center files are never written, changed dependents are saved one by one first, skipped files are avoided to prevent rewriting shared libraries, and the tool returns saved and skipped files.
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 and safety constraints, then structured into an Args section that maps directly to the parameters. The length is justified by the mutation's behavioral complexity, and the explanation about Inventor marking standard parts dirty earns its place by clarifying why library files are skipped.
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 that there are no annotations and the tool is a document-saving mutation with dependent-file implications, the description provides everything needed to call it correctly. It covers path validation, overwrite behavior, dependent saving, library-file exclusions, and return contents; the presence of an output schema means return values need not be described further.
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?
Although schema description coverage is only 25%, the description explains the key parameters in detail: path behavior including saving in place, overwrite semantics for existing files not open in Inventor, and save_dependents behavior with its Save2(False) implication. The instance parameter is documented in the schema itself, so the description compensates well for the low overall 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 states a specific verb and resource: saving the active document. It also distinguishes the operation from related actions by clarifying that it never opens a dialog and never writes library or Content Center files, so an agent can understand its scope 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 gives clear usage context: empty path saves in place, overwrite replaces an existing file at the path, and save_dependents controls whether changed dependents are saved. However, it does not explicitly route the agent to alternatives such as export_document or close_unsaved, so sibling selection guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_materialA
Give many parts a material at once — every part of the active assembly whose name matches. Content Center and library parts are left alone. Save afterwards.
Args: material: From the library (list_materials), e.g. "Steel, Mild". parts: Name patterns, ","-separated, e.g. "PLATE,BRACKET" ("*" = all parts). only_generic: Only parts still on Generic / Default. path: Limit to a sub-assembly (list_occurrences(depth=2)).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| parts | No | * | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| material | Yes | ||
| only_generic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 meaningful work: it discloses that the operation only touches the active assembly, skips Content Center and library parts, and requires an explicit save afterwards to persist. It does not describe behavior on partial matches or errors, and does not mention permissions.
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 scope, then a compact Args block with one example per non-obvious parameter. Every sentence adds information an agent would otherwise have to guess.
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, the definition covers scope, exclusions, and the post-call save requirement, and an output schema exists so return values need no explanation. It stops short of covering no-match/failure behavior and multi-instance targeting in prose, though the latter is in the schema.
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 only 20% (only 'instance' is documented in the schema), and the description compensates by explaining material (with library source and format), parts (comma-separated wildcard patterns with an example and '* = all'), only_generic (Generic/Default subset), and path (sub-assembly scope). This is exactly what low-coverage schemas need.
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 ('Give many parts a material at once') plus the exact scope ('every part of the active assembly whose name matches'), which immediately separates it from list_materials, material_report, and per-part property edits. The exclusion of Content Center and library parts further sharpens the boundary.
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 clear: bulk assignment via name patterns, with pointers to list_materials for valid values and list_occurrences(depth=2) for the path argument. What's missing is an explicit statement of when NOT to use it (e.g., changing a single part's material) or what happens on a zero-match selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parameterC
Set a parameter value by name.
Args: name: Parameter name (e.g. "d0", "width"). expression: New value or expression (e.g. "50 mm", "d0 * 2").
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, yet it says nothing about whether the named parameter must exist, what happens on an unknown name, whether units are validated, or whether a model rebuild is triggered. For a mutation tool with zero annotation coverage these are significant undisclosed traits.
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 in a single sentence and the argument notes are short and example-driven. The docstring scaffolding ('Args:') is slightly verbose 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?
An output schema exists so return values need not be explained, but the definition still omits critical context: whether the parameter must pre-exist versus add_parameter, error behavior, unit handling, and the optional instance selector. For a 3-parameter mutation tool with no annotations, that is a real gap.
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 only 33%, with just the optional 'instance' parameter documented in the schema itself. The description partly compensates by illustrating both 'name' ('d0', 'width') and 'expression' ('50 mm', 'd0 * 2'), which usefully conveys that expressions and units are accepted, but it never explains name resolution or the instance argument's relationship to list_instances.
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 ('Set a parameter value by name'), which is unambiguous on its own. However, it does nothing to distinguish itself from the sibling add_parameter tool, leaving the agent to infer whether this creates or only modifies existing parameters.
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 when-to-use guidance and never mentions add_parameter or get_parameters as alternatives. The examples show value syntax but not the conditions or preconditions (e.g. whether the parameter must already exist) under which this tool should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sheet_metal_ruleA
Activate a sheet metal rule by name (case-insensitive). Sets thickness, bend radius and unfold method together — prefer this over set_sheet_metal_thickness whenever a matching rule exists. Unknown names return the list of available rules.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does well: discloses case-insensitive matching, that three properties are changed atomically, and the error behavior for unknown names. It leaves unstated whether the change applies to the active document and whether a save is required, which is a real but modest gap 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?
Four short clauses, front-loaded with the action, then the effect, then the sibling preference, then the failure behavior. No filler and nothing redundant.
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 an output schema present, return values need not be explained, and the unknown-name behavior is documented. Missing only document scope and persistence details that would matter before mutating sheet metal settings.
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 50%: 'instance' is documented in the schema, but 'name' has no schema description. The description compensates by explaining that name is a rule name, that matching is case-insensitive, and that a miss returns a list of valid values — semantics an agent cannot get from the bare string type.
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 (activate) and resource (sheet metal rule) plus the exact effect (sets thickness, bend radius and unfold method together). It explicitly contrasts itself with set_sheet_metal_thickness, so an agent can distinguish it from the closest 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?
Gives an explicit preference rule: use this over set_sheet_metal_thickness whenever a matching rule exists. It also covers the failure path (unknown names return the available rules), which effectively routes the agent to list_sheet_metal_rules for discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sheet_metal_thicknessA
Override the active sheet metal style's thickness. Use after create_part(template="sheet_metal"). If the shop has named rules (see list_sheet_metal_rules), use set_sheet_metal_rule instead — changing only the thickness leaves the rule's bend radius and unfold method unmatched.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| thickness | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses a real side effect — that changing only thickness leaves the rule's bend radius and unfold method unmatched — but says nothing about persistence/undo, behavior when no active sheet metal style exists, or whether the change applies to the document or session.
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, zero filler, with the action and its precondition front-loaded before the alternative branch. Every clause conveys routing or consequence 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?
Output schema exists so return values need no explanation, and the workflow/sibling routing is well covered. But for a mutation tool with no annotations and an undocumented numeric parameter, missing units and missing error conditions (no active sheet metal style, non-sheet-metal part) leave real 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 only 50%: `instance` is documented in the schema, while `thickness` has no description at all. The tool description never mentions thickness units (default 0.8), valid range, or how it relates to the active style, so it does not compensate for the coverage 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 target ("Override the active sheet metal style's thickness") and explicitly contrasts with the sibling set_sheet_metal_rule. An agent knows exactly what changes and what doesn't.
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 precondition (after create_part(template="sheet_metal")), and names the alternative with the condition that selects it (named rules exist → use set_sheet_metal_rule), plus the reason the alternative is better. Explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_metal_cutA
Cut through the panel — depth = Thickness automatically (parametric!). Sketch must be on the panel face (not a work plane): a cut that removes no material is deleted and reported as an error. For holes at known world coordinates, cut_on_face is easier. One sketch with multiple closed shapes = one Cut feature with multiple holes.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it discloses the parametric coupling (depth tied to thickness), the failure mode (a cut that removes no material is deleted and reported as an error), and the feature-counting behavior for multi-shape sketches. Missing only operational context like whether it runs in a transaction or what permissions/state the document must be in.
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 its parametric behavior, then preconditions, then an alternative — a sensible order. The parenthetical 'parametric!' and multi-line formatting are slightly informal 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 two-parameter mutation tool with an output schema, the agent needs the preconditions, the failure behavior, and the sibling routing — all present. The one gap is the undocumented sketch_index semantics, which matters given the strict 'sketch must be on the panel face' rule.
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 only 50%; 'instance' is documented in-schema, but sketch_index has no description anywhere. The description does add meaning about which sketch is valid (one on the panel face) and that multiple closed shapes yield multiple holes, which partially compensates, but it never explains what sketch_index indexes or defaults to.
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 through the panel') and clarifies the scope (a single Cut feature with possibly multiple holes from one sketch). It implicitly contrasts with cut_on_face, though it never names the full sibling set it could be confused with. Clear enough to pick it out of the feature-creation family, but not maximally discriminating.
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 preconditions (sketch must be on the panel face, not a work plane) and an explicit alternative with its selection condition: 'For holes at known world coordinates, cut_on_face is easier.' It stops short of stating when this tool should never be used or what to do if the sketch isn't on a panel face.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_metal_faceB
Create a base Sheet Metal Face from a closed sketch profile. The first flat panel in a sheet metal part. Uses style's Thickness automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketch_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose one real behavior — thickness is taken automatically from the style, not passed as a parameter — and that the input must be a closed profile. It does not say what document state or rule is required, what happens if the style is unset, or whether the operation is undoable.
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 action and followed by the qualifying context. No filler, though the terseness leaves useful prerequisites unstated.
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?
An output schema exists so return values need not be described, but for an unannotated mutation tool the description omits key call preconditions — active document requirement, sheet metal rule being set, and how to obtain a valid sketch index. Adequate but clearly incomplete.
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 50%: `instance` is documented in the schema, but `sketch_index` has no description anywhere. The phrase 'from a closed sketch profile' hints at what `sketch_index` points to, but never says it is an index into the part's sketches or how to discover the correct 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 and resource ('Create a base Sheet Metal Face') plus the object type it belongs to ('the first flat panel in a sheet metal part'), which implicitly distinguishes it from downstream features like flange or sheet_metal_cut. It is clear, though it never names those alternatives outright.
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 first flat panel in a sheet metal part' implies this is the initial feature in a sequence, hinting at ordering. However, there is no explicit when-to-use/when-not guidance, no mention that a sheet metal rule/style should be set first, and no pointer to the sibling tools for subsequent features.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sketch_patternA
Many copies of one shape in one sketch — vent slots, hole grids, bolt circles — then one cut makes them all. mm.
Grid: the first copy at (x, y), rows x columns, pitch dx (between columns) and dy
(between rows). Circle: count copies on a circle of diameter pcd around (x, y), the
first at start_angle degrees; slots and rectangles turn with the circle.
Args: shape: circle (diameter), slot (length, width — overall), rectangle (length, width, corner_radius). angle: Turn every slot / rectangle by this many degrees (length along X at 0). sketch_index: Sketch number (0 = latest sketch).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| dx | No | ||
| dy | No | ||
| pcd | No | ||
| rows | No | ||
| angle | No | ||
| count | No | ||
| shape | No | circle | |
| width | No | ||
| length | No | ||
| columns | No | ||
| diameter | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| start_angle | No | ||
| sketch_index | No | ||
| corner_radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully discloses units in mm, the grid/circle layout behavior, angle semantics, and that slots/rectangles rotate with circular patterns, but it does not state side effects on existing sketch geometry, permissions, or whether prior entities are preserved.
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, then structured into Grid, Circle, and Args sections. Despite covering a 17-parameter tool, every section earns its place and avoids 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 complexity of a 17-parameter geometry tool, the description covers the essential shape types, layout modes, rotation semantics, and sketch targeting. An output schema exists, so return values need not be explained; the main remaining gap is the rule that chooses between grid and circular patterns.
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 only 6%, so the description must compensate, and it does: it defines x/y as the first copy position, dx/dy as pitch, rows/columns/count, pcd and start_angle for circular patterns, shape dimensions, angle, and sketch_index. It still leaves ambiguity about how Grid versus Circle mode is selected when both sets of parameters are present.
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 that this creates many copies of one sketch shape in a grid or circular layout and gives concrete examples such as vent slots, hole grids, and bolt circles. It is specific about the resource and operation, but it does not explicitly distinguish this from sibling tools such as circular_pattern or draw_slot.
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 explains the two layout modes, Grid and Circle, and gives practical examples of when each pattern style is useful. It provides clear usage context, but it does not explicitly say when to choose this tool over related siblings or 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.
statusA
Check connection status, active document info, and the execute_python namespace (age, names you defined — gone after a server restart or reload_api). If Inventor is busy or showing a dialog, says so instead.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 add real behavioral context: the namespace contents are volatile ('gone after a server restart or reload_api') and the call degrades gracefully when Inventor is busy or modal by reporting that state instead of hanging. It doesn't explicitly state read-only semantics or whether it blocks, 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 compact clauses, each carrying distinct information: what is read, what is volatile, and the fallback when Inventor is busy. No filler and the primary purpose is front-loaded.
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?
An output schema exists, so return structure needn't be explained, and the one optional param is schema-documented. The description covers purpose, volatility, and busy-state behavior; only minor gaps remain (e.g. what the namespace 'age' reflects, whether the call is non-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?
The single optional 'instance' parameter is fully documented in the schema (100% coverage, including the pointer to list_instances and the empty-string default). The description adds nothing about it, so the baseline 3 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 ('Check') and enumerates exactly what is inspected: connection status, active document info, and the execute_python namespace. The scope is clear without opening the schema, though it doesn't explicitly distinguish itself from overlapping siblings like list_instances, list_documents, or call_status.
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 — an agent can infer this is the tool to call before execute_python to see whether your namespace survived, but the description never says 'use this when' or names alternatives. The 'busy or showing a dialog' clause describes behavior, not a routing condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suppress_featureA
Suppress or unsuppress features (hide without deleting). Use list_features() to find indices.
Args: indices: Comma-separated feature indices (e.g. "3,4,5"). suppressed: True to suppress (hide), False to unsuppress (show).
| Name | Required | Description | Default |
|---|---|---|---|
| indices | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| suppressed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden and does disclose the key trait: the operation is non-destructive ('hide without deleting') and reversible via suppressed=False. It omits what happens to child/dependent features of a suppressed parent and any active-document precondition, so it is not exhaustive 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 core purpose and the non-destructive qualifier are front-loaded in the first sentence, the discovery hint follows, and the argument notes are compact with zero filler. Nothing repeats the schema verbatim beyond the useful format example.
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?
Return values need not be explained because an output schema exists, and index discovery plus boolean semantics are covered. The gap is the multi-instance case ('instance' with a default) and lack of any note about which document is affected, both of which an agent calling into several connected Inventor sessions would want.
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 only 33%, so the description must compensate, and it does for the two most important parameters: 'indices' is defined as a comma-separated string with a concrete example, and 'suppressed' is defined by both boolean outcomes. The third parameter (instance) is not mentioned in the description, though the schema documents 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+resource ('suppress or unsuppress features') and immediately distinguishes it from the closest sibling by qualifying 'hide without deleting', which separates it from delete_feature. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to call list_features() to obtain indices, which is the real prerequisite for correct invocation, and contrasts suppression with deletion. It stops short of stating when-not to use it (e.g. permanently removing a feature, or suppressing a parent with dependents).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
surface_to_solidA
Turn surfaces into solids — imported vendor models (x_t, IGES, STEP) that came in as faces with no volume, so no mass and no booleans. Stitches the part's visible surfaces, patches the holes left in the shell, and closes it into a solid; a shell that is already closed becomes a solid directly. Reports each step, the solids' volumes, and the open edges it couldn't close (coordinates in mm). Run it in the part that holds the surfaces.
Args: work_surfaces: "all", or WorkSurface numbers "1,2,5" to convert one group at a time (e.g. one component of a multi-part import). tolerance: Largest gap to stitch over, mm. patch_holes: Fill loops of open edges with a boundary patch.
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| tolerance | No | ||
| patch_holes | No | ||
| work_surfaces | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 three internal steps (stitch, patch holes, close), the fast path for already-closed shells, and the fact that it reports step-by-step results, volumes, and unclosable open edges in mm. It omits important mutation details — whether the original surfaces are consumed, whether the operation is undoable, and what happens when tolerance is too small to close a loop.
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 outcome and the reason, then the mechanics, then the reporting behavior, then an explicit per-argument block. No filler sentences, and the Args list is scannable rather than prose.
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?
An output schema exists, so return-value detail is a bonus rather than a requirement. For a geometry-mutating tool with zero annotations and four parameters, the description covers purpose, placement, and parameter meaning well; the residual gap is failure/undo semantics and whether the source surfaces survive the 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?
Schema coverage is only 25%, so the description must compensate and largely does: it explains that work_surfaces takes 'all' or a comma list like '1,2,5' for converting one group at a time, that tolerance is the largest gap to stitch over in mm, and that patch_holes fills loops of open edges with a boundary patch. The 'instance' parameter is not mentioned in the Args block, though its purpose is recoverable from the schema 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?
Uses a specific verb+resource ('Turn surfaces into solids') and immediately grounds it in the concrete scenario that motivates it: imported vendor models (x_t, IGES, STEP) that arrived as faces with no volume. An agent can tell this apart from modeling siblings like extrude or revolve because the input is an open shell, not a 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 trigger condition (imported models with no volume, so no mass and no booleans) and an operational placement rule: 'Run it in the part that holds the surfaces.' The work_surfaces guidance about converting one component of a multi-part import at a time is genuinely actionable. It stops short of naming an alternative tool or stating when not to run it, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweep_rotationA
Rotate occurrences about an axis in steps and report collisions at each angle — e.g. check a door opens 0–110° on its hinge axis without hitting the body, or a lock tongue turns freely. Positions are restored afterwards.
Args: moving: Comma-separated occurrences that rotate together (door + lock + door studs). axis_point: A point on the axis, "x,y,z" in mm (e.g. the hinge pin). axis_dir: Axis direction, e.g. "0,1,0". start / stop / step: Angles in degrees. against: Occurrences to test; empty = everything else. measure_to: Optional occurrence to report the minimum distance to at each angle.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | ||
| stop | No | ||
| start | No | ||
| moving | Yes | ||
| against | No | ||
| axis_dir | Yes | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| axis_point | Yes | ||
| measure_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclose key mutation behavior: it rotates geometry in steps and then restores positions. It also explains collision reporting and optional min-distance reporting. It omits cost/step-count implications and error behavior, keeping it below 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 and behavior are front-loaded in the opening sentence before the Args list, and every line of the Args block adds parameter meaning. Slightly verbose 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 9-parameter geometric-sweep tool with an output schema (so returns needn't be described), the description covers the rotation mechanics, restoration guarantee, and filtering semantics adequately. Missing only performance/step-count guidance and 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 only 11%, so the Args block does real work: it explains format ("x,y,z" in mm), semantics of moving vs against ('empty = everything else'), and measure_to's purpose. Only 'instance' is left to its schema description and defaults aren't restated, so not a full 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+resource (rotate occurrences about an axis in steps and report collisions at each angle) and grounds it with concrete examples (door hinge, lock tongue). This clearly distinguishes it from single-check siblings like check_interference.
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 concrete examples (checking a door opens 0–110°, a lock tongue turns freely) convey when the tool applies, and 'Positions are restored afterwards' signals safety of use. It doesn't explicitly name check_interference as the single-angle alternative, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transactionA
Wrap multiple operations in one undo unit with rollback.
Args: action: "begin" before a risky multi-step build, then "commit" on success or "abort" to roll back EVERYTHING since begin in one step. name: label shown in Inventor's undo list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | MCP batch | |
| action | No | begin | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 real work: it discloses that abort rolls back EVERYTHING since begin 'in one step', and that the name surfaces in Inventor's undo list. Undisclosed: nesting behavior, lifetime/scope of the transaction across tool calls, and whether it is bound to a document or instance.
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 one line, followed by a tight Args block with no filler. The docstring formatting is slightly atypical for a tool description but each element 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?
An output schema exists so return values need not be described, and the core begin/commit/abort lifecycle is covered. For a stateful mutation-control tool with zero annotations, though, it should say what scope the transaction spans (document vs. session, per instance) and what failure modes abort produces.
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 only 33% (only 'instance' is documented), so the description must compensate. It does explain the three meaningful values of 'action' and the purpose of 'name' (undo-list label), which is the highest-value addition. However it says nothing about 'instance' scope or which operations are actually captured, leaving partial 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 opening sentence names a concrete mechanism (an undo/rollback unit wrapping multiple operations), which is far more specific than the bare name 'transaction'. It does not explicitly contrast itself with any sibling, but no sibling in the list offers transactional/rollback semantics, so confusion risk is low.
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 per-action guidance: begin 'before a risky multi-step build', then commit on success or abort on failure. That is genuine when-to-use instruction tied to each action value, rather than vague framing. It stops short of stating prerequisites (e.g. whether a transaction must be started before mutating tools, or what happens if begin is called twice).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_imageA
Look at the model: pictures of the active document, returned as images you can see. Use it to check your work — a flange on the wrong side, a door opening the wrong way, a part floating off the frame — which the numbers alone don't show.
Args: views: Comma-separated: iso, iso_left, iso_bottom, front, back, top, bottom, left, right, current (the user's view). E.g. "iso,front,top". width, height: Pixels per picture (keep them modest — each picture costs tokens). background: "inventor" (its gradient) or "white". focus: Assembly component name — zoom to it, keeping each view's direction. sketches: Show sketches and work features too (hidden by default; restored after). up: "y" = Inventor's own view names (its default templates have Y up); "z" for a model built with Z up (frames, buildings): front looks along +Y, top down -Z.
| Name | Required | Description | Default |
|---|---|---|---|
| up | No | y | |
| focus | No | ||
| views | No | iso | |
| width | No | ||
| height | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| sketches | No | ||
| background | No | inventor |
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 images cost tokens, that sketches are hidden by default and restored afterward, and that focus zooms while preserving view direction. It does not discuss permissions or failure modes, but for a local CAD viewing tool 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?
The description is front-loaded with purpose and usage, then organizes parameter guidance under Args. It is appropriately sized for an eight-parameter visual tool, though a few phrases 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?
For a complex visual tool with no annotations and no output schema, the description explains what is returned, why to use it, token cost, hidden-sketch behavior, and most parameter meanings. The only notable gap is that it does not mention the instance parameter, though the schema already describes that field.
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 only 13%, so the description must compensate, and it does: it documents view values, width/height token-cost tradeoff, background options, focus behavior, sketch visibility restoration, and the meaning of the up axis. It adds substantial meaning beyond the sparse 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: it returns pictures of the active document as viewable images. It also distinguishes itself from numeric inspection tools by explaining that it shows geometry issues the numbers alone do not reveal.
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 clear use case, checking visual correctness such as flange orientation or parts floating off-frame, and contrasts this with numerical tools. It does not explicitly name a sibling alternative or when-not to use it, so it falls short of the top score.
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.
82 tool updates
v0.8.0- First observed
activate_document - First observed
add_parameter - First observed
assembly_faces - First observed
assembly_info - First observed
bom - First observed
call_status - First observed
cancel_call - First observed
chamfer - First observed
check_interference - First observed
check_sketch - First observed
circular_pattern - First observed
close_unsaved - First observed
connect - First observed
constrain - First observed
constrain_faces - First observed
constrain_insert - First observed
content_center - First observed
corner_round - First observed
create_assembly - First observed
create_part - First observed
create_sketch - First observed
cut_on_face - First observed
delete_constraint - First observed
delete_feature - First observed
delete_occurrence - First observed
draw_arc - First observed
draw_circle - First observed
draw_closed_profile - First observed
draw_line - First observed
draw_polygon - First observed
draw_rectangle - First observed
draw_slot - First observed
execute_python - First observed
export_document - First observed
extrude - First observed
fillet - First observed
find_edge - First observed
find_face - First observed
flange - First observed
flat_pattern - First observed
frame_members - First observed
get_parameters - First observed
ground_occurrence - First observed
hole - First observed
hole_linear - First observed
import_step - First observed
inspect - First observed
list_component_edges - First observed
list_constraints - First observed
list_documents - First observed
list_edges - First observed
list_faces - First observed
list_features - First observed
list_instances - First observed
list_materials - First observed
list_occurrences - First observed
list_sheet_metal_rules - First observed
load_library - First observed
make_drawing - First observed
material_report - First observed
measure_distance - First observed
offset_profile - First observed
place_component - First observed
place_many - First observed
project_edges - First observed
properties - First observed
reload_api - First observed
revolve - First observed
save_document - First observed
set_material - First observed
set_parameter - First observed
set_sheet_metal_rule - First observed
set_sheet_metal_thickness - First observed
sheet_metal_cut - First observed
sheet_metal_face - First observed
sketch_pattern - First observed
status - First observed
suppress_feature - First observed
surface_to_solid - First observed
sweep_rotation - First observed
transaction - First observed
view_image
TDQS
Scored across 82 tools
Tool categories overlap heavily: face location is split across list_faces/find_face/assembly_faces, edge lookup across list_edges/find_edge/list_component_edges, and hole creation across hole/hole_linear/cut_on_face/sheet_metal_cut. Descriptions usually clarify when to use which, but the number of near-neighbors makes misselection plausible.
All names are lower_snake_case and readable, but the convention is mixed: many use verb_noun (create_part, list_faces, draw_line) while many are noun-only (bom, properties, status, extrude, hole, flange, flat_pattern). The inconsistency is tolerable but makes the set less predictable.
82 tools is far above the practical range for an agent-facing MCP server; even though CAD is broad, numerous niche tools (frame_members, sweep_rotation, content_center, surface_to_solid) add selection load. Consolidation into tool families or a few dispatcher tools would improve usability.
The surface covers create/edit/assemble/export/drawing/BOM/material/document-management and includes an execute_python escape hatch, so most CAD workflows are supported. However, there is no explicit open_document or close_document tool and some work-feature operations rely on execute_python, leaving lifecycle gaps.
Maintenance
Related MCP Connectors
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
CAD in ChatGPT and Claude: editable parts, STEP/STL/drawings, in-chat 3D, automatic checks.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language 3D modeling in Fusion 360 through an MCP server that translates user commands into Fusion 360 API calls. Supports creating, editing, and managing 3D objects, executing Python code, and capturing model views through conversational interactions.1MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for parametric 3D modeling in Autodesk Inventor, enabling natural language control of sketching, extrusion, hole features, and sheet metal operations.47MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to control Autodesk Inventor via COM automation for part modeling, assembly constraints, drawing views, and more.4-
- AlicenseNot gradedqualityCmaintenanceEnables natural-language control of Autodesk Inventor to create parametric parts, sketches, holes, and sheet-metal features, and to inspect, save, or export models.MIT