Skip to main content
Glama

add_mesh_chamfer

Bevels selected edges on a CAD part at a set distance in mm, producing a chamfered mesh plus STEP file. Refuses meshes without CAD and reports which edges stayed sharp.

Instructions

Bevel a part's edges, exactly, on its CAD file.

        The flat-faced twin of ``add_mesh_fillet``: same CAD route, same
        edge selection, same reply.

        Literal: it bevels the edges you select at the distance you give
        (measured along each face from the edge).  An edge on a narrow
        face gets a smaller bevel or stays sharp, a hole's rim stays sharp
        unless selected, and ``edges.left_sharp`` gives every reason.

        A mesh with no CAD file behind it is refused, and a part made
        from an OpenSCAD script is bevelled in its script; each refusal
        says which.

        AGENT DISPLAY CONTRACT: a result carries a before|after self-check
        of the part.  Look at it and write what changed before calling
        the job done.

        :param file_path: The part: a STEP file, or a mesh converted from one.
        :param distance_mm: Bevel distance from the edge in mm (default 0.5).
        :param angle_threshold_deg: An edge is sharp when the surface
            turns at least this much across it (default 60).
        :param output_path: Output ``.stl`` path (defaults to
            ``<name>_chamfered.stl``); the CAD is written beside it.
        :param edges: Which edges; see ``add_mesh_fillet``.
        :param printer_id: The printer the part is for.
        :param nozzle_mm: The nozzle size, when it differs from the one
            Kiln has for the printer.
        :param layer_height_mm: The layer height it will print at.
        :param material: The material it will print in.
        :param plan_only: Return the plan and every edge's id without
            building anything.
        :returns: ``path``, ``step_path``, ``edges`` (finished, left
            sharp, cautions), ``sized_for``, ``volume_mm3`` and the
            measurements before and after; or a refusal saying why.

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": {
      "file_path": "<file_path>"
    },
    "name": "add_mesh_chamfer"
  }
}

Input Schema

NameRequiredDescriptionDefault
edgesNoWhich edges; see ``add_mesh_fillet``. Default: "".
materialNoThe material it will print in. Default: "".
file_pathYesThe part: a STEP file, or a mesh converted from one.
nozzle_mmNoThe nozzle size, when it differs from the one Kiln has for the printer.
plan_onlyNoReturn the plan and every edge's id without building anything. Default: false.
printer_idNoThe printer the part is for. Default: "".
distance_mmNoBevel distance from the edge in mm (default 0.5). Default: 0.5.
output_pathNoOutput ``.stl`` path (defaults to ``<name>_chamfered.stl``); the CAD is written beside it. Default: "".
layer_height_mmNoThe layer height it will print at.
angle_threshold_degNoAn edge is sharp when the surface turns at least this much across it (default 60). Default: 60.0.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv1.5.1
    • changedInput schema / properties / angle_threshold_deg / description
      Previous value: -"Default: 60.0."New value: +"An edge is sharp when the surface turns at least this much across it (default 60). Default: 60.0."
    • changedInput schema / properties / distance_mm / description
      Previous value: -"Default: 0.5."New value: +"Bevel distance from the edge in mm (default 0.5). Default: 0.5."
    • changedInput schema / properties / edges / description
      Previous value: -"Default: \"\"."New value: +"Which edges; see ``add_mesh_fillet``. Default: \"\"."
    • addedInput schema / properties / file_path / description
      Added value: +"The part: a STEP file, or a mesh converted from one."
    • addedInput schema / properties / layer_height_mm / description
      Added value: +"The layer height it will print at."
    • changedInput schema / properties / material / description
      Previous value: -"Default: \"\"."New value: +"The material it will print in. Default: \"\"."
    • addedInput schema / properties / nozzle_mm / description
      Added value: +"The nozzle size, when it differs from the one Kiln has for the printer."
    • changedInput schema / properties / output_path / description
      Previous value: -"Default: \"\"."New value: +"Output ``.stl`` path (defaults to ``<name>_chamfered.stl``); the CAD is written beside it. Default: \"\"."
    • changedInput schema / properties / plan_only / description
      Previous value: -"Default: false."New value: +"Return the plan and every edge's id without building anything. Default: false."
    • changedInput schema / properties / printer_id / description
      Previous value: -"Default: \"\"."New value: +"The printer the part is for. Default: \"\"."
  2. Changed12 schema fields changedv1.5.0
    • removedInput schema / properties / angle_threshold_deg / default
      Removed value: -60
    • addedInput schema / properties / angle_threshold_deg / description
      Added value: +"Default: 60.0."
    • removedInput schema / properties / distance_mm / default
      Removed value: -0.5
    • addedInput schema / properties / distance_mm / description
      Added value: +"Default: 0.5."
    • addedInput schema / properties / edges
      Added value: +{
      +  "description": "Default: \"\".",
      +  "title": "Edges",
      +  "type": "string"
      +}
    • addedInput schema / properties / layer_height_mm
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Layer Height Mm"
      +}
    • addedInput schema / properties / material
      Added value: +{
      +  "description": "Default: \"\".",
      +  "title": "Material",
      +  "type": "string"
      +}
    • addedInput schema / properties / nozzle_mm
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Nozzle Mm"
      +}
    • removedInput schema / properties / output_path / default
      Removed value: -""
    • addedInput schema / properties / output_path / description
      Added value: +"Default: \"\"."
    • addedInput schema / properties / plan_only
      Added value: +{
      +  "description": "Default: false.",
      +  "title": "Plan Only",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / printer_id
      Added value: +{
      +  "description": "Default: \"\".",
      +  "title": "Printer Id",
      +  "type": "string"
      +}
  3. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare non-read-only, non-destructive, closed-world, but the description adds substantial context beyond them: the bevel is literal geometry measured along each face, narrow faces yield smaller bevels or stay sharp, hole rims stay sharp unless selected, refusals are per-cause, and a before|after self-check must be read and reported. It also discloses a side effect annotations never cover — that success opens an interactive 3D stage and decimates oversized meshes for it.

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?

Purpose is front-loaded in the first sentence and the rest is organized into scoped paragraphs (literal behavior, refusals, agent display contract, params, returns, stage). The param paragraph largely restates the schema text verbatim, which is the one block that does not earn its space for a 100%-covered schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 parameters, one required, and no output schema, the description carries the return-value burden and does so — it enumerates path, step_path, edges (finished/left sharp/cautions), sized_for, volume_mm3 and before/after measurements, plus the refusal shape. Nothing an agent needs in order to invoke it or interpret the result is missing.

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 description coverage is 100%, so the baseline is 3, but the description still adds real meaning: it clarifies distance is measured along each face from the edge (the schema only says "bevel distance from the edge"), explains the sharpness rule behind angle_threshold_deg, and notes output_path defaults to <name>_chamfered.stl with the CAD written beside it. The edges parameter is delegated to add_mesh_fillet rather than explained, which is a mild gap.

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?

The opening line gives a specific verb+resource ("Bevel a part's edges") plus the scope qualifier "exactly, on its CAD file", and the second sentence positions it against the sibling add_mesh_fillet as the flat-faced variant. An agent can distinguish this from add_mesh_fillet and from generic mesh ops like render_design_mesh without opening any schema.

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

Usage Guidelines4/5

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

It states clear when-not conditions: a mesh with no CAD file behind it is refused, and an OpenSCAD-derived part is bevelled in its script, with the refusal naming which. It also gives an inspection path via plan_only. What it lacks is an explicit decision rule for choosing this over add_mesh_fillet; "the flat-faced twin" implies the choice but never says "use fillet when you want a rounded edge".

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