Skip to main content
Glama
cenitu

inventor-mcp-server

inventor-mcp-server

PyPI CI License: MIT Contributions welcome

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, and sweep_rotation to check a door or lock moves freely through its whole range

  • Assemblies (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_python power 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 step

  • One tool per job — 57 tools with verb_noun names: find_faces / find_edges work in a part and at any depth of an assembly, constrain takes origin geometry, faces and edges, and manage_* tools group what you do to documents, occurrences, features, parameters, constraints, materials and sheet metal rules

  • Protects your files — save_document saves only the active document unless asked, never a library or Content Center file; add your own paths with INVENTOR_MCP_PROTECTED or ~/.inventor-mcp/protected.txt. Deleting a component says what depends on it first, and reports what moved

  • Never hangs on a dialog — calls run with SilentOperation on 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 and progress() line so far — and returns the result the moment it finishes; cancel_call stops it

  • Shop-floor outputs — export_flat_pattern gives the flat size and writes the DXF/DWG for the laser (contour, holes and bend lines on their own layers); create_drawing makes a PDF drawing (base + projected + iso views, overall dimensions, or the flat pattern dimensioned); export_bom lists the assembly's parts with quantity, part number, description, material and mass (CSV for Excel / ERP); edit_properties reads and sets part number, description, stock number, material and custom properties

  • Real arcs in sketches — draw_closed_profile takes rounded corners ([x, y, r]) and arcs through a point, plus draw_rectangle(corner_radius), draw_slot, draw_arc and project_edges (exact edges of a body, for remodelling). Arcs go through three points, so a sketch with flipped axes can't mirror them; inspect warns when a curve was drawn as many short lines. draw_pattern draws grids and circles of holes / slots, offset_profile offsets loops, and check_sketch (also built into extrude's error) points at the gap that keeps a profile open

  • Sees its own work — capture_view returns 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 glance

  • Steel frames — add_frame_members lays 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 s

  • Surfaces to solids — convert_surfaces_to_solid knits 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 close

  • Materials in bulk — manage_materials gives every matching part of an assembly a material (Content Center parts left alone), manage_materials shows material and mass per part and flags Generic parts, surface-only vendor models and parts with no mass; edit_properties(mass_kg) overrides a mass

  • Nested assemblies — find_faces finds faces of components inside sub-assemblies (type, normal, position, diameter) in top coordinates; constrain constrains them, corrects a wrong offset sign from where the face must land, and reports any other component the constraint dragged along

  • Content Center and big assemblies — use_content_center browses categories → families → sizes and makes members, custom length included (a 1500 mm DIN 1026-1 U 100 in one call); place_components places dozens of components with position, orientation, name and grounding in one call

  • Agent-friendly Python — execute_python errors show the traceback from the agent's own lines (also in helpers defined in earlier calls), stderr is captured, and undo_on_error=True rolls 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_document checks the path first instead of failing with E_INVALIDARG and never rewrites library or Content Center files; manage_documents clears the Part12s left by failed attempts

  • Several 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 takes instance= to pick one, and each has its own call thread and execute_python namespace, so one agent's long call doesn't hold up the other. list_instances shows 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 client connect(project=…) gets them back

  • Transactions — 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 renamed FastMCP to MCPServer; the server detects which is installed)

  • An MCP client — used daily with Claude Code and Claude Desktop (several agents at once, see below)

Installation

  1. Clone this repository:

    git clone https://github.com/cenitu/inventor-mcp-server.git
  2. Install dependencies:

    pip install "mcp[cli]" pywin32
  3. Register the server with your MCP client. For Claude Code, add to .mcp.json in your project root (see .mcp.json.example). Use the absolute path to inventor_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 ignores cwd and starts the server from your project root, where the package can't be found — the process exits immediately and the client only reports Connection closed. Pointing at the script by absolute path works from any directory.

    Configs written for 0.2.x that point at src/server.py still work — that file now forwards to the inventor_mcp_server package — 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.)

  4. Restart the MCP client (MCP servers load at session start), start Inventor, then ask your AI assistant to build something.

