inventor-mcp-server
Drive Autodesk Inventor from an MCP client to build, inspect, assemble, document, and export parametric CAD models.
Connect to, start, and manage multiple Inventor instances/projects; work with open documents and save safely.
Create parts and sketches with lines, arcs, rectangles, circles, polygons, slots, closed profiles, patterns, offsets, and projected edges.
Model 3D features: extrude, revolve, holes/tapped holes/counterbores, fillets, chamfers, and circular patterns.
Set parameters, materials, iProperties, mass overrides, and sheet-metal rules/thickness.
Use sheet-metal workflows: base face, flanges, cuts, corner rounds, flat patterns, and DXF/DWG output.
Inspect models: volume/bbox/features, list/find edges and faces, check sketches, and view rendered images.
Build assemblies: place/import components, ground them, constrain origins/faces/edges with mate/flush/angle/insert, and manage constraints.
Validate assemblies: interference checks, distance measurement, and swept rotation collision checks.
Use Content Center families/sizes, custom-length structural members, frame members, bulk placement, and STEP import.
Convert surfaces to solids, report materials, generate BOM CSVs, create PDF drawings, and export STEP/STL/SAT/IGES.
Run arbitrary Python against the live COM connection, load reusable libraries, hot-reload the API, and use undo transactions.
Monitor or cancel long-running calls and coordinate multiple connected Inventor instances.
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
57 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 stepOne tool per job — 57 tools with verb_noun names:
find_faces/find_edgeswork in a part and at any depth of an assembly,constraintakes origin geometry, faces and edges, andmanage_*tools group what you do to documents, occurrences, features, parameters, constraints, materials and sheet metal rulesProtects your files —
save_documentsaves only the active document unless asked, never a library or Content Center file; add your own paths withINVENTOR_MCP_PROTECTEDor~/.inventor-mcp/protected.txt. Deleting a component says what depends on it first, and reports what movedNever 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);manage_call(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 —
export_flat_patterngives the flat size and writes the DXF/DWG for the laser (contour, holes and bend lines on their own layers);create_drawingmakes a PDF drawing (base + projected + iso views, overall dimensions, or the flat pattern dimensioned);export_bomlists the assembly's parts with quantity, part number, description, material and mass (CSV for Excel / ERP);edit_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.draw_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 —
capture_viewreturns pictures of the model (iso / front / top / … , several in one call, zoom to components, isolate them) 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 —
add_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 —
convert_surfaces_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 —
manage_materialsgives every matching part of an assembly a material (Content Center parts left alone),manage_materialsshows material and mass per part and flags Generic parts, surface-only vendor models and parts with no mass;edit_properties(mass_kg)overrides a massNested assemblies —
find_facesfinds faces of components inside sub-assemblies (type, normal, position, diameter) in top coordinates;constrainconstrains 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 —
use_content_centerbrowses categories → families → sizes and makes members, custom length included (a 1500 mm DIN 1026-1 U 100 in one call);place_componentsplaces 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;manage_documentsclears 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 andmanage_call, 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
57 toolsadd_circular_patternA
Create a circular (rotational) pattern of a feature around a work axis. Ideal for bolt holes around a flange — one hole + add_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?
No annotations are provided, so the description carries the full burden. It does disclose real behavioral semantics the schema lacks — that `count` includes the original instance and that `angle` is a total span rather than a per-instance increment — which prevents off-by-one patterning errors. It says nothing about permissions, whether the pattern is reversible, or the relationship to the sibling `transaction` tool, which are significant gaps for a model-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action in one sentence, follows with a motivating example, then a tight Args block. Every line carries usable information; the minor restatement of defaults is inherent to docstring formatting and costs nothing.
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 meaningful parameters receive semantic treatment. For a single-purpose feature-creation call this is complete enough to invoke correctly on the first try, with only transaction/undo behavior left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just `instance`), so the description must compensate and largely does: `feature_index` is sourced from `list_features()`, `count` is defined as total including the original, `angle` as total span with 360 meaning full circle, and `axis` constrained to X/Y/Z with a flange-oriented default. 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?
Uses a specific verb and resource ('Create a circular (rotational) pattern of a feature') and scopes it to a work axis, so the action is unambiguous. It does not, however, differentiate itself from the sibling `draw_pattern`, which an agent could plausibly reach for instead — that differentiation is the only missing piece.
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 bolt-hole/flange example gives a concrete usage context and even a rationale ('one hole + add_circular_pattern instead of 8 holes'), which is more than bare implication. But there are no exclusion conditions and no mention of when `draw_pattern` or manual duplication would be the right choice, so the agent must infer the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_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 exist, so the description carries the full burden. It does disclose a non-obvious behavior — the round is carried into the flat pattern — and that the target is sheet metal corner edges. It omits prerequisites (must the document be a sheet metal part?), error behavior, and reversibility, 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 purpose and usage in two short lines, then a compact Args block. No wasted sentences, though the Args structure largely restates schema fields.
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, the description never says how to obtain valid edge indices (the sibling find_edges) nor whether a flat-pattern-bearing sheet metal document is required, which is the main practical blocker for a correct call.
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 for the two undocumented parameters: it explains edge_indices as comma-separated short edges through the thickness at corners and gives units (mm) for radius. The 'through the thickness' phrasing adds real meaning beyond the schema and helps disambiguate which edges qualify.
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 gives a specific verb-plus-resource ('Round sharp sheet metal corners') and names the underlying feature (Corner Round) plus its flat-pattern behavior. It is clearly distinct from generic modeling siblings, though it never names its closest alternatives (fillet, chamfer) to draw the boundary 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?
One positive usage cue is given: 'Use on exposed corners people handle, e.g. mounting plate tabs.' That is genuinely helpful but purely inclusive — there is no when-not guidance and no pointer to fillet/chamfer/find_edges as the route for other geometry, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_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_edges 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 burden and discloses key behavior: proper bend radius, Flat Pattern support, auto-mitering semantics, and the bend-direction rule based on the edge's face side. It does not describe document prerequisites or failure behavior, but the major geometric side effects are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and critical usage constraints, then uses a compact Args block. Although it repeats schema defaults, those repetitions are paired with units and semantic meaning, so they earn their place for a seven-parameter CAD feature.
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 description need not explain return values. It covers the operation, edge batching, bend direction, and most parameter semantics, but omits the instance parameter and any document/sheet-metal-rule prerequisites, leaving minor operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14%, but the description compensates by documenting six of seven parameters: edge_indices format and find_edges usage, distance in mm, angle in degrees, auto_miter, miter_gap expression semantics, and height_datum options. The remaining instance parameter 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") and scope (one or more edges), and explicitly distinguishes it from Extrude. It also explains the sheet-metal-specific behavior (Flat Pattern, bend radius, thickness tie), so an agent can tell what kind of feature this creates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names Extrude as the non-sheet-metal alternative and gives a concrete batching rule: put all loop edges in one call so corners auto-miter, because separate calls leave open corners. It also points to find_edges for edge discovery. It does not explicitly state when not to use this tool, but the routing context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_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 capture_view.
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 use_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, the description carries the full burden and does well: it discloses that new part files are created (one per profile/length, reused across members), where they go, and that the return includes placements plus a saw-cut list. It does not cover failure modes or transactional/undo behavior, 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?
Purpose leads, then behavior, then a clearly delimited Args block, so it is well front-loaded. It is dense and largely earns its length, though the profile-family examples and roll/anchor asides could be trimmed slightly without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex geometry-creating tool with an output schema, the description supplies units, defaults, per-member overrides, file side effects, and verification steps. Nothing an agent needs in order to call it correctly on the first attempt is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17%, but the description compensates thoroughly: it documents the members array shape, units (mm), and optional per-member keys (family, size, category, roll, anchor, extend) with semantics and examples. The one undocumented parameter, instance, is covered by its own schema description, so nothing is left ambiguous.
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: builds steel frame members as Content Center custom-length profiles along skeleton lines in the active assembly. It explicitly distinguishes itself from place_components and use_content_center by explaining that this is what Frame Generator does and that Frame Generator has no API.
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?
Points the agent to use_content_center for the profile defaults and to capture_view to verify placements after the call. It gives clear operating context (active assembly, skeleton lines) but does not explicitly exclude alternatives such as place_components for non-structural component placement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_holeA
Add a native hole feature to the active part (drilled, tapped ISO metric 6H, counterbored). Fails — instead of leaving an empty feature — if no material was removed. Placed one of three ways:
point+direction: absolute model coordinates, e.g. point=[30,0,12], direction=[0,0,-1] (the way the drill travels). Safest: no sketch axes involved.linear: dimensioned from two edges of a face, associative — preferred for fastener holes: {"face_axis": "Z", "face_value": 20, "ref1_axis": "X", "ref1_value": 0, "dist1": 10, "ref2_axis": "Y", "ref2_value": 0, "dist2": 15}.x,y: on the XY plane, drilling into +Z.
Args: diameter: mm (thread nominal if tapped, e.g. 5 for M5). depth: mm; 0 = through all. tapped: Thread it. pitch: mm; 0 = standard coarse. cbore_diameter, cbore_depth: Counterbore seat (with linear), e.g. 10 and 5.5 for M5.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| depth | No | ||
| pitch | No | ||
| point | No | ||
| linear | No | ||
| tapped | No | ||
| diameter | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| direction | No | ||
| 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?
With no annotations provided, the description carries the burden and discloses meaningful behavior: it adds to the active part, fails rather than leaving an empty feature when no material is removed, and clarifies coordinate and associativity semantics for each placement mode. These details go well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and failure behavior, then organizes placement modes and arguments into scannable sections. It is long but every section adds needed guidance for a 12-parameter modeling 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?
Given a complex mutation tool with no annotations, low schema description coverage, and 12 parameters, the description supplies the missing operational context: active-part scope, failure behavior, placement alternatives, and argument meaning. Output semantics need not be repeated because an output schema exists.
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 8%, so the description must compensate, and it largely does: it explains diameter, depth, tapped, pitch, counterbore fields, x/y, point/direction, and the linear object with an example. Only instance is omitted from the description, and that parameter already has schema-level explanation.
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: adds a native hole feature to the active part, including drilled, tapped, and counterbored variants. It is clear what the tool does, but it does not explicitly distinguish this tool from related modeling siblings such as sheet_metal_cut or extrude.
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 clear contextual guidance for choosing among three placement modes, including 'Safest' for point+direction and 'preferred for fastener holes' for linear placement. It does not explicitly state when not to use this tool or name alternative tools for non-hole material removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_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 behavioral burden, and it does add one valuable disclosure: thickness is taken automatically from the style rather than from a parameter. It says nothing about required preconditions (valid sheet metal style, closed non-self-intersecting profile) or failure behavior, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and its scope. The clause about automatic thickness could be folded into the first sentence, 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?
An output schema exists, so return values need not be explained, and the two-parameter surface is small. Still, an agent lacks the preconditions for a successful call (sheet metal environment, closed profile, style availability) and any hint of what `sketch_index` addresses.
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's mention of a "closed sketch profile" gestures at the sketch input but never explains that the index selects a sketch from the model tree, so it fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a base Sheet Metal Face") and clarifies it is the first flat panel of a sheet metal part, which implicitly separates it from follow-on features like add_flange or sheet_metal_cut. It does not name any sibling explicitly, so it lands just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 when to reach for this tool (the initial face, before flanges/cuts), but the description never states prerequisites such as a sheet metal style being active or a closed profile existing, nor does it name alternatives. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_viewA
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". fit_to: Assembly component paths, ","-separated — zoom to them, keeping each view's direction. isolate: Component paths, ","-separated — show only these (and what is inside them); the others are hidden for the picture. For details buried in an assembly. 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 | |
| views | No | iso | |
| width | No | ||
| fit_to | No | ||
| height | No | ||
| isolate | 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 present, the description carries the burden and does real work: it discloses token cost per image, that sketches/work features are hidden by default and "restored after", and that isolate hides other components only "for the picture" — i.e. these are temporary view-state changes, not persistent edits. It does not say whether the document is left modified or whether the view orientation is restored.
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 the return type are front-loaded in the first line, the use-case follows, then args — no wasted sentences. The failure-mode examples (wrong-side flange, floating part) look decorative but directly explain why images beat numbers, so they earn their 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?
For a 9-parameter, no-annotation, no-output-schema tool, this is nearly complete: every parameter except `instance` is explained, cost and temporary-state behavior are disclosed, and the return type (images) is stated. The one real gap is that it does not say how multiple requested views map to returned images (count/order), which matters when batching iso,front,top.
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% (just `instance`), so the description must compensate and does: it enumerates the valid `views` tokens with an example, explains `fit_to` vs `isolate` as zoom-to vs show-only with the inside-components behavior, clarifies `up` semantics (Y-up template default vs Z-up models, with the axis each named view faces), and gives unit/cost meaning for width/height. Only `instance` is uncovered, and 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 and resource — renders pictures of the active document returned as viewable images — and frames it against numeric inspection ("which the numbers alone don't show"), which separates it from inspect_model/measure_distance/check_interference. An agent knows immediately what it gets back: images, not data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cues (verify a flange orientation, a door swing, a part floating off the frame) and a cost warning ("keep them modest — each picture costs tokens"). It never names an alternative tool or states when not to call 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.
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: full paths of both, volume and bounding box of each. Touching faces are not reported. Intended overlaps (gasket compression, thread in thread) show up too — read the volume and bbox.
Args: set_a: Comma-separated names, paths or patterns: "DOOR:1", "Sub:1/Part:2", "BRACKET". set_b: The same, to test against; empty = everything else. ignore_fasteners: Set aside overlaps with small Content Center members (bolts, nuts, washers, under 150 mm) — threads overlap by design. They are counted.
| 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. | |
| ignore_fasteners | 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 it delivers meaningful behavior: touching contact is excluded, intentional overlaps are still reported, and fastener overlaps are set aside but still counted. It doesn't state whether the tool is read-only or what cost/latency a full-assembly sweep incurs, 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?
The core capability and its caveats are front-loaded in the first two sentences, then per-argument detail follows. Slightly verbose with docstring artifacts (stray backslashes, empty lines) but no sentence is genuinely 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 needn't be spelled out, and the description still points at volume/bbox as the interpretation key. For a 4-param, unannotated query tool it covers the decision-relevant behavior; only the `instance` selector and any performance/read-only framing are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (just `instance`), so the description must compensate — and it does, giving concrete syntax for set_a/set_b ('DOOR:1', 'Sub:1/Part:2', '*BRACKET*') and the 150 mm threshold semantics of ignore_fasteners. `instance` is left entirely to the schema, a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('check overlap between occurrences of the active assembly') and even names what it returns (full paths, volume, bounding box). No sibling in the list does interference checking, so an agent can route to it unambiguously.
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 how to interpret results ('intended overlaps ... show up too — read the volume and bbox') and the key exclusion rule (touching faces not reported), plus 'empty = everything else' for set_b. It does not explicitly contrast with alternatives like measure_distance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
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, at any depth — by origin geometry, faces or circular edges. Prefer origin geometry: it survives part edits; face and edge numbers change with the topology.
References: "Part:1#XY" / "#XZ" / "#YZ" / "#X" / "#Y" / "#Z" / "#ORIGIN" (origin geometry), "Sub:1/Part:1#F12" (face, from find_faces), "Sub:1/Bolt:1#E4" (edge, from find_edges). A list index works as the component: "2#XY".
Says which OTHER components the constraint moved — one can drag parts you didn't mean to touch.
Args: a, b: References; a is the one meant to move. kind: "mate" (faces against each other, axes in line), "flush" (faces the same way), "angle", or "insert" (two circular edges: a bolt into a hole). offset: mm for mate / flush / insert. 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. axes_opposed: For insert: True = the components face each other (normal bolt / hole case).
| 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. | |
| 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 carries the full load and does well: it warns that a constraint 'can drag parts you didn't mean to touch' and that the tool reports which components moved, and it discloses the offset-sign retry behavior ('tried with the other sign'). It doesn't say whether constraints are persistent/undoable or what a failure looks like, so not 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 insight (prefer origin geometry) is front-loaded and every section — References, Says, Args — adds information. It's dense and useful rather than padded, though the reference-format line is a wall of syntax that could be organized more scannably.
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 covers reference syntax, kind semantics, both dimensional parameters, the a_at landing check, and the axes_opposed insert case. An output schema exists, so the return-reporting note is a bonus rather than a 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 largely does, explaining a vs b's roles, all four `kind` values, units for `offset` and `angle`, and giving a concrete `a_at` example ({"Z": 182.5}). The only undocumented parameter is `instance`, which the schema itself covers via its own description, so the gap is minor but prevents a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Constrain two components' — plus the supported reference types (origin geometry, faces, circular edges) and depth-independence. It's clear what it does, but it never distinguishes itself from the sibling `manage_constraints`, leaving the agent to guess whether that tool lists/edits/deletes constraints while this one creates 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?
Gives real selection guidance: 'Prefer origin geometry: it survives part edits; face and edge numbers change with the topology,' which is exactly the kind of tradeoff an agent needs. It also implies the workflow by naming `find_faces` and `find_edges` as the source of face/edge references. Falls short of 5 because it doesn't say when *not* to use this tool or how it differs from `manage_constraints`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_surfaces_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 disclosure burden and does reasonably well: it explains the staged behavior (stitch → patch → close), the closed-shell shortcut, that it reports each step plus resulting volumes, and that it surfaces open edges it could not close with mm coordinates. It omits what happens to the original surface bodies after conversion (replaced, consumed, or left behind), which matters for a shell-closing 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 the outcome and scenario before any mechanics, and the Args block is scannable. A few phrases ('so no mass and no booleans') are color rather than instruction, and the Args formatting is slightly verbose, but nothing is redundant or misleading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 optional params, 25% schema coverage, no annotations, and an output schema that already covers return values, the description supplies exactly what's missing: the failure mode (unclosed open edges), unit conventions, grouping strategy, and the run-context prerequisite. An agent can invoke this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only 'instance' is documented), but the Args block compensates strongly: work_surfaces accepts 'all' or numbered groups '1,2,5' with a rationale, tolerance is defined as the largest gap to stitch in mm, and patch_holes is explained as filling loops of open edges with a boundary patch. Only 'instance' is left to the schema, so the description adds real meaning over the raw property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Turn surfaces into solids') and immediately grounds it in the real scenario: imported vendor models (x_t, IGES, STEP) arriving as faces with no volume, mass, or boolean capability. It also enumerates the concrete operations (stitch, patch holes, close shell) so an agent can distinguish this from import_step or generic feature tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: 'Run it in the part that holds the surfaces' and converts 'one group at a time (e.g. one component of a multi-part import)'. That establishes the prerequisite and a sensible batching strategy, but it never names an alternative sibling (e.g. import_step for fresh imports) or states 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.
create_documentA
Create a new document — a part with its material and part number right away, so no part is left "Generic" for the BOM and the mass.
Args: kind: "part", "sheet_metal" or "assembly". name: Display name (optional). template: "metric" (mm, default), "english" (inches), or a full path to a template file. material: Parts: from the library, e.g. "Steel, Mild". part_number, description: Parts: iProperties for the BOM.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | part | |
| 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?
With no annotations, the description carries the full behavioral burden. It discloses that material and part number are populated immediately and explains template/metric/english choices, but it does not state whether the document is saved, opened, or requires an active connection, nor does it describe permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and rationale, then uses a clean Args list for parameter details. 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 output schema exists, and the description documents most parameters and the main use case well. However, for a creation tool with no annotations, it should say more about persistence, side effects, or connection requirements.
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 compensates strongly: it defines allowed kind values, template options ('metric', 'english', or a template path), material library syntax, and the meaning of part_number and description as BOM iProperties. The one undocumented parameter, instance, already has a 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?
The description uses a specific verb and resource: 'Create a new document,' and clarifies that it creates a part, sheet metal part, or assembly with material and part number populated. It does not explicitly distinguish itself from siblings like create_drawing or manage_documents, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a rationale ('so no part is left Generic for the BOM and the mass') but does not state when to use this tool versus alternatives such as manage_documents, create_drawing, or save_document. There are no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_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 full burden and mostly succeeds: it discloses that files are written to disk, that the drawing is closed unless drawing_path is supplied (a real persistence side effect), that the title block is auto-filled from properties(), and that retrieved model dimensions and overall dimensions may need checking on assemblies. It does not mention overwrite behavior or required 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 deliverable, then a compact Args block that maps one-to-one to parameters. Slightly dense in the layout/dimension sentence, but 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 7-parameter file-producing tool with no annotations, this covers output location, persistence, view composition and template behavior well; an output schema exists, so return values need not be explained. Minor gaps remain around overwriting an existing pdf_path and error behavior for invalid view names.
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%, so the description must compensate and does: views ordering and placement semantics, template naming and .idw path form, scale encoding (0 = fit, 0.2 = 1:5), flat = single-view flat pattern, and drawing_path persistence are all explained. Only instance is left to the schema, which documents it 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?
Opens with a specific verb, resource and deliverable: a 2D drawing of the active part/assembly saved to disk and exported as PDF. This is clearly distinguishable from sibling tools such as capture_view (screenshots) or export_document (generic export).
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 ("PDF for the shop floor", flat-pattern mode for sheet metal parts) rather than stated as when-to-use versus siblings like capture_view or export_document. The closing instruction to read the PDF back to check layout is useful post-call guidance but is not an alternative-selection rule.
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.
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_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 provided, the description carries the full burden and does add useful behavioral context: units are mm, coordinates define the first copy, dx/dy are pitches, pcd/count/start_angle control circular layouts, and slots/rectangles rotate with the circle. It still omits important operational details such as whether the sketch must already exist, which document is affected, and what errors or side effects occur on invalid input.
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 well-structured for a 17-parameter tool: a front-loaded purpose statement, separate Grid and Circle explanations, and an Args section for shape-specific semantics. Every section contributes useful information without excessive 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?
Given the tool's complexity, 17 parameters, and the presence of an output schema, the description is quite complete: it covers pattern modes and nearly all parameter meanings. It could be stronger by explicitly stating prerequisites, active-document behavior, and how it differs from feature-level patterning siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 6%, so the description must compensate, and it largely does. It explains x/y placement, dx/dy pitch, rows/columns, pcd/count/start_angle for circular patterns, the shape-dependent meanings of diameter/length/width/corner_radius, angle behavior, and sketch_index. The remaining instance parameter 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?
The description clearly states that this tool places many copies of one shape in a sketch, with concrete examples such as vent slots, hole grids, and bolt circles. It also distinguishes grid patterns from circular patterns. It does not explicitly differentiate itself from siblings like add_circular_pattern or draw_slot, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through examples and the split between Grid and Circle modes, which helps an agent understand intended scenarios. However, the description does not explicitly say when to use this tool instead of draw_slot, draw_rectangle, add_circular_pattern, or other siblings, nor does it list exclusions or prerequisites.
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.
edit_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"; manage_materials(action='list')). mass_kg: Override the mass — for vendor models made of surfaces, which have no volume (a 1.23 kg motor showed 0.23 kg). manage_materials 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 useful behavior — read-or-write semantics, unknown keys becoming custom properties, and the mass override rationale — but does not clarify whether writes replace or merge existing values, permissions required, or side effects beyond feeding the BOM/title block.
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 read/set purpose and property list, then moves into structured Args. It is mostly efficient, though 'manage_materials lists them' is repeated across the material and mass_kg entries.
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. The description covers the main call semantics, custom-property behavior, material sourcing, and mass override; the main remaining gap is mutation/overwrite behavior, which matters for a 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 description coverage is only 25%, so the description must compensate. It provides an example values object, explains that unknown keys become custom properties, specifies material naming and how to list materials, and explains mass_kg override behavior; only 'instance' is left entirely 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?
The description states a specific verb pair ('Read — and optionally set') and resource ('active document's iProperties') and enumerates the properties affected. It does not explicitly distinguish itself from siblings like manage_parameters or manage_documents, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: these properties feed the BOM and drawing title block, and it names manage_materials for listing material names. The mass_kg override is tied to a concrete scenario (surface-only vendor models). It lacks explicit when-not guidance or direct comparison to other property/parameter tools.
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 manage_call shows while a long job runs cancelled() — True once manage_call(action='cancel') asked to stop: poll it in long loops Variables you assign persist between calls until the server restarts or reload_api runs — get_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. Save with the save_document tool or inv.save_document(): a plain doc.SaveAs also writes every dirty dependent, protected and Content Center files included. A call longer than the wait limit keeps running; follow it with manage_call(wait_seconds=30), which shows the prints so far; manage_call(action='cancel') 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 manage_call(action='cancel') 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 burden and does so thoroughly: namespace persistence, per-instance namespaces, SilentOperation, the SaveAs side-effects on dependent/protected/Content Center files, late-binding rules, cancellation grace period, and return of stdout/stderr or traceback with named COM errors.
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?
Length is justified by tool complexity and it is front-loaded with purpose followed by a structured pre-bound objects list. Dense but nearly every line earns its place; minor cognitive load from the compact multi-item bullet line ('doc — ... comp — ...').
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 powerful code-execution tool with an output schema (so return shape is covered structurally), the description still adds return/error detail, unit gotchas (cm vs mm), and save semantics. An agent has everything needed to call it correctly and safely.
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` is documented in-schema), and the description compensates well by explaining undo_on_error (rollback of half-built sketches/work planes) and timeout (cancelled() semantics and CANCEL_GRACE). `code` is only described minimally as 'Python source', leaving a small 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 ('Execute Python code against the live Inventor connection') and the pre-bound object list makes clear this is a general escape-hatch distinct from the many specialized sibling tools (manage_features, extrude, fillet, etc.). An agent can tell exactly what this does versus its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides rich operational context (cancellation flow, persistence, helper loading via load_library/startup.py) but never explicitly states when to reach for this over a specialized sibling like extrude or manage_features. Usage is implied by the escape-hatch nature rather than stated as a rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_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, the description carries the disclosure burden and does add useful behavior: the CSV is UTF-8, ';'-separated, and is written as a side effect when path is supplied. It does not say whether an existing file is overwritten, what happens when no assembly is active, or that the operation is otherwise read-only, leaving gaps for a tool with a write side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is exported, then purpose, then per-argument notes; no filler sentences. The column list is long but each item is informative, and the args block is compact.
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 shape need not be explained, and the argument semantics are largely covered. What remains missing for an export tool with no annotations is failure behavior (no active document, bad path) and differentiation from the other export tools, which the description never addresses.
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 by defining both undocumented parameters: view's two modes ('parts_only' flattening with total quantity vs 'structured' indented sub-assemblies) and path's file format and encoding. Only the `instance` parameter's meaning lives solely in the schema, and that is documented there.
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 ('Bill of materials of the active assembly') and enumerates the exported columns, so the agent knows exactly what comes out. It does not name the sibling export tools (export_document, export_flat_pattern) it must be distinguished from, 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?
Gives an intended consumer ('For purchasing / ERP') and a prerequisite ('set part numbers and descriptions first'), which is real usage guidance. However, the prerequisite names 'properties()', a function that does not appear among the siblings (edit_properties does), and no alternative export tool is mentioned for when a full document or flat pattern is wanted.
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.
export_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 behavioral burden and does disclose important traits: it creates a flat pattern if none exists, explains the output layers, and notes what is omitted (tangent lines, sketches). However, it does not state whether an existing output file is overwritten, what permissions are required, 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 description is front-loaded with the main purpose and output, then adds layer details and an Args section. It is appropriately sized for an export tool, with no wasted sentences, though the Args section partly repeats information already stated.
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, and it sufficiently covers the core export behavior, layer mapping, side effect of creating a flat pattern, and parameter usage. Minor gaps around overwrite behavior and the instance parameter are acceptable because instance is documented 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 description coverage is only 25%, so the description must compensate, and it does for three of four parameters: path behavior when empty, format as DXF or DWG, and bend_lines controlling bend-line layers. The remaining instance parameter 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?
The description states a specific verb and resource: exporting the flat pattern of the active sheet metal part, including flat size, thickness, and bend count. It also specifies the DXF/DWG output and layer mapping, which clearly distinguishes it from sibling export tools such as export_document and export_bom.
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: an empty path reports only the flat size, while providing a path produces a DXF/DWG file. It also explains that a flat pattern is created if the part lacks one. It does not name alternative tools or exclusions, but the conditions for using this tool are clear.
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"). find_edges lists them.
| 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 burden, and for a model-mutating operation it discloses little: no statement that it modifies geometry irreversibly, no failure/error behavior, and no mention that it acts on the currently active document unless instance selects otherwise. Only the radius unit is added.
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 sentence is front-loaded and the args block is compact, with no wasted prose. Minor redundancy in restating radius after the opening line mentions mm, but nothing that costs comprehension.
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 no explanation, and the edge-discovery path is covered. What's missing is the surrounding context for a mutating modeling operation: target body/document selection, preconditions, and what happens when an edge index is invalid.
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 described in the schema), but the description compensates well for the other two: it gives the radius unit in mm and specifies the edge_indices format with an example ('1,2,3') plus a pointer to find_edges for discovering values. This is meaningful added meaning beyond 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 ('Add fillet (rounded edge) to edges of the solid body') with units, and the parenthetical 'rounded edge' implicitly separates it from the sibling chamfer. It stops short of naming chamfer explicitly, so an agent must infer the 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 routes the agent to find_edges for obtaining edge indices, which is genuinely useful, but says nothing about when to choose fillet over chamfer, or what preconditions must hold (an active document, an existing solid body, edges that can be rounded).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_edgesA
Find edges, filtered by position or type. Without path: the active part (the index
feeds add_flange, fillet, chamfer). With path: a component at any depth, with a ref
("Sub:1/Bolt:1#E4") — circular ones feed constrain(kind="insert").
Args: path: Component path (manage_occurrences list, depth=2). Empty = the active part. at: Edge midpoint coordinates to match (circle: its center), e.g. {"X": 50, "Z": 1.5}. circular: Only circular edges. diameter: Circle diameter in mm. min_length: Skip edges shorter than this (mm). max_count: Most results to return.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| path | No | ||
| circular | No | ||
| diameter | No | ||
| 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, so the description carries the full burden. 'Find' implies a read-only query, and the description discloses filtering semantics and what an empty `path` resolves to. It does not disclose truncation behavior when `max_count` (default 40) is hit, what happens with zero matches, or unit conventions beyond 'mm'.
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 leading sentence is front-loaded with the core behavior and the two-mode split, followed by a compact Args block. The Args list partially restates schema titles but earns its place by adding meaning (circle center, 'skip edges shorter than this', 'most results to return').
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. For a 7-parameter read tool with no annotations, the definition covers mode selection, filters, and downstream consumers well; the remaining gap is silent truncation via the default `max_count` of 40.
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 does: it documents 6 of 7 parameters including a literal example for `at` ({"X": 50, "Z": 1.5}) and a sample `ref` string for the component path. Only `instance` is left to the schema, and `at`'s freeform anyOf object still lacks a full key list.
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 edges') and immediately splits the behavior into two modes keyed on `path`, so the agent understands the two distinct retrieval shapes. It never names `find_faces` or other siblings, so differentiation from the nearest neighbor is only implicit via the word 'edges'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete downstream routing: edges without `path` feed add_flange/fillet/chamfer, circular edges from a component feed constrain(kind="insert"). That is genuine when-to-use guidance, but there are no explicit exclusions (e.g. when to use find_faces or project_edges instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_facesA
Find faces, filtered by type, direction, position or size. Without path: the active
part (the index feeds create_sketch, sheet_metal_cut). With path: a component of the
active assembly at any depth, in TOP assembly coordinates, with a ref ("Sub:1/Part:1#F12")
for constrain; a sub-assembly path searches every part in it.
Args: path: Component path (manage_occurrences list, depth=2). Empty = the active part. 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 | No | ||
| 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 burden and largely meets it: results are in TOP assembly coordinates, sub-assembly paths fan out across every part, and the `ref` format is shown verbatim. It omits anything about fan-out cost, ordering, or behavior on zero matches, and never states the read-only nature explicitly (only implied by 'find').
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, then scoping semantics, then a compact Args block — nothing is filler. The middle sentence is a dense run-on that packs path depth, coordinates, ref format and recursion into one line, which costs a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose, and all 8 params are covered across schema and description. What is left unstated is how filters combine (AND vs. override) and whether the result is coordinate-rich enough for constrain without a second lookup.
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: it documents 7 of 8 params with meaning and concrete examples ([0,0,1] for an upward normal, {"Z": 182.5} for a center match, surface values "plane"/"cylinder"/"cone", empty-string = any). The one remaining param, `instance`, 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?
States a specific verb and resource (find faces) plus the exact filter axes: type, direction, position, size. The path/no-path split makes the scoping model explicit, which is enough for an agent to tell this apart from find_edges and from inspection tools like inspect_model.
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 two operating modes (no `path` = active part, `path` = assembly component at any depth) and even names downstream consumers of the returned index/ref (create_sketch, sheet_metal_cut, constrain). It does not name explicit alternatives or say when *not* to use it, but the context for each mode is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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 behavioral burden and does so well for a status tool: it explains that the execute_python namespace ages and is lost after a server restart or reload_api, and that the tool reports when Inventor is busy or showing a dialog instead of a normal status. It does not explicitly state read-only safety, but 'Check' 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?
Two tightly constructed sentences front-load the main purpose and then add the execute_python namespace lifetime and busy-dialog behavior. Every clause contributes useful context 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 is simple, has an output schema, and the description covers the key status areas and the busy-dialog edge case. The only notable gap is explicit routing guidance versus list_instances and connect, but overall the definition is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is fully documented in the schema, including the reference to list_instances for choosing an instance. The description adds no parameter semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and names the exact resources returned: connection status, active document info, and the execute_python namespace. It clearly distinguishes itself from execution or modification tools, though it does not explicitly separate itself from list_instances or connect.
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 diagnostic nature of the tool, but the description does not state when to call get_status instead of list_instances or connect. It mentions reload_api only as a cause of namespace loss, not as an alternative tool-selection condition.
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_components.
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?
With no annotations, the description carries the full burden and does well: it discloses a real filesystem side effect (the STEP is copied into dest_folder) and explains why (Inventor writes assembly parts next to the .step file), which is non-obvious behavior an agent could not infer. It also summarizes the return payload. It does not state what happens on name collisions or whether existing files get overwritten, which is the remaining gap for a file-creating mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the rationale for the copy, then the downstream use of the return values, then a clean Args block. Every sentence carries information; the only mild redundancy is restating name's default in the Args block, which the schema title already implies.
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 with an output schema already documenting return structure, this description covers action, side effects, rationale, output summary, and downstream handoff. Nothing an agent needs in order to call it correctly and use the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must compensate, and it largely does: an Args block documents step_path, dest_folder, and the name default (STEP file name). The fourth parameter, instance, is omitted from the description but is the one parameter the schema itself documents (pointing at list_instances), so coverage is effectively 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?
States a specific verb and resource: import a vendor STEP file and produce Inventor files in a destination folder. It is clearly distinguishable from siblings like load_library (library parts), place_components (assembly placement), and create_document (empty docs). The parenthetical examples of vendor parts add a concrete sense of scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent forward: use the returned bbox data to find mounting faces and axes *before* placing with place_components, which names the sibling and the ordering constraint. There are no explicit when-not-to-use conditions or prerequisites (e.g. Inventor connectivity, licensing), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_modelA
Snapshot of the active document in one call. Part: volume, bounding box, face and edge counts, feature tree, sketches, sheet metal thickness, warnings (faceted curves, surface bodies). Assembly: components with positions, constraint count, mass, volume.
| 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 behavioral burden, and it does real work: it discloses that the snapshot includes warnings about faceted curves and surface bodies, which tells the agent to expect degraded-geometry signals. It never explicitly states the operation is read-only or says anything about cost on large assemblies, which keeps it out of 5 territory.
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, front-loaded with the core value proposition, then a dense enumeration split cleanly by Part versus Assembly. Every clause carries information; 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?
An output schema exists, so the description needn't explain return values, yet the Part/Assembly enumeration is genuinely useful for tool selection across a 50+ sibling surface. What's missing is any note on scope limits (e.g., whether it works with no active document) or performance on large models.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter and schema description coverage is 100%, so the schema already explains instance and points at list_instances. The description adds nothing about the instance argument, 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?
Specific verb+resource ('snapshot of the active document') with an explicit inventory of what is included for both Part and Assembly cases, which lets an agent tell it apart from targeted queries like find_faces or measure_distance. It stops short of naming any sibling explicitly, so it lands at 4 rather than 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?
The phrase 'in one call' implies this is the broad-orientation tool versus the many narrow query tools, but the description never states when to prefer it or when to reach for find_faces/get_status instead. Usage is implied rather than instructed.
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.
load_libraryA
Run a Python file into this Inventor's execute_python namespace and keep it there: after reload_api, a new namespace or a new server it is loaded again by itself (remembered per project). For helper functions you would otherwise redefine every time. Says how long it took and which lines were slowest — a COM call at module level is the usual culprit. A file at ~/.inventor-mcp/startup.py (or INVENTOR_MCP_STARTUP) is loaded 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 burden and does well: it discloses persistence semantics (remembered per project, reloaded after reload_api, new namespace, or new server), timing feedback, and a global startup hook. It omits error behavior for a bad path and whether a re-load of the same path replaces or appends to the namespace.
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 persistence contract, then supporting detail about timing and startup. The pacing sentence ('Says how long it took…') is slightly conversational but still carries diagnostic 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 not be explained. For a stateful mutation with no annotations, the description covers persistence, lifecycle, and side effects well; only path validation and namespace-collision behavior 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 only 50% and the undocumented parameter is the required one — 'path'. The description never says whether it must be absolute, must exist, or what happens on a bad path; it only incidentally mentions a startup file location. The optional `instance` parameter is documented in the schema, so the description adds nothing there.
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') plus the key distinction that it persists, which separates it from execute_python and reload_api. An agent can identify the tool's job 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?
'For helper functions you would otherwise redefine every time' gives an explicit use case, and the reload_api/new-server survival notes clarify when persistence matters. It never explicitly names execute_python as the alternative for one-off code, so the exclusion side is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_callA
Follow or stop a call that outlived the wait — a long execute_python, a Content Center scan, one stuck behind an Inventor dialog.
"status": elapsed time, any open dialog's text, output so far, progress() line — and the result once it has finished. wait_seconds waits (at most 45 s) and returns as soon as it ends. "cancel": cancelled() in execute_python code turns True at once; code still running after 2 s gets a KeyboardInterrupt, repeated until it stops. That lands at the next Python line: a call stuck INSIDE one COM operation or behind a dialog stops only once that returns.
Args: action: "status" or "cancel". wait_seconds: For "status".
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | status | |
| 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, the description carries the full burden and does it unusually well: it discloses the 45 s wait cap and early return, the 2 s cancel grace window, repeated KeyboardInterrupts, and the important limitation that a call stuck inside one COM operation or behind a dialog only stops once that returns. It omits post-cancel state (does status still report a cancelled call, is partially-applied Inventor work rolled back?), which is the remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The structure is front-loaded — purpose, then per-action behavior, then args — and nearly every sentence adds behavioral information rather than restating schema. The Args block is justified because the schema lacks descriptions for action and wait_seconds, but the formatting (stray quotes, terse arg notes) is slightly ragged and the ending trails off.
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, zero-annotation tool with an output schema present, the description covers what an agent needs: when to poll, how long to wait, how cancellation actually behaves and where it fails to take effect. Return contents are sketched (elapsed time, dialog text, output so far, progress() line) even though the output schema would have sufficed.
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 — and it largely does by enumerating the action's valid values ('status' or 'cancel'), which the schema leaves as an undescribed free string, and by tying wait_seconds to the status action with a 45 s cap. It never explains the wait_seconds=0 default or the omitted-action default, so it does not fully close the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific pair of verbs (follow/poll or stop) against a specific resource (a long-running call), and disambiguates from execute_python by identifying this as the follow-up tool for calls that outlived their wait. The examples (long execute_python, Content Center scan, Inventor dialog) make the target scenario 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?
It clearly establishes the trigger condition — use this only after a call has outlived its wait — and routes between the two modes by explaining what each action does. It stops short of explicit exclusions, e.g. it never says how this differs from get_status or whether it applies to calls other than execute_python/Content Center scans.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_constraintsB
List the active assembly's constraints, or delete one.
Args: action: "list" or "delete". index: Constraint index from list.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| action | No | list | |
| 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 reveals the dual read/destructive-mode design, but says nothing about deletion being irreversible, whether it requires confirmation permissions, what happens to dependent features, or what an invalid index does. For a tool whose 'delete' path mutates the model, this is a real 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 elements: a one-line purpose sentence followed by a compact Args block. Front-loaded, no filler, and every line carries information about behavior or parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered elsewhere, and all three parameters get some explanation. But for a tool with a destructive branch and zero annotations, the absence of any warning about irreversible deletion or index validity leaves a meaningful hole 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 coverage is only 33% (only 'instance' is documented in the schema), but the description compensates by enumerating the accepted values of 'action' ("list" or "delete") and explaining that 'index' is a constraint index obtained from list. That covers the two undocumented parameters meaningfully, though defaults (action='list', index=0) go unmentioned.
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 pair and resource: 'List the active assembly's constraints, or delete one.' That tells an agent exactly what the tool operates on. It does not explicitly distinguish itself from the sibling 'constrain' (presumably constraint creation), leaving the create-vs-manage split to inference.
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 'list' then 'index from list' sequencing implies the correct two-step workflow for deletion, which is useful guidance. However, there is no statement about when to use this versus 'constrain', no prerequisites, and no note that delete is only meaningful with an index obtained from a prior list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_documentsA
Open documents of this Inventor.
"list": name, type, dirty, active; protected (library / Content Center) ones marked. "open": a file by path. "activate": switch by name or path. "close": one, without saving unless it is yours and dirty (discard=True closes it anyway). "close_unsaved": documents never saved (Part12… left by failed attempts). "close_all": everything; refuses while your own files have unsaved changes, listing them (discard=True closes anyway; protected files never count). quit_inventor=True quits after.
Args: action: "list", "open", "activate", "close", "close_unsaved" or "close_all". name_or_path: For open / activate / close. include_active: "close_unsaved" also closes the active document. discard: Close without saving your changes. quit_inventor: "close_all" then quits this Inventor.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| discard | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| name_or_path | No | ||
| quit_inventor | No | ||
| include_active | 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 burden and does so well: it discloses protected-file handling, unsaved-change refusal behavior, discard=True overrides, and quit_inventor side effects. These are meaningful behavioral traits beyond the schema, especially for destructive close/quit actions.
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 action-by-action structure is efficient and front-loads the core document operations, with an Args section that maps cleanly to parameters. The opening line 'Open documents of this Inventor' undersells the full manage/close scope, but otherwise the text is compact for a six-parameter, six-action 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?
Given six parameters, no annotations, low schema coverage, and an output schema, the description is largely complete for correct invocation: it covers action semantics and destructive behavior well. The main remaining gap is that it does not explicitly route the agent away from related sibling tools such as create_document or save_document.
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. It documents action values, name_or_path usage, include_active, discard, and quit_inventor, adding essential semantics that the schema does not provide, especially the otherwise unconstrained action string.
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 document lifecycle operations for the connected Inventor and enumerates specific actions: list, open, activate, close, close_unsaved, and close_all. It is clear what the tool does, but it does not explicitly distinguish itself from related siblings such as create_document, save_document, or export_document.
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 per-action context, including when close_unsaved applies to never-saved documents and when close_all refuses due to unsaved changes. It does not explicitly name alternative sibling tools or state when not to use this tool, so it lacks the routing guidance needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_featuresA
List, delete or suppress the active part's features.
Args: action: "list", "delete", "suppress" or "unsuppress". indices: Feature indices from list, comma-separated, e.g. "3,4,5".
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| indices | 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 it does disclose two useful traits: the operation targets the active part, and indices must be harvested from a prior list. It does not state that delete is destructive/irreversible, what happens to suppressed features in downstream rebuilds, or whether an active document 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 single sentence followed by a compact per-argument block; every line earns its place. The framing of prose-and-Args-duplicating-schema is slightly wasteful but not confusing.
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, but a destructive-capable mutation tool with zero annotations should still disclose reversibility and preconditions. The description covers two of three parameters and the basic workflow but leaves the risk profile of delete and suppress unstated.
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 instance parameter documented in the schema, so the description must compensate — and it does, giving the action vocabulary and the comma-separated indices format with a concrete example ("3,4,5"). It still doesn't say what index domain list returns or whether indices are stable across edits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (list/delete/suppress) and a specific resource (the active part's features), which is distinguishable from siblings like manage_parameters, manage_constraints, and manage_occurrences. It never explicitly names those siblings as alternatives, 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?
The Args block enumerates the valid actions and states that indices come from a prior list call, which implies the list-then-mutate workflow. However, there is no guidance on when to choose this tool over manage_parameters/manage_occurrences, and no stated preconditions such as requiring 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.
manage_materialsA
Materials of many parts at once.
"report": material and mass of every part of the active assembly (or part): 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.
"list": material names in Inventor's libraries (search narrows them).
"set": give material to every part whose name matches parts. Content Center and library
parts are left alone. Save afterwards.
Args: action: "report", "list" or "set". material: From the library, e.g. "Steel, Mild". search: For "list", e.g. "steel". parts: Name patterns, ","-separated, e.g. "PLATE,BRACKET". only_generic: "set" only parts still on Generic / Default. path: Limit "report" / "set" to a sub-assembly. only_problems: "report" without the per-part rows.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| parts | No | * | |
| action | No | report | |
| search | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| material | No | ||
| only_generic | No | ||
| 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 load and does substantial work: it discloses that 'set' is a mutation that must be saved afterwards, that Content Center/library parts are skipped, and what 'report' flags (Generic material, surface-only vendor models, missing mass). It stops short of stating failure behavior for bad material names or partial-application semantics.
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?
Structure is sensible: a short framing, per-action semantics, then an Args block that mostly adds examples rather than restating types. A few lines (the bare opening fragment) are thinner than they need to be, but there is little waste for an 8-parameter 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?
Given eight parameters, no annotations, and an output schema that covers return shape, the description supplies the behavioral context an agent needs: what each action does, exclusions, and the save side effect. Remaining gaps (error handling, partial-failure behavior) are minor.
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 largely does: it describes action values, `material` format with an example, `search` purpose, comma-separated `parts` patterns with an example, and the meaning of `only_generic`, `path`, and `only_problems`. The `instance` param is left to the schema (where it is documented), which is the only 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 opening fragment is weak, but the per-action breakdown (report/list/set) makes clear this is a material management tool spanning inspection and assignment across many parts. It differentiates its three modes cleanly, though it never contrasts itself with sibling tools like edit_properties that might also touch materials.
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?
Each action carries implied selection criteria: 'report' to audit, 'list' to discover library names (with `search` narrowing), 'set' to assign. It also notes exclusions for 'set' (Content Center and library parts are left alone) and the need to save afterwards. No explicit when-not-to-use against a sibling, 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.
manage_occurrencesA
Components of the active assembly.
"list": a table with positions; depth=2 also lists what is inside sub-assemblies, with paths. "find": components by what they are and where — definition name pattern, the direction of their Z axis, distance from a point. E.g. definition="ISO 4017M8*", axis=[0,0,1]. "ground": fix a component in space (grounded=False releases it). Ground the first one. "delete": says first what depends on it (patterns, constraints) and stops; force=True deletes, cascade=True also deletes pattern members. Reports components that moved.
Args:
action: "list", "find", "ground" or "delete".
path: Component name, path ("Sub:1/Part:1") or list index.
depth: For "list".
definition: For "find": name pattern on the part / file name.
axis: For "find": direction of the component's Z axis, either way along it.
near: For "find": a point [x, y, z] in mm.
within: For "find": largest distance from near, mm.
grounded: For "ground".
cascade: For "delete".
force: For "delete".
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| near | No | ||
| path | No | ||
| depth | No | ||
| force | No | ||
| action | No | list | |
| within | No | ||
| cascade | No | ||
| grounded | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| definition | 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 behavioral burden and discloses important side effects: delete first reports dependencies and stops unless force=True, cascade=True also deletes pattern members, and ground with grounded=False releases a component. It does not cover permissions or all possible state changes, but it provides meaningful behavioral context for the main mutations.
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 resource, then groups behavior by action before listing arguments. It avoids wasted prose, though the formatting is somewhat fragmentary and could be more clearly sectioned.
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?
This is a complex 11-parameter tool with no annotations and low schema coverage. The description covers action semantics and most parameter meanings, but it lacks usage guidance versus sibling tools and omits some operational context, such as how instance selection interacts with the actions. The output schema reduces the need to explain 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 description coverage is very low at 9%, so the description must compensate. It does define most parameters by action, including path, depth, definition pattern, axis direction, near point, within distance, grounded, cascade, and force, though some definitions are terse and the instance parameter is only 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 states that this tool deals with components of the active assembly and enumerates specific actions: list, find, ground, and delete. This is a clear verb-and-resource statement, though it does not explicitly distinguish itself from siblings such as place_components or manage_constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what each action does and gives some operational hints, such as grounding the first component and how delete initially stops on dependencies. However, it does not state when to choose this tool over alternatives or provide explicit exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_parametersA
Read, change or add parameters of the active document.
Args: action: "get" (all), "set" or "add". name: Parameter name, e.g. "width". expression: Value or expression, e.g. "50 mm", "width * 2". units: For "add": mm, cm, m, deg, …
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| units | No | mm | |
| action | No | get | |
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| expression | 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 the 'active document' scope and that 'get' returns all parameters, which is useful mutation context. But it does not say what happens if 'set' targets a nonexistent name, whether 'add' overwrites duplicates, or whether changes are undoable via the transaction sibling.
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 summary sentence followed by a tight Args list; nothing is padded or redundant. The docstring formatting is slightly mechanical but each line carries real information for a consumer.
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 five-parameter mutation tool with zero annotations, though, the description should say more about failure modes, persistence, and interaction with the transaction tool. As written it is adequate but leaves the agent guessing on error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only 'instance' is documented structurally), so the description must compensate, and it largely does: it explains action values, gives examples for name ("width") and expression ("50 mm", "width * 2"), and restricts units to add with examples (mm, cm, m, deg). The only gap is that 'instance' is not mentioned in the description, 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?
Description starts with a concrete verb triple and resource: "Read, change or add parameters of the active document." An agent immediately knows the operation and the target object, and 'parameters' is distinct from siblings like manage_features or manage_constraints. It lacks explicit differentiation from those siblings, keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Args block enumerates action values "get" (all), "set", "add", which implies the modes of use and hints that 'get' returns all parameters. However, there is no guidance on when to prefer this tool over inspect_model or manage_features, no prerequisites (e.g. a document must be open), and no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_sheet_metal_rulesA
Sheet metal rules of the active part. Shops encode their tooling in rule names (e.g. 'T15-V10' = 1.5 mm sheet, V10 die): prefer "set" — it sets thickness, bend radius and unfold method together; "thickness" changes only the thickness.
Args: action: "list", "set" or "thickness". name: Rule name for "set" (case-insensitive). thickness: mm, for "thickness".
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| action | No | list | |
| 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?
With no annotations, the description carries the full burden: it does disclose that "set" mutates bend radius and unfold method (not just thickness), which is meaningful behavior beyond the schema. It omits whether the change is reversible, whether the active document must already be a sheet metal part, and what happens when a rule name is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening line establishes scope, then the set-vs-thickness recommendation is front-loaded before the Args block. The shop-naming aside ('T15-V10' = 1.5 mm sheet, V10 die) is illustrative rather than required, but it justifies how rule names are formed and is short enough to earn 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 explained, but this is an unannotated mutation tool with 4 parameters and thin schema coverage. The description covers operation choice and units yet never states prerequisites (an active sheet metal document) or failure behavior for unknown rule names.
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' is documented in-schema), so the description must compensate, and it largely does: it defines the three action values, marks name as case-insensitive and scoped to "set", and gives the unit (mm) for thickness. Only the 'instance' parameter and the list default 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?
Names a specific resource (sheet metal rules of the active part) and enumerates the three supported operations (list/set/thickness), so an agent can tell it acts on rule configuration rather than geometry. It doesn't compare itself to siblings like add_flange or export_flat_pattern, which is the only thing keeping this below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to prefer "set" over "thickness" and explains the difference: set applies thickness, bend radius and unfold method together, while thickness changes only thickness. That resolves the main selection ambiguity, but "list" is never framed as the discovery step preceding set, and no preconditions are given.
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 manage_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?
No annotations are supplied, so the description carries the burden. It does disclose useful behavior: units are millimetres, a zero result means touching/overlapping, and nested references like "Asm:1/2" resolve into sub-assemblies. It omits what happens on invalid names, whether it errors or returns null when parts are disjoint, and any permission/state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences; the core semantics and the units/edge case come first, with the naming convention as a follow-up. 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?
With an output schema present, return values need no prose, and the description covers the two undocumented parameters plus the key edge case. What is still missing is disambiguation from check_interference and failure behavior, but for a simple two-name query this is close to 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% — 'a' and 'b' are bare strings — but the description compensates by explaining that they are occurrence names taken from manage_occurrences and that a slash-path reaches into a sub-assembly. Only the 'instance' parameter relies on the schema text, which handles it 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?
States a precise verb+resource ("Minimum distance in mm between two occurrences") and even defines the degenerate case (0 = touching/overlapping). An agent knows exactly what is computed, though the description never contrasts it with the sibling check_interference, which sounds like a near neighbor.
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?
Only the occurrence name syntax ("Names as in manage_occurrences") is offered as usage help; there is no statement of when to reach for this tool versus check_interference or inspect_model, and no preconditions (e.g., that both occurrences must belong to the open assembly).
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_componentsA
Place parts / sub-assemblies into the active assembly — one or hundreds in one call. Files must exist on disk (save_document first); all are checked before anything is placed.
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 (where the part's own X/Y point; give both). Ground the first component of every assembly. atomic: One undo step: if any placement fails, none stay. skip_if_exists: Don't place one where the same file already sits at the same place — safe to run a list again after an error.
| Name | Required | Description | Default |
|---|---|---|---|
| atomic | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| components | Yes | ||
| skip_if_exists | 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 that all files are validated before anything is placed, that atomic collapses the operation into one undo step with rollback on failure, and that skip_if_exists makes re-runs idempotent. It does not cover permissions, what the response contains, or behavior when the target assembly is not open, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the rest is a tight Args block with no filler. Some phrases are compressed to the point of ambiguity ('where the part's own X/Y point; give both') and the bare 'mm.' fragment, which costs a point on 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 mutation tool with no annotations, the description covers prerequisites, units, atomicity, and idempotency, and an output schema exists so return values need not be explained. The `instance` parameter (multi-connection selection) is left entirely to the schema, and error/response shape on partial failure 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 only 25% — components is an untyped array of free-form objects — and the description compensates fully by enumerating its keys (path, x/y/z, x_axis, y_axis, grounded, name), noting the 'origin' alias, the mm unit convention, that axes/name are optional and must be given as a pair. It also explains the semantics of atomic and skip_if_exists beyond their bare defaults.
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 parts / sub-assemblies into the active assembly') plus the batch scope ('one or hundreds in one call'), which is exactly the distinction an agent needs. The reference to save_document and the active-assembly target further pins down what it operates on.
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 ('files must exist on disk (save_document first)') and prescriptive guidance ('ground the first component of every assembly', 'safe to run a list again after an error' for skip_if_exists). It lacks an explicit statement of when NOT to use it (e.g. versus import_step or manage_occurrences), 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.
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 (find_faces). edge_indices: Or these edges, "3,7,8" (find_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 burden. It does disclose a genuinely useful behavioral trait, that projected geometry stays 'linked to the model' (associative), but omits prerequisites such as whether an active/existing sketch is required, what happens when both face_index and edge_indices are supplied, and 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?
The purpose and the importable-geometry rationale are front-loaded in the first two sentences, followed by a compact args block where every line adds semantics rather than restating the schema. 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 explained, and the parameter explanations are thorough. The remaining gap is environmental: the definition never states that a target sketch must already exist and be active, nor how face_index and edge_indices interact when both are provided.
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, and it does: it explains each of the four core parameters with meaning beyond the schema, including cross-references to find_faces and find_edges, the "3,7,8" string format for edge_indices, 1-based body indexing, and sketch_index 0 = latest sketch.
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 (project) and resources (a body's edges onto the sketch), and enumerates the resulting entity types (lines, arcs, circles, splines). It distinguishes itself from the draw_*/offset_profile family by emphasizing the result is 'linked to the model', though it doesn't name a specific sibling tool it competes 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?
It gives an explicit use case (building on existing or reference geometry, e.g. remodelling an imported part) and names the alternative practice it replaces ('instead of re-tracing curves point by point'). No when-not-to-use or prerequisite conditions are stated.
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?
No annotations exist, so the description carries the full burden and does so well: it discloses that no dialog opens, that dependents are saved one-by-one before the main document, that library/Content Center files are skipped to avoid rewriting shared parts, and that the return value lists saved vs skipped files. It does not cover failure cases such as a document never saved before or read-only files, 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 core behavior and its non-obvious guardrails are front-loaded in the first paragraph, and the Args block adds semantics the schema lacks. Mild redundancy with the schema titles in the Args section costs a point but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations and no output schema explanation needed (an output schema exists), so the description must carry safety and side-effect context — it does, via dependency ordering, library-skip rationale, and path pre-validation. Lacking any statement about required connection/permissions or whether a failure leaves partial saves is 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 25% (just the instance param), but the description supplies real semantics for the other three: path meaning plus empty-means-save-in-place, overwrite excluding files open in Inventor, and save_dependents mapping to Save2(False) with the consequence that changed dependents stay dirty and get listed. Only the interaction between path and overwrite on validation order is left slightly 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 verb+resource (save the active document) and immediately bounds scope: no dialogs, no library or Content Center writes. It is clear what the tool does, but it never names a sibling (e.g. export_document, manage_documents) as the alternative for other save/export needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through behavior: save-in-place when path is empty, dependency saving controlled by save_dependents, and library/Content Center files deliberately skipped. There is no explicit 'use this when / use X instead' routing, so the agent must infer when this beats export_document or manage_documents.
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 a sheet metal panel — depth follows the thickness, so it stays parametric. Checks that material was removed (a cut sketched on a work plane silently removes nothing).
From a sketch on the panel face: one sketch with several closed shapes = several holes. Or at WORLD coordinates, with no sketch axes to think about: face_index + circles / rectangles.
Args: sketch_index: Sketch number (0 = latest). face_index: Face of the sheet (find_faces), for circles / rectangles. circles: [[x, y, z, diameter], ...], e.g. [[180, 267, 0, 4.9]]. rectangles: Lists of 4 corners, [[[x,y,z], [x,y,z], [x,y,z], [x,y,z]], ...].
| Name | Required | Description | Default |
|---|---|---|---|
| circles | No | ||
| instance | No | Which connected Inventor to use (list_instances). Leave empty when only one is connected. | |
| face_index | No | ||
| rectangles | 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 burden and does disclose non-obvious behavior: depth is driven parametrically by thickness, and the tool verifies material was actually removed, warning that a cut sketched on a work plane silently removes nothing. It does not cover failure modes, whether duplicate geometry is tolerated, or any permission/instance implications.
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 before the mode explanation and Args block; every sentence carries information. The Args listing restates some parameter meaning already given in prose, which is mild redundancy rather than waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter CAD mutation with an output schema (so return values needn't be explained), the description covers the action, the two invocation modes, the parameter formats, and the verification behavior. The remaining gap — whether sketch_index and face_index are mutually exclusive — is minor.
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% and the schema's circles/rectangles items are untyped, so the description compensates well: it documents sketch_index (0 = latest), face_index (with a pointer to find_faces), the [x, y, z, diameter] circle format with an example, and the 4-corner rectangle format. Only `instance` is left to the schema, which already describes 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?
Names a specific verb and resource ('Cut through a sheet metal panel') and immediately distinguishes itself from a generic cut/extrude by noting the depth follows the sheet thickness and stays parametric. The two supported input modes (sketch on panel face vs. world coordinates) further pin down what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly lays out the two ways to drive the cut — a sketch on the panel face (multiple closed shapes = multiple holes) or world coordinates via face_index + circles/rectangles — which is real routing guidance. It stops short of telling the agent when to prefer this over sibling tools like add_hole, draw_slot, or extrude.
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.
use_content_centerA
Browse the Content Center and make member parts to place (place_components / place_components).
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 full behavioral burden. It does disclose useful traits: per-call latency vs. full tree cost, and that a custom member is written to disk at a default path (project workspace / Content Center Custom/...). However it never states whether the component is placed into the assembly, whether a document is opened/created, or what permissions/connected instance state are required — significant gaps for a tool that produces a file.
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-line purpose, then a compact drill-down ladder, then a clean Args block — every section has a distinct job. The ladder is verbose but earns its place as executable guidance; the only waste is the accidental duplication of place_components and the aliasing of the tool name (use_content_center vs content_center(...)).
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, yet the description still usefully shows what each level returns (top categories, sub-categories, families, sizes, part file path), which is the right level of detail. What's missing is the state contract — no mention of needing a connected Inventor instance for the 'instance' parameter or of whether a resulting part gets placed or merely staged.
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%, but the description compensates well: it documents category (forward-slash separated path), family, size ('spaces and case ignored'), length (mm, 0 = standard member) and file_name (default save location) — 5 of the 6 parameters. The special case 'length: 0 = standard member' adds genuine meaning beyond the schema default, and the step-by-step demonstrates that parameters are progressive and optional.
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 both the resource (Content Center) and the output (member parts to place), and explicitly hands off to place_components for the placement step. Slightly muddied by the duplicated '(place_components / place_components)' parenthetical and by 'make member parts', which doesn't quite say whether a file is generated or an occurrence inserted — the step-by-step resolves it later.
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 numbered call sequence gives explicit, copyable invocation paths for each drill-down level (top categories → sub-categories → families → sizes → part path), plus the performance hint 'the whole tree takes minutes to walk, so give a path'. It lacks an explicit 'when not to use this' or comparison to sibling alternatives beyond place_components, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
85 tool updates
v1.0.0- Removed
activate_document - Added
add_circular_pattern - Added
add_corner_round - Added
add_flange - Added
add_frame_members - Added
add_hole - Removed
add_parameter - Added
add_sheet_metal_face - Removed
assembly_faces - Removed
assembly_info - Removed
bom - Removed
call_status - Removed
cancel_call - Added
capture_view - Changed
check_interference1 field changed- added
Input schema / properties / ignore_fastenersAdded value: +{ + "default": false, + "title": "Ignore Fasteners", + "type": "boolean" +}
- Removed
circular_pattern - Removed
close_unsaved - Changed
constrain9 fields changed- added
Input schema / properties / aAdded value: +{ + "title": "A", + "type": "string" +} - added
Input schema / properties / a_atAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "A At" +} - added
Input schema / properties / axes_opposedAdded value: +{ + "default": true, + "title": "Axes Opposed", + "type": "boolean" +} - added
Input schema / properties / bAdded value: +{ + "title": "B", + "type": "string" +} - removed
Input schema / properties / geometry1Removed value: -{ - "title": "Geometry1", - "type": "string" -} - removed
Input schema / properties / geometry2Removed value: -{ - "title": "Geometry2", - "type": "string" -} - removed
Input schema / properties / occurrence1Removed value: -{ - "title": "Occurrence1", - "type": "integer" -} - removed
Input schema / properties / occurrence2Removed value: -{ - "title": "Occurrence2", - "type": "integer" -} - changed
Input schema / requiredPrevious value: -[ - "occurrence1", - "geometry1", - "occurrence2", - "geometry2" -]New value: +[ + "a", + "b" +]
- Removed
constrain_faces - Removed
constrain_insert - Removed
content_center - Added
convert_surfaces_to_solid - Removed
corner_round - Removed
create_assembly - Added
create_document - Added
create_drawing - Removed
create_part - Removed
cut_on_face - Removed
delete_constraint - Removed
delete_feature - Removed
delete_occurrence - Added
draw_pattern - Added
edit_properties - Added
export_bom - Added
export_flat_pattern - Removed
find_edge - Added
find_edges - Removed
find_face - Added
find_faces - Removed
flange - Removed
flat_pattern - Removed
frame_members - Removed
get_parameters - Added
get_status - Removed
ground_occurrence - Removed
hole - Removed
hole_linear - Removed
inspect - Added
inspect_model - Removed
list_component_edges - Removed
list_constraints - Removed
list_documents - Removed
list_edges - Removed
list_faces - Removed
list_features - Removed
list_materials - Removed
list_occurrences - Removed
list_sheet_metal_rules - Removed
make_drawing - Added
manage_call - Added
manage_constraints - Added
manage_documents - Added
manage_features - Added
manage_materials - Added
manage_occurrences - Added
manage_parameters - Added
manage_sheet_metal_rules - Removed
material_report - Removed
place_component - Added
place_components - Removed
place_many - Removed
properties - Changed
save_document1 field changed- changed
Input schema / properties / save_dependents / defaultPrevious value: -trueNew value: +false
- Removed
set_material - Removed
set_parameter - Removed
set_sheet_metal_rule - Removed
set_sheet_metal_thickness - Changed
sheet_metal_cut3 fields changed- added
Input schema / properties / circlesAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Circles" +} - added
Input schema / properties / face_indexAdded value: +{ + "default": 0, + "title": "Face Index", + "type": "integer" +} - added
Input schema / properties / rectanglesAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Rectangles" +}
- Removed
sheet_metal_face - Removed
sketch_pattern - Removed
status - Removed
suppress_feature - Removed
surface_to_solid - Added
use_content_center - Removed
view_image
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 57 tools
Most tools are separated by clear resource/action boundaries, and the verbose descriptions disambiguate close pairs like draw_pattern vs add_circular_pattern and find_faces vs find_edges. Some ambiguity remains because execute_python can duplicate almost any operation, and grouped manage_* tools hide multiple actions behind one name.
Names are consistently snake_case and mostly follow a readable verb_noun pattern such as create_sketch, draw_circle, find_faces, and export_bom. Minor deviations exist for bare verb names like constrain, fillet, chamfer, extrude, and revolve, plus the grouped manage_* convention.
With 57 tools, the surface is far beyond the typical 3-15 well-scoped range and is likely to impose a heavy selection cost even for a broad CAD automation domain. This qualifies as an extreme tool-count mismatch under the rubric.
The toolset covers an unusually broad lifecycle: documents, sketches, features, sheet metal, assemblies, constraints, materials, drawings, BOM export, Content Center, imports/exports, diagnostics, and an execute_python escape hatch. Minor gaps and inconsistencies remain, such as missing direct sketch management/deletion and documentation references to list_faces() although only find_faces exists.
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.5-
- 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