Skip to main content
Glama

add_pin_joints

Generate two modified STLs with a real pin-and-socket joint between touching parts, then inspect them on an interactive 3D stage.

Instructions

Give two touching parts a REAL pin-and-socket joint. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).

Needs Kiln Pro.

INLINE 3D STAGE: on success this tool opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "part_a_path": "<part_a_path>",
      "part_b_path": "<part_b_path>"
    },
    "name": "add_pin_joints"
  }
}

Input Schema

NameRequiredDescriptionDefault
scaleNoOutput scale — the joint derives AFTER scaling. Default: 1.0.
materialNoFilament the parts print in — sets the rating basis (default PLA). Default: "PLA".
design_idNoOptional design to track this under — both modified parts are registered as versions so the original and the jointed variants share history. Default: "".
output_dirNoWhere the two new STLs land (default temp). Default: "".
part_a_pathYesThe part that GROWS the pin.
part_b_pathYesThe part that receives the socket.
clearance_mmNoRadial socket clearance (default 0.2). Default: 0.2.
pin_diameter_mmNoOverride the derived diameter in mm (0 = derive from the contact patch). Values outside the printable pin range are clamped and the result says so. Default: 0.0.
application_classNoHow much margin the rating demands, least to most: prototype, internal_fixture, consumer_product, outdoor_hardware, life_safety, lifting_equipment. Any other value is refused. Default: "consumer_product".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv1.5.1
    • changedInput schema / properties / application_class / description
      Previous value: -"Default: \"consumer_product\"."New value: +"How much margin the rating demands, least to most: prototype, internal_fixture, consumer_product, outdoor_hardware, life_safety, lifting_equipment.  Any other value is refused. Default: \"consumer_product\"."
    • changedInput schema / properties / clearance_mm / description
      Previous value: -"Default: 0.2."New value: +"Radial socket clearance (default 0.2). Default: 0.2."
    • changedInput schema / properties / design_id / description
      Previous value: -"Default: \"\"."New value: +"Optional design to track this under — both modified parts are registered as versions so the original and the jointed variants share history. Default: \"\"."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"PLA\"."New value: +"Filament the parts print in — sets the rating basis (default PLA). Default: \"PLA\"."
    • changedInput schema / properties / output_dir / description
      Previous value: -"Default: \"\"."New value: +"Where the two new STLs land (default temp). Default: \"\"."
    • addedInput schema / properties / part_a_path / description
      Added value: +"The part that GROWS the pin."
    • addedInput schema / properties / part_b_path / description
      Added value: +"The part that receives the socket."
    • changedInput schema / properties / pin_diameter_mm / description
      Previous value: -"Default: 0.0."New value: +"Override the derived diameter in mm (0 = derive from the contact patch).  Values outside the printable pin range are clamped and the result says so. Default: 0.0."
    • changedInput schema / properties / scale / description
      Previous value: -"Default: 1.0."New value: +"Output scale — the joint derives AFTER scaling. Default: 1.0."
  2. Addedv1.5.0

TDQS

A3.5/5.0
Behavior4/5

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

Annotations only say non-readonly, non-destructive, closed-world. The description adds substantive behavior beyond that: a Pro-tier requirement, automatic decimation of oversized meshes, a PNG preview being a floor, and the side effect of opening an interactive stage / browser link on success. It still does not say that two new STL files are written, though that is covered in the schema's output_dir.

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

Conciseness3/5

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

The core capability is front-loaded and correct, but the second half is a repeated promotion of the inline 3D stage stated twice in near-identical terms. Roughly half the text is viewer marketing rather than tool-selection information, which dilutes the useful content.

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 9-parameter, no-output-schema mutation tool, the description covers the key prerequisites (touching parts, Pro tier) and the stage side effect. It is missing output framing (that two new files are produced under output_dir) and any error/refusal behavior (e.g. non-touching parts, invalid application_class), which matters for a tool with no output schema.

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 100%, so all nine parameters are already documented (including clamping of pin_diameter_mm and the application_class value set). The description adds essentially no parameter-level meaning on top of the schema, which is the baseline-3 case.

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?

A specific verb and resource are stated: make two touching parts into a pin-and-socket joint, with the pin on part A and socket on part B. It is clear what the tool does, but nothing in the description distinguishes it from adjacent siblings such as add_assembly_interface, add_assembly_part, or recommend_joint_strategy.

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 'two touching parts' implies a precondition (parts must already contact), and 'Needs Kiln Pro' is a real gating constraint. However, there is no explicit guidance on when to choose this over recommend_joint_strategy/get_joint_recommendation, or what to do when parts do not touch (separate_overlapping_parts exists as a sibling).

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