Skip to main content
Glama

Add Part

add_part

Insert a part into an assembly by linking to an in-doc body or external FreeCAD file. Set its placement, or align it to an existing parent's interface frame using a mate.

Instructions

Add a part to an assembly via App::Link.

source is one of: {"handle": ""} — link an in-doc body {"path": "/path/to/part.FCStd"} — link first body / subassembly {"path": "/path/to/part.FCStd", "object": "X"} — link named object placement: [x, y, z] or {position: [...], axis: [...], angle_deg: ...}. mate: place by aligning this part's published interface frame to an already-placed parent's, instead of (or after) a raw placement: {"child_iface": "", "parent": "<link-name|handle>", "parent_iface": ""}. Frames come from publish_interface.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mateNo
nameNoPart
sourceYes
assemblyYes
placementNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

B3.1/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false (so it's a write operation) and destructiveHint=false, but the description adds little behavioral context. It mentions the App::Link mechanism and references publish_interface for frames, which gives some insight into the linking behavior, but it does not disclose side effects like modification of the active assembly, error behavior when the source is invalid, or whether the operation is reversible. For a mutation tool with minimal annotation coverage, this is a significant gap.

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

Conciseness4/5

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

The description is efficiently structured with a clear main sentence followed by bullet-like enumerations for source, placement, and mate. It avoids redundant phrasing and packs useful detail into a compact format. Length is appropriate for the complexity of the parameters, though the missing assembly/name explanations prevent a 5.

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

Completeness2/5

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

Without an output schema, the description should ensure callers know how to invoke the tool correctly. It covers the complex parameters in depth but leaves 'assembly' and 'name' semantically undefined, and it does not mention prerequisites (e.g., an open assembly or how to obtain a handle). The reference to publish_interface implies prior knowledge. Given the nested structures and required parameters, the description is incomplete for an agent to reliably use it without additional context.

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

Parameters3/5

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

Schema description coverage is 0%, so all parameter meaning must come from the description. The description thoroughly explains 'source' (three formats), 'placement' (array or object), and 'mate' (structure and purpose), but it omits explanations for 'assembly' and 'name.' 'name' has a default but no semantic detail, and 'assembly' is a required string with no description of what it refers to (e.g., assembly handle, path, or ID). Thus it partially compensates for the missing schema but leaves gaps.

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

Purpose5/5

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

The description states a specific action ('Add a part to an assembly via App::Link') with a clear resource and method. It goes beyond a tautology by explaining the linking mechanism and differentiating from other add_* tools (e.g., add_primitive, add_gear) which create new geometry rather than link existing sources. 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives or when not to use it. It explains how to specify sources and mates but never mentions conditions like 'if you need to reference an existing body or external file, use add_part.' There is no reference to siblings or exclusions, leaving the agent to infer usage from the name.

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

Deploy Server

Other Tools