Avoid win32com.client.gencache.EnsureDispatch and CastTo in your own scripts against the same Python install — they generate a gen_py cache that breaks plain GetActiveObject (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_py if 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 → Developer should then list inventor as 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:

  1. 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.

  2. With several connected, every call carries instance=<name> (the agent learns the name from connect); a call without it is refused instead of guessing. list_instances shows them all.

  3. Each Inventor has its own call thread, execute_python namespace and manage_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_instances lists 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's connect(project=…) gets the same Inventor back, open documents and all (connect(pid=…) picks one explicitly; list_instances shows 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 --own starts its own Inventor and quits it. Exit your own scripts a few seconds after app.Quit(): a process that ends right away can leave a windowless Inventor.exe behind — 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 work

It 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).

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 orientation 19201/19202/19203, …)

  • ChamferFeatures.AddUsingDistance(EdgeCollection, d) — the 2026 replacement for the removed CreateChamferDefinition

  • Sheet-metal FlangeDefinition: the Distance argument is silently ignored; the real height is set via feature.Definition.HeightExtent.Distance.Expression (and the angle is in radians — pass 90 and you get 5156°)

  • CreateLinearPlacementDefinition requires a BiasPoint argument that dynamic dispatch won't tell you about

  • Edge 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 knowledge

Contributing

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.py and 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 tools
add_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).

NameRequiredDescriptionDefault
axisNoZ
angleNo
countNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
feature_indexYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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

An output schema exists, so return values need no explanation, and 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
radiusNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
edge_indicesYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return values need 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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".

NameRequiredDescriptionDefault
angleNo
distanceNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
miter_gapNoGapSize
auto_miterNo
edge_indicesYes
height_datumNoouter

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

An output schema exists, so 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.

Parameters5/5

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.

Purpose5/5

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

