Skip to main content
Glama
Fusion360 MCP Server

Fusion360 MCP Server

by shinobi81

Add Joint

add_joint

Creates a joint between two components using paired faces as joint geometry; use it when components need positioning, as the joint moves them into coincidence.

Instructions

Add a joint between two components using a pair of faces as joint geometry. face_one/face_two are mandatory: a joint cannot be built from component origins, because a bare point carries no component association. Pass a cylindrical face on each side (see get_object_info for the face indices) - for a hinge that is the knuckle bore on each leaf. NOTE: creating a joint MOVES the components so the joint geometry becomes coincident - use create_as_built_joint when the parts are already positioned.

Input Schema

NameRequiredDescriptionDefault
axisNoRotation/slide axis for revolute, slider and cylindrical; primary direction for pin_slot, planar and ball.x
body_oneNoBody inside component_one carrying the joint geometry. Omit when the component holds exactly one body.
body_twoNoBody inside component_two carrying the joint geometry. Omit when the component holds exactly one body.
face_oneYesFace index on that body (cylindrical faces work best).
face_twoYesFace index on that body (cylindrical faces work best).
quadrantNoAngular position of the joint origin on a cylindrical face.middle
key_pointNoAxial position of the joint origin on a cylindrical face. `end` is the only value that produced a valid joint on Fusion 2705; others raise Invalid parameter height or InternalValidationError.end
joint_typeNorigid
second_axisNoSecondary direction for pin_slot and ball. Defaults to an axis perpendicular to `axis`. For ball joints Fusion takes (pitch, yaw) and rejects a pitch parallel to the joint axis, so the perpendicular one is sent first.
component_oneYes
component_twoYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.1

TDQS

A4.5/5.0
Behavior4/5

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

The NOTE discloses a non-obvious and consequential side effect — creating the joint MOVES the components into coincidence — which goes well beyond the supplied annotations and is exactly what an agent needs to know before calling a mutating tool. Gaps remain: no statement of what is returned, what happens on failure (e.g. invalid face index), or whether the move can be undone except generically via the undo 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 with the core action, then constraints, then the implicit alternative, with the side effect flagged as a NOTE so it is not buried. Dense but every clause carries information; the parenthetical hinge example is the only borderline addition and it earns its place as a disambiguator.

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 an 11-parameter, non-idempotent CAD mutation with no output schema, the description covers the make-or-break hazards: mandatory face geometry, the component-move side effect, and the as-built alternative. Remaining shortfall is joint_type, which has no description in the schema and no explanation in the description, leaving the agent to infer the difference between rigid, revolute, and the rest.

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 73%, so the baseline is 3, and the description earns the bump by explaining what face_one/face_two actually mean geometrically (a cylindrical face per side, hinge knuckle bore as the canonical case) and by pointing at get_object_info to obtain indices. It does not add anything for joint_type, axis, or body_one/body_two, which are left entirely 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 — 'Add a joint between two components' — and immediately narrows it to face-pair geometry, distinguishing it from create_as_built_joint and from component-origin constructions. An agent can pick this tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

Explicit preconditions ('face_one/face_two are mandatory', origins don't work and why), guidance on what geometry to choose ('pass a cylindrical face on each side', hinge/knuckle-bore example), a pointer to get_object_info for face indices, and a named alternative plus its selecting condition: 'use create_as_built_joint when the parts are already positioned.'

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