Skip to main content
Glama

recommend_hole

Read-only

Recommends drill hole sizes and clearance for screws, bearings, rods, and press-fit parts in 3D prints, using material, printer, fit, and depth to catch fit and printability issues.

Instructions

Tell me what size hole to drill for something to fit through.

Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets.

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_hole"
  }
}

Input Schema

NameRequiredDescriptionDefault
fitNo``"press"`` (interference, smaller hole than thing — for press-fit bearings, magnets, pins; a heat-set insert is sized by name, see above), ``"transition"`` (slip-fit, downgrades to ``close`` on FDM with a notice), ``"close"`` (snug slip-through), ``"normal"`` (general assembly, default), ``"loose"`` (alignment-tolerant). Default: "normal".
materialNo``"PLA"``, ``"PETG"``, ``"ABS"``, ``"ASA"``, ``"Nylon"``, ``"TPU"``. Default: "PLA".
print_axisNo``"xy"`` (hole axis horizontal, normal case) or ``"z"`` (hole axis vertical along the print build direction — extra shrinkage applied). Default: "xy".
printer_idNoPrinter identifier (e.g. ``"bambu_a1"``). Required for the threaded table to apply; also enables slicer-calibration overrides on the clearance path. Default: "".
screw_nameNoCatalog name (``"M3"``, ``"1/4-20"``). Use this for known fasteners. Default: "".
thing_typeNo``"screw"``, ``"rod"``, ``"cable"``, ``"bearing"``, ``"dowel_pin"``, ``"led"``, ``"press_fit_insert"``, ``"shaft"``, ``"tube"``, ``"generic"``. Cables get extra slack added. Default: "generic".
hole_purposeNo``"clearance"`` (default — screw slips through), ``"self_thread"`` (machine screw threads into plastic), ``"self_tap"`` (self-tapping BT screw forms its own thread), or ``"counterbore"`` (the pocket that sinks a socket-head cap screw's head; size from ``screw_name``). The two threaded modes read the size from ``screw_name`` and are answered only for Bambu X1 / P1 / A1 printers printing PLA or PETG; for any other printer or material use a clearance hole here and ``recommend_joint_strategy``. Default: "clearance".
hole_depth_mmNoThe hole's depth in mm. Given, the answer warns when the hole is too deep for its width to print cleanly, and (for a counterbore) when the pocket is shallower than the head or deeper than the key reaches. Default: 0.0.
blind_or_throughNo``"blind"`` (closed bottom — may trap support material) or ``"through"`` (default). Default: "through".
edge_distance_mmNoDistance from the hole's centre to the nearest edge of the part, in mm. Given, the answer warns when the hole sits close enough to the edge to bulge the wall. Default: 0.0.
thing_diameter_mmNoFree-form diameter (mm). Use this for non-screw things (rods, cables, bearings) or custom-size screws not in the catalog. Default: 0.0.
wall_thickness_mmNoThe plastic around the hole, in mm. Given, the answer warns when the wall is too thin for the hole (for a heat-set insert, judged by that insert's own rule). Default: 0.0.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changedv1.5.1
    • changedInput schema / properties / blind_or_through / description
      Previous value: -"Default: \"through\"."New value: +"``\"blind\"`` (closed bottom — may trap support material) or ``\"through\"`` (default). Default: \"through\"."
    • changedInput schema / properties / edge_distance_mm / description
      Previous value: -"Default: 0.0."New value: +"Distance from the hole's centre to the nearest edge of the part, in mm.  Given, the answer warns when the hole sits close enough to the edge to bulge the wall. Default: 0.0."
    • changedInput schema / properties / fit / description
      Previous value: -"Default: \"normal\"."New value: +"``\"press\"`` (interference, smaller hole than thing — for press-fit bearings, magnets, pins; a heat-set insert is sized by name, see above), ``\"transition\"`` (slip-fit, downgrades to ``close`` on FDM with a notice), ``\"close\"`` (snug slip-through), ``\"normal\"`` (general assembly, default), ``\"loose\"`` (alignment-tolerant). Default: \"normal\"."
    • changedInput schema / properties / hole_depth_mm / description
      Previous value: -"Default: 0.0."New value: +"The hole's depth in mm.  Given, the answer warns when the hole is too deep for its width to print cleanly, and (for a counterbore) when the pocket is shallower than the head or deeper than the key reaches. Default: 0.0."
    • changedInput schema / properties / hole_purpose / description
      Previous value: -"Default: \"clearance\"."New value: +"``\"clearance\"`` (default — screw slips through), ``\"self_thread\"`` (machine screw threads into plastic), ``\"self_tap\"`` (self-tapping BT screw forms its own thread), or ``\"counterbore\"`` (the pocket that sinks a socket-head cap screw's head; size from ``screw_name``).  The two threaded modes read the size from ``screw_name`` and are answered only for Bambu X1 / P1 / A1 printers printing PLA or PETG; for any other printer or material use a clearance hole here and ``recommend_joint_strategy``. Default: \"clearance\"."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"PLA\"."New value: +"``\"PLA\"``, ``\"PETG\"``, ``\"ABS\"``, ``\"ASA\"``, ``\"Nylon\"``, ``\"TPU\"``. Default: \"PLA\"."
    • changedInput schema / properties / print_axis / description
      Previous value: -"Default: \"xy\"."New value: +"``\"xy\"`` (hole axis horizontal, normal case) or ``\"z\"`` (hole axis vertical along the print build direction — extra shrinkage applied). Default: \"xy\"."
    • changedInput schema / properties / printer_id / description
      Previous value: -"Default: \"\"."New value: +"Printer identifier (e.g. ``\"bambu_a1\"``). Required for the threaded table to apply; also enables slicer-calibration overrides on the clearance path. Default: \"\"."
    • changedInput schema / properties / screw_name / description
      Previous value: -"Default: \"\"."New value: +"Catalog name (``\"M3\"``, ``\"1/4-20\"``). Use this for known fasteners. Default: \"\"."
    • changedInput schema / properties / thing_diameter_mm / description
      Previous value: -"Default: 0.0."New value: +"Free-form diameter (mm).  Use this for non-screw things (rods, cables, bearings) or custom-size screws not in the catalog. Default: 0.0."
    • changedInput schema / properties / thing_type / description
      Previous value: -"Default: \"generic\"."New value: +"``\"screw\"``, ``\"rod\"``, ``\"cable\"``, ``\"bearing\"``, ``\"dowel_pin\"``, ``\"led\"``, ``\"press_fit_insert\"``, ``\"shaft\"``, ``\"tube\"``, ``\"generic\"``.  Cables get extra slack added. Default: \"generic\"."
    • changedInput schema / properties / wall_thickness_mm / description
      Previous value: -"Default: 0.0."New value: +"The plastic around the hole, in mm.  Given, the answer warns when the wall is too thin for the hole (for a heat-set insert, judged by that insert's own rule). Default: 0.0."
  2. Addedv1.5.0

TDQS

C2.7/5.0
Behavior2/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 safety is covered. Beyond that the description offers only a tier list ('Free: Warnings ... Pro: Sizing and fit ...'), which hints that free-tier output may be warnings-only, but it is vague marketing framing rather than a clear statement of what the tool returns, in what units, or how tier gating affects the answer.

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

Conciseness2/5

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

The first sentence is tight and front-loaded, but roughly half the text is a commercial tier ladder ('Free door, tiered answer — Free ... Pro ... Business ... Enterprise ...') that gives an agent no operational information. That content should be trimmed to a single clause about free-tier warnings if retained at all.

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?

With 12 optional parameters, no output schema and no required fields, the description should explain what comes back (recommended diameter plus warnings, presumably) and which input combinations are mutually exclusive (screw_name vs thing_diameter_mm). None of that is stated, and the tier pitch crowds out the information an agent actually needs.

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% and all 12 parameters carry detailed inline semantics (fit modes, materials, print axis, hole_purpose modes with printer/material restrictions, depth/edge/wall warning behavior). The description adds no parameter meaning of its own, 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?

The opening sentence states a specific verb and resource: recommending a drill hole size so a thing fits through. It is clear what the tool produces, but it never distinguishes itself from close siblings such as compute_iso_fit, recommend_running_clearance, design_hole_for_product or recommend_hardware_pocket, so an agent cannot route confidently among them from the description alone.

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 when-to-use or when-not-to-use guidance in the description; the second sentence is a pricing/tier pitch rather than invocation guidance. Any routing hints (e.g. threaded modes only for Bambu X1/P1/A1 in PLA/PETG, otherwise use recommend_joint_strategy) live in the schema parameter text, not the description, so the description contributes nothing here.

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