States a specific verb and resource ("Add a 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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
sizeNo
familyNo
folderNo
membersYes
categoryNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
xNo
yNo
depthNo
pitchNo
pointNo
linearNo
tappedNo
diameterNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
directionNo
cbore_depthNo
cbore_diameterNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose4/5

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

The description gives a specific verb and resource: 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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return values need not be 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.

Parameters2/5

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.

Purpose4/5

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

States a specific verb and resource ("Create a 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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
upNoy
viewsNoiso
widthNo
fit_toNo
heightNo
isolateNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketchesNo
backgroundNoinventor

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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").

NameRequiredDescriptionDefault
distanceNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
edge_indicesNo1

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return values need 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
set_aYes
set_bNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
ignore_fastenersNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists, so return values needn't be spelled out, and the 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pidNo
projectNo
visibleNo
instanceNoName 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_instanceNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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

Given an output schema exists, the description 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.

Parameters5/5

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.

Purpose4/5

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

The description states a specific verb and resource: '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.

Usage Guidelines4/5

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

It gives clear context for when 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).

NameRequiredDescriptionDefault
aYes
bYes
a_atNo
kindNomate
angleNo
offsetNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
axes_opposedNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
toleranceNo
patch_holesNo
work_surfacesNoall

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
kindNopart
nameNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
materialNo
templateNometric
descriptionNo
part_numberNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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

The description uses a specific verb and resource: 'Create a 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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
flatNo
scaleNo
viewsNofront,top,right,iso
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
pdf_pathYes
templateNoISO
drawing_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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

Opens with a specific verb, resource and 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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
planeNoXY
offsetNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
face_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

An output schema exists, so return values need not be described. 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.

Parameters5/5

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.

Purpose5/5

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

States a specific verb and resource ('Create a 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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
cxNo
cyNo
x1Yes
x2Yes
xmNo
y1Yes
y2Yes
ymNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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

States a specific verb and resource ('Draw 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.

Usage Guidelines5/5

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

Gives explicit routing: use this for 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.

NameRequiredDescriptionDefault
xNo
yNo
diameterNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
constructionNo
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
pointsYes
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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

States a specific verb and resource ('Draw 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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
x1No
x2No
y1No
y2No
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
constructionNo
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

An output schema exists so return values need not be described, and 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

There is no guidance on when to use this versus 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).

NameRequiredDescriptionDefault
xNo
yNo
dxNo
dyNo
pcdNo
rowsNo
angleNo
countNo
shapeNocircle
widthNo
lengthNo
columnsNo
diameterNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
start_angleNo
sketch_indexNo
corner_radiusNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
xNo
yNo
sidesNo
radiusNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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

The description states a specific verb and resource — 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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
xNo
yNo
widthNo
heightNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo
corner_radiusNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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

States a specific verb and resource — 'Draw 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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
xYes
yYes
angleNo
widthYes
lengthYes
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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

States a specific verb and resource (draw 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.

Usage Guidelines2/5

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

No statement of when to use this 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.

NameRequiredDescriptionDefault
valuesNo
mass_kgNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
materialNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists, so return values need not be explained. 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

It gives clear context for use: 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).

NameRequiredDescriptionDefault
codeYes
timeoutNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
undo_on_errorNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
pathNo
viewNoparts_only
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
pathYes
formatNoSTEP
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description 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.

Conciseness4/5

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

The core action is front-loaded in the first sentence, and the 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.

Completeness3/5

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

An output schema exists, so return values need not be 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.

Parameters4/5

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.

Purpose4/5

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

The description states a specific verb and resource: 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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
pathNo
formatNoDXF
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
bend_linesNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

Given an output schema exists, the description 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.

Parameters4/5

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.

Purpose5/5

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

The description states a specific verb and resource: 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.

Usage Guidelines4/5

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

The description gives clear usage context: 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).

NameRequiredDescriptionDefault
distanceNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
directionNopositive
operationNojoin
extent_typeNodistance
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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

For a mutation tool with no 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
radiusNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
edge_indicesNo1

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description 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.

Conciseness4/5

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.

Completeness3/5

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

With an output schema present, return values need no explanation, and the 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
atNo
pathNo
circularNo
diameterNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
max_countNo
min_lengthNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists, so return values need not be described. 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
atNo
pathNo
normalNo
surfaceNo
diameterNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
min_areaNo
max_countNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists, so return values need no 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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
nameNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
step_pathYes
dest_folderYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

An output schema exists, so 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

The phrase 'in one call' implies 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.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
pathYes
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

Output schema exists, so return values need not be explained. 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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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".

NameRequiredDescriptionDefault
actionNostatus
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
wait_secondsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
indexNo
actionNolist
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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

An output schema exists, so return values 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
actionNolist
discardNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
name_or_pathNo
quit_inventorNo
include_activeNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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".

NameRequiredDescriptionDefault
actionNolist
indicesNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return values 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
pathNo
partsNo*
actionNoreport
searchNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
materialNo
only_genericNo
only_problemsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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".

NameRequiredDescriptionDefault
axisNo
nearNo
pathNo
depthNo
forceNo
actionNolist
withinNo
cascadeNo
groundedNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
definitionNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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, …

NameRequiredDescriptionDefault
nameNo
unitsNomm
actionNoget
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
expressionNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return values need not be 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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".

NameRequiredDescriptionDefault
nameNo
actionNolist
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
thicknessNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists, so return values 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
aYes
bYes
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

With an output schema present, return values need no 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
sideNoinside
distanceYes
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

An output schema exists, so return values need not be described. 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.

Parameters4/5

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.

Purpose5/5

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

The description states a specific verb and resource: 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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
atomicNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
componentsYes
skip_if_existsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

For a mutation tool with 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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
body_indexNo
face_indexNo
edge_indicesNo
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

An output schema exists, so return values need not be explained, and the 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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description uses a specific verb and resource: '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.

Usage Guidelines4/5

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:

  1. create_sketch("XY")

  2. draw_closed_profile([[0,0],[30,0],[30,8],[15,60],[0,60]]) ← profile only

  3. revolve(axis="Y", operation="join")

For a revolve CUT (e.g. groove):

  1. create_sketch("XY")

  2. draw_closed_profile([[8,26],[15,26],[15,34],[8,34]]) ← groove cross-section

  3. 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.

NameRequiredDescriptionDefault
axisNoY
angleNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
operationNojoin
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description states a specific verb and resource: "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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
overwriteNo
save_dependentsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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]], ...].

