Skip to main content
Glama

recommend_joint_strategy

Read-only

Choose a fastener and joint strategy for 3D-printed parts by weighing material, structural load, and reassembly; include compensated hole sizing when a screw size is given.

Instructions

Tell me what kind of fastener / joint to use for a 3D-printed part.

Needs Kiln Pro.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "recommend_joint_strategy"
  }
}

Input Schema

NameRequiredDescriptionDefault
materialNoPrinted-part material the screw threads into (``"PLA"``, ``"PETG"``, ...). Only consulted when ``fastener_size`` is set. Defaults to ``"PLA"``. Default: "PLA".
substrateNo``"plastic_print"`` (the printed plastic holds the thread) or ``"metal"`` (the printed part is just a pass-through; metal holds the thread — e.g. a license plate frame on a vehicle bracket). Default: "plastic_print".
print_axisNoReserved; not currently consulted. The ``hardware`` block surfaces both horizontal and vertical hole diameters so the caller picks per orientation. Default: "".
printer_idNoPrinter identifier (e.g. ``"bambu_a1"``). On a Bambu X1 / P1 / A1 the ``hardware`` block carries that machine's compensated hole sizes; any other printer gets a generic starting point. Default: "".
fastener_sizeNoOptional screw size (``"M3"``, ``"BT3"``). When provided AND the recommended joint threads into printed plastic, attaches a ``hardware`` block with compensated hole geometry. Default: "".
cycled_assemblyNo``True`` if the joint will be taken apart more than once — lid screws, removable panels, modular accessories. Pushes recommendation toward heat-set inserts. Default: false.
fastener_familyNoOptional kind of screw: a machine screw (``"machine_screw"``, ``"metric_machine_screw"``, ``"imperial_machine_screw"``), a thread-forming one (``"wood_screw"``, ``"sheet_metal_screw"``, ``"self_tapping_screw"``), or ``"heat_set_insert"`` (the screw threads into the insert, so no ``hardware`` block). Spelling is forgiven (case, spaces, hyphens). Only consulted when ``fastener_size`` is set. Omitted (``""``), the size alone decides. Any other kind is sized as a machine screw (a ``BT`` size as self-tapping), and ``fastener_family_read`` says which: ``"machine_screw"``, not the kind sent. Default: "".
structural_loadNo``True`` if the joint carries meaningful tensile / shear load (printer frame, wall bracket, anything that holds weight). Default: false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv1.5.1
    • changedInput schema / properties / cycled_assembly / description
      Previous value: -"Default: false."New value: +"``True`` if the joint will be taken apart more than once — lid screws, removable panels, modular accessories.  Pushes recommendation toward heat-set inserts. Default: false."
    • addedInput schema / properties / fastener_family
      Added value: +{
      +  "description": "Optional kind of screw: a machine screw (``\"machine_screw\"``, ``\"metric_machine_screw\"``, ``\"imperial_machine_screw\"``), a thread-forming one (``\"wood_screw\"``, ``\"sheet_metal_screw\"``, ``\"self_tapping_screw\"``), or ``\"heat_set_insert\"`` (the screw threads into the insert, so no ``hardware`` block). Spelling is forgiven (case, spaces, hyphens).  Only consulted when ``fastener_size`` is set.  Omitted (``\"\"``), the size alone decides.  Any other kind is sized as a machine screw (a ``BT`` size as self-tapping), and ``fastener_family_read`` says which: ``\"machine_screw\"``, not the kind sent. Default: \"\".",
      +  "title": "Fastener Family",
      +  "type": "string"
      +}
    • changedInput schema / properties / fastener_size / description
      Previous value: -"Default: \"\"."New value: +"Optional screw size (``\"M3\"``, ``\"BT3\"``).  When provided AND the recommended joint threads into printed plastic, attaches a ``hardware`` block with compensated hole geometry. Default: \"\"."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"PLA\"."New value: +"Printed-part material the screw threads into (``\"PLA\"``, ``\"PETG\"``, ...).  Only consulted when ``fastener_size`` is set.  Defaults to ``\"PLA\"``. Default: \"PLA\"."
    • changedInput schema / properties / print_axis / description
      Previous value: -"Default: \"\"."New value: +"Reserved; not currently consulted.  The ``hardware`` block surfaces both horizontal and vertical hole diameters so the caller picks per orientation. Default: \"\"."
    • changedInput schema / properties / printer_id / description
      Previous value: -"Default: \"\"."New value: +"Printer identifier (e.g. ``\"bambu_a1\"``). On a Bambu X1 / P1 / A1 the ``hardware`` block carries that machine's compensated hole sizes; any other printer gets a generic starting point. Default: \"\"."
    • changedInput schema / properties / structural_load / description
      Previous value: -"Default: false."New value: +"``True`` if the joint carries meaningful tensile / shear load (printer frame, wall bracket, anything that holds weight). Default: false."
    • changedInput schema / properties / substrate / description
      Previous value: -"Default: \"plastic_print\"."New value: +"``\"plastic_print\"`` (the printed plastic holds the thread) or ``\"metal\"`` (the printed part is just a pass-through; metal holds the thread — e.g. a license plate frame on a vehicle bracket). Default: \"plastic_print\"."
  2. Addedv1.5.0

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one genuinely useful behavior pointer — the Kiln Pro prerequisite — but says nothing about the hardware geometry block or what the recommendation actually contains, which the schema carries instead.

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?

Two short lines with the purpose front-loaded and the prerequisite clearly separated. The user-voice phrasing 'Tell me what kind of...' is slightly informal but does not waste space.

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 recommendation tool with eight optional, fully-documented parameters and no output schema, the description is thin: it does not convey what the returned strategy looks like or that a hardware block may be attached. The schema compensates for input semantics, but the output/behavior side is left implicit.

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 eight parameters (material, substrate, cycled_assembly, structural_load, fastener_family, etc.) are thoroughly documented in the schema itself. The description adds no parameter-level meaning beyond what the schema provides, making the baseline 3 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 names a specific outcome — choosing a fastener/joint for a 3D-printed part — which is concrete enough to act on. It does not, however, distinguish itself from crowded siblings such as get_joint_recommendation, lookup_fastener, recommend_hardware_pocket, or add_pin_joints, leaving the agent to guess which recommendation tool applies.

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 only usage signal is the 'Needs Kiln Pro' gating prerequisite; there is no guidance on when to prefer this over sibling recommendation tools or when it is inappropriate. The agent gets a license requirement but no selection criteria.

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