Skip to main content
Glama

design_for_load

Check whether a 3D-printed part will carry its load, delivering a verdict with safety margin so you can size beams, arms, and brackets before printing.

Instructions

Will this part carry its load? A verdict with its safety margin.

Needs Kiln Pro.

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": {
      "load_n": "<load_n>",
      "length_mm": "<length_mm>",
      "cross_section_mm": "<cross_section_mm>"
    },
    "name": "design_for_load"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNo"normie" | "engineer" | "auto". Default: "auto".
briefNoOptional user brief (auto-detects engineer mode).
load_nYesApplied load in newtons.
hardwareNoWhat the part carries besides the stated load, so it is counted: a list of items, each ``{"name": "PCB", "mass_g": 30, "count": 1, "position": "tip"}``. ``mass_g`` is per piece; ``position`` is "tip" (default: the free end, where it bends the arm most), "mid" or "spread". A short name Kiln knows a typical weight for ("cr2032", "18650") may leave out ``mass_g``; any other item without one is refused by name (``HARDWARE_UNWEIGHED``), never skipped. Liquid in a container is hardware too: a litre of water is about 1000 g. Another printed part bolted on is hardware with its own weight.
materialNoMaterial id (petg, pla, nylon, etc.) or a filament brand id. A material with no strength figures is refused by name (``UNKNOWN_MATERIAL``) with the ones Kiln can judge. Default: "petg".
design_idNoThe design the part belongs to, if it has one in Kiln. Default: "".
length_mmYesCantilever span in mm (load arm).
printer_idNoPrinter identifier (e.g. "bambu_a1") to look up calibration for. When supplied, the verdict's confidence_band is modulated by the calibration tier (HIGH narrows, LOW/UNKNOWN widen).
version_idNoThe version of that design being checked. Give the design and version the part belongs to and the verdict is kept with that version, so the history can show what was predicted beside what happened; ``verdict_kept`` says where it was kept, or why it was not, and the answer is the same either way. With a version, ``extras.field_history.this_version`` counts the verdicts kept for it and the reports of how its prints held. ``pending_field_checks``, when present, lists printed parts Kiln judged that have no report yet, each with the question to ask. Default: "".
cycle_countNoHow many times the load comes and goes over the part's life: 1 is a static load; a count in the thousands and up is judged for fatigue as well. Default: 1.
load_positionNo"tip" | "mid" | "udl". Default: "tip".
cross_section_mmYesGeometry dict. For "rectangular": {"b_mm": ..., "h_mm": ...}. For "circular": {"d_mm": ...}. For "tube": {"b_outer_mm", "h_outer_mm", "b_inner_mm", "h_inner_mm"}.
application_classNoHow much margin the use demands, least to most: "prototype", "internal_fixture", "consumer_product", "outdoor_hardware", "life_safety", "lifting_equipment". Any other value is refused. Default: "consumer_product".
count_self_weightNoCount the arm's own weight, spread along it, as solid plastic (default True). Turn off when the arm stands upright or the stated load is not its weight (a sideways push). Default: true.
print_orientationNo"along_layer" — the part bends within the layer planes (a beam printed lying flat): the strong case. "across_layer" — the load pulls the layer interfaces apart (a beam printed standing upright): the weak case, derated for the material's weaker layer bond. If unsure which applies, use "across_layer" — the conservative reading. Default: "along_layer".
cross_section_kindNo"rectangular" | "circular" | "tube". Default: "rectangular".
load_duration_daysNo0 = transient. A load held for a while is derated for creep, smoothly with duration (no steps: day 364 and day 365 agree); far beyond the measured span the answer says it is an extrapolation. The verdict says what share of its strength the part keeps for that duration, and reads the allowance at the part's own load level: a part loaded harder than the measurements behind the allowance gets a smaller one, and a part loaded past the heaviest level any measurement covers is not vouched for (the verdict fails and says so). Default: 0.0.
service_temperature_cNoThe temperature the part lives at under load, in degrees C. Omitted = room temperature, and the verdict says so. A hotter part is judged at the nearest temperature Kiln has data for, at or above it, and the verdict names both: a hot part is weaker the moment it is loaded and creeps faster after. Past the data for that material the verdict comes back "unmeasured" (passes is null): it keeps the room-temperature answer so the part can still be sized, says where the data end and which materials are measured there, and asks to hear how the part did if it is printed anyway. Nothing is blocked. Naming a filament brand as the material (e.g. "bambu_pla_basic") applies that maker's own softening figure where it is lower.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changedv1.5.1
    • changedInput schema / properties / application_class / description
      Previous value: -"Default: \"consumer_product\"."New value: +"How much margin the use demands, least to most: \"prototype\", \"internal_fixture\", \"consumer_product\", \"outdoor_hardware\", \"life_safety\", \"lifting_equipment\".  Any other value is refused. Default: \"consumer_product\"."
    • addedInput schema / properties / brief / description
      Added value: +"Optional user brief (auto-detects engineer mode)."
    • changedInput schema / properties / count_self_weight / description
      Previous value: -"Default: true."New value: +"Count the arm's own weight, spread along it, as solid plastic (default True).  Turn off when the arm stands upright or the stated load is not its weight (a sideways push). Default: true."
    • changedInput schema / properties / cross_section_kind / description
      Previous value: -"Default: \"rectangular\"."New value: +"\"rectangular\" | \"circular\" | \"tube\". Default: \"rectangular\"."
    • addedInput schema / properties / cross_section_mm / description
      Added value: +"Geometry dict.  For \"rectangular\": {\"b_mm\": ..., \"h_mm\": ...}.  For \"circular\": {\"d_mm\": ...}.  For \"tube\": {\"b_outer_mm\", \"h_outer_mm\", \"b_inner_mm\", \"h_inner_mm\"}."
    • changedInput schema / properties / cycle_count / description
      Previous value: -"Default: 1."New value: +"How many times the load comes and goes over the part's life: 1 is a static load; a count in the thousands and up is judged for fatigue as well. Default: 1."
    • changedInput schema / properties / design_id / description
      Previous value: -"Default: \"\"."New value: +"The design the part belongs to, if it has one in Kiln. Default: \"\"."
    • addedInput schema / properties / hardware / description
      Added value: +"What the part carries besides the stated load, so it is counted: a list of items, each ``{\"name\": \"PCB\", \"mass_g\": 30, \"count\": 1, \"position\": \"tip\"}``.  ``mass_g`` is per piece; ``position`` is \"tip\" (default: the free end, where it bends the arm most), \"mid\" or \"spread\".  A short name Kiln knows a typical weight for (\"cr2032\", \"18650\") may leave out ``mass_g``; any other item without one is refused by name (``HARDWARE_UNWEIGHED``), never skipped. Liquid in a container is hardware too: a litre of water is about 1000 g.  Another printed part bolted on is hardware with its own weight."
    • addedInput schema / properties / length_mm / description
      Added value: +"Cantilever span in mm (load arm)."
    • changedInput schema / properties / load_duration_days / description
      Previous value: -"Default: 0.0."New value: +"0 = transient.  A load held for a while is derated for creep, smoothly with duration (no steps: day 364 and day 365 agree); far beyond the measured span the answer says it is an extrapolation.  The verdict says what share of its strength the part keeps for that duration, and reads the allowance at the part's own load level: a part loaded harder than the measurements behind the allowance gets a smaller one, and a part loaded past the heaviest level any measurement covers is not vouched for (the verdict fails and says so). Default: 0.0."
    • addedInput schema / properties / load_n / description
      Added value: +"Applied load in newtons."
    • changedInput schema / properties / load_position / description
      Previous value: -"Default: \"tip\"."New value: +"\"tip\" | \"mid\" | \"udl\". Default: \"tip\"."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"petg\"."New value: +"Material id (petg, pla, nylon, etc.) or a filament brand id.  A material with no strength figures is refused by name (``UNKNOWN_MATERIAL``) with the ones Kiln can judge. Default: \"petg\"."
    • changedInput schema / properties / mode / description
      Previous value: -"Default: \"auto\"."New value: +"\"normie\" | \"engineer\" | \"auto\". Default: \"auto\"."
    • changedInput schema / properties / print_orientation / description
      Previous value: -"Default: \"along_layer\"."New value: +"\"along_layer\" — the part bends within the layer planes (a beam printed lying flat): the strong case.  \"across_layer\" — the load pulls the layer interfaces apart (a beam printed standing upright): the weak case, derated for the material's weaker layer bond.  If unsure which applies, use \"across_layer\" — the conservative reading. Default: \"along_layer\"."
    • addedInput schema / properties / printer_id / description
      Added value: +"Printer identifier (e.g. \"bambu_a1\") to look up calibration for.  When supplied, the verdict's confidence_band is modulated by the calibration tier (HIGH narrows, LOW/UNKNOWN widen)."
    • addedInput schema / properties / service_temperature_c / description
      Added value: +"The temperature the part lives at under load, in degrees C.  Omitted = room temperature, and the verdict says so.  A hotter part is judged at the nearest temperature Kiln has data for, at or above it, and the verdict names both: a hot part is weaker the moment it is loaded and creeps faster after.  Past the data for that material the verdict comes back \"unmeasured\" (passes is null): it keeps the room-temperature answer so the part can still be sized, says where the data end and which materials are measured there, and asks to hear how the part did if it is printed anyway.  Nothing is blocked.  Naming a filament brand as the material (e.g. \"bambu_pla_basic\") applies that maker's own softening figure where it is lower."
    • changedInput schema / properties / version_id / description
      Previous value: -"Default: \"\"."New value: +"The version of that design being checked. Give the design and version the part belongs to and the verdict is kept with that version, so the history can show what was predicted beside what happened; ``verdict_kept`` says where it was kept, or why it was not, and the answer is the same either way.  With a version, ``extras.field_history.this_version`` counts the verdicts kept for it and the reports of how its prints held.  ``pending_field_checks``, when present, lists printed parts Kiln judged that have no report yet, each with the question to ask. Default: \"\"."
  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=false, destructiveHint=false, openWorldHint=false; the description adds a real behavioral fact not in the annotations (a Pro-tier entitlement is required), which is genuinely useful. Beyond that it adds nothing about persistence (the schema mentions verdict_kept but the description does not), and it is silent on whether the call blocks or what happens on a failed verdict. Nothing contradicts the annotations.

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 plus a tier note, front-loaded with the core question and the return shape. There is no filler, though the tier note is buried at the end rather than stated as a precondition up front.

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?

With 18 parameters, a nested cross-section object, and no output schema, the description should at least sketch what the verdict contains; it says only 'a verdict with its safety margin'. The tier requirement is a good addition, but the agent is left to learn from parameter prose that verdict_kept, pending_field_checks, and confidence_band exist in the response.

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 the schema itself carries unusually detailed parameter prose (hardware weighing rules, fatigue via cycle_count, creep via load_duration_days, error codes like UNKNOWN_MATERIAL). The description adds no parameter meaning beyond that, 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 question-form opening ('Will this part carry its load? A verdict with its safety margin') makes it clear this returns a pass/fail judgement plus margin, not a raw stress number. However, it never distinguishes itself from closely related siblings such as assess_load_bearing or estimate_structural_load, so an agent cannot route confidently between them from this text 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?

'Needs Kiln Pro' is a prerequisite/gating note rather than guidance on when to pick this tool over the alternatives. There is no statement of when to use this versus assess_load_bearing, estimate_structural_load, or record_load_outcome, and no description of when-not to use it.

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