NameRequiredDescriptionDefault
circlesNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
face_indexNo
rectanglesNo
sketch_indexNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
stepNo
stopNo
startNo
movingYes
againstNo
axis_dirYes
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
axis_pointYes
measure_toNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
nameNoMCP batch
actionNobegin
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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

An output schema exists so return values need not be described, and the 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
sizeNo
familyNo
lengthNo
categoryNo
instanceNoWhich connected Inventor to use (list_instances). Leave empty when only one is connected.
file_nameNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists, yet the description still 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 85 tool updatesv1.0.0
    • Removedactivate_document
    • Addedadd_circular_pattern
    • Addedadd_corner_round
    • Addedadd_flange
    • Addedadd_frame_members
    • Addedadd_hole
    • Removedadd_parameter
    • Addedadd_sheet_metal_face
    • Removedassembly_faces
    • Removedassembly_info
    • Removedbom
    • Removedcall_status
    • Removedcancel_call
    • Addedcapture_view
    • Changedcheck_interference1 field changed
      • addedInput schema / properties / ignore_fasteners
        Added value: +{
        +  "default": false,
        +  "title": "Ignore Fasteners",
        +  "type": "boolean"
        +}
    • Removedcircular_pattern
    • Removedclose_unsaved
    • Changedconstrain9 fields changed
      • addedInput schema / properties / a
        Added value: +{
        +  "title": "A",
        +  "type": "string"
        +}
      • addedInput schema / properties / a_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "A At"
        +}
      • addedInput schema / properties / axes_opposed
        Added value: +{
        +  "default": true,
        +  "title": "Axes Opposed",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / b
        Added value: +{
        +  "title": "B",
        +  "type": "string"
        +}
      • removedInput schema / properties / geometry1
        Removed value: -{
        -  "title": "Geometry1",
        -  "type": "string"
        -}
      • removedInput schema / properties / geometry2
        Removed value: -{
        -  "title": "Geometry2",
        -  "type": "string"
        -}
      • removedInput schema / properties / occurrence1
        Removed value: -{
        -  "title": "Occurrence1",
        -  "type": "integer"
        -}
      • removedInput schema / properties / occurrence2
        Removed value: -{
        -  "title": "Occurrence2",
        -  "type": "integer"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "occurrence1",
        -  "geometry1",
        -  "occurrence2",
        -  "geometry2"
        -]New value: +[
        +  "a",
        +  "b"
        +]
    • Removedconstrain_faces
    • Removedconstrain_insert
    • Removedcontent_center
    • Addedconvert_surfaces_to_solid
    • Removedcorner_round
    • Removedcreate_assembly
    • Addedcreate_document
    • Addedcreate_drawing
    • Removedcreate_part
    • Removedcut_on_face
    • Removeddelete_constraint
    • Removeddelete_feature
    • Removeddelete_occurrence
    • Addeddraw_pattern
    • Addededit_properties
    • Addedexport_bom
    • Addedexport_flat_pattern
    • Removedfind_edge
    • Addedfind_edges
    • Removedfind_face
    • Addedfind_faces
    • Removedflange
    • Removedflat_pattern
    • Removedframe_members
    • Removedget_parameters
    • Addedget_status
    • Removedground_occurrence
    • Removedhole
    • Removedhole_linear
    • Removedinspect
    • Addedinspect_model
    • Removedlist_component_edges
    • Removedlist_constraints
    • Removedlist_documents
    • Removedlist_edges
    • Removedlist_faces
    • Removedlist_features
    • Removedlist_materials
    • Removedlist_occurrences
    • Removedlist_sheet_metal_rules
    • Removedmake_drawing
    • Addedmanage_call
    • Addedmanage_constraints
    • Addedmanage_documents
    • Addedmanage_features
    • Addedmanage_materials
    • Addedmanage_occurrences
    • Addedmanage_parameters
    • Addedmanage_sheet_metal_rules
    • Removedmaterial_report
    • Removedplace_component
    • Addedplace_components
    • Removedplace_many
    • Removedproperties
    • Changedsave_document1 field changed
      • changedInput schema / properties / save_dependents / default
        Previous value: -trueNew value: +false
    • Removedset_material
    • Removedset_parameter
    • Removedset_sheet_metal_rule
    • Removedset_sheet_metal_thickness
    • Changedsheet_metal_cut3 fields changed
      • addedInput schema / properties / circles
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {},
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Circles"
        +}
      • addedInput schema / properties / face_index
        Added value: +{
        +  "default": 0,
        +  "title": "Face Index",
        +  "type": "integer"
        +}
      • addedInput schema / properties / rectangles
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {},
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Rectangles"
        +}
    • Removedsheet_metal_face
    • Removedsketch_pattern
    • Removedstatus
    • Removedsuppress_feature
    • Removedsurface_to_solid
    • Addeduse_content_center
    • Removedview_image
  2. 82 tool updatesv0.8.0
    • First observedactivate_document
    • First observedadd_parameter
    • First observedassembly_faces
    • First observedassembly_info
    • First observedbom
    • First observedcall_status
    • First observedcancel_call
    • First observedchamfer
    • First observedcheck_interference
    • First observedcheck_sketch
    • First observedcircular_pattern
    • First observedclose_unsaved
    • First observedconnect
    • First observedconstrain
    • First observedconstrain_faces
    • First observedconstrain_insert
    • First observedcontent_center
    • First observedcorner_round
    • First observedcreate_assembly
    • First observedcreate_part
    • First observedcreate_sketch
    • First observedcut_on_face
    • First observeddelete_constraint
    • First observeddelete_feature
    • First observeddelete_occurrence
    • First observeddraw_arc
    • First observeddraw_circle
    • First observeddraw_closed_profile
    • First observeddraw_line
    • First observeddraw_polygon
    • First observeddraw_rectangle
    • First observeddraw_slot
    • First observedexecute_python
    • First observedexport_document
    • First observedextrude
    • First observedfillet
    • First observedfind_edge
    • First observedfind_face
    • First observedflange
    • First observedflat_pattern
    • First observedframe_members
    • First observedget_parameters
    • First observedground_occurrence
    • First observedhole
    • First observedhole_linear
    • First observedimport_step
    • First observedinspect
    • First observedlist_component_edges
    • First observedlist_constraints
    • First observedlist_documents
    • First observedlist_edges
    • First observedlist_faces
    • First observedlist_features
    • First observedlist_instances
    • First observedlist_materials
    • First observedlist_occurrences
    • First observedlist_sheet_metal_rules
    • First observedload_library
    • First observedmake_drawing
    • First observedmaterial_report
    • First observedmeasure_distance
    • First observedoffset_profile
    • First observedplace_component
    • First observedplace_many
    • First observedproject_edges
    • First observedproperties
    • First observedreload_api
    • First observedrevolve
    • First observedsave_document
    • First observedset_material
    • First observedset_parameter
    • First observedset_sheet_metal_rule
    • First observedset_sheet_metal_thickness
    • First observedsheet_metal_cut
    • First observedsheet_metal_face
    • First observedsketch_pattern
    • First observedstatus
    • First observedsuppress_feature
    • First observedsurface_to_solid
    • First observedsweep_rotation
    • First observedtransaction
    • First observedview_image

TDQS

A3.5/5.0

Scored across 57 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count1/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for parametric 3D modeling in Autodesk Inventor, enabling natural language control of sketching, extrusion, hole features, and sheet metal operations.
    47
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to control Autodesk Inventor via COM automation for part modeling, assembly constraints, drawing views, and more.
    5
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language control of Autodesk Inventor to create parametric parts, sketches, holes, and sheet-metal features, and to inspect, save, or export models.
    MIT