Skip to main content
Glama

fillet

Round one or more edges with a constant radius fillet. Select edges by intent using a filter, or by midpoint or index, to add stress relief or deburred transitions to autoparts.

Instructions

Redondeo — fillet (round) one or more edges, constant radius.

selector (recommended) — pick edges by INTENT instead of reading list_edges() and guessing an index. A closed-schema dict resolved against the live geometry, e.g. round every circular edge: fillet(selector={"filter": {"geom": "circle"}}, radius_mm=2) or the single largest-radius edge: fillet(selector={"filter": {"geom": "circle"}, "sort": {"axis": "radius", "dir": "desc"}, "pick": "first"}, radius_mm=3) Schema: filter{geom:circle|line|arc|other|any, body, radius_mm/radius_tol_mm, axis:x|y|z + at_mm/tol_mm or min_mm/max_mm}, sort{axis:x|y|z|radius, dir}, pick:all|first|last|int|[int]. Mutually exclusive with edge_* args. The result echoes selector_matched {n, sample_points_mm} so you can sanity-check.

Standard autoparts use: stress relief on cast/forged parts, deburred machined edges, transition radii on stamped reinforcements (ISO 8062 on Schaeffler-style brackets). Constant-radius is the v1 variant — variable-radius and full-round fillets are deferred (rare in autoparts juniors' workflows).

Args (edge addressing — pass exactly ONE of selector / edge_midpoints_mm / edge_indices): edge_midpoints_mm: Optional. List of [x, y, z] midpoints from list_edges() → e["midpoint_mm"] (line / partial-arc edges only). radius_mm: Fillet radius. Must be > 0. Typical autoparts values: 0.5-1mm for machined edge softening, 2-5mm for cast-part transitions, R = 0.5-1.5 × wall_thickness for plastic ribs. tangent_propagation: If True (default), SW propagates the fillet along tangent-continuous neighboring edges. False = strict per-edge (each edge gets a separate filleted region). edge_indices: Optional. List of {"body_name": str, "index": int} from list_edges(), verbatim. Works for ANY edge — required for closed-loop circles (disc rims, hole edges, cylinder tops) where midpoint_mm is None.

Returns the resulting Redondeo feature (name, type="fillet", R1).

Failure modes: - midpoint doesn't match any edge → raises with hint to re-run list_edges() - midpoint matches multiple edges within 0.01mm → raises listing candidates - edge_indices: unknown body or out-of-range index → raises with the available bodies / valid index range - radius exceeds adjacent edge lengths → SW silently rejects; we surface "no new feature" with a hint - body name shifts after first fillet ("Saliente-Extruir1" → "Redondeo1"). When filleting N identical-class edges (e.g. all 4 vertical corner edges of a plate), pass ALL N indices in ONE call. Batching N/2 now + N/2 later addresses the OLD body name on the second call and fails with "no new feature"; recovery is undo + redo as one batch.

Caveat: NOT parametric. Re-radiusing requires deleting the feature and re-running. Parametric edits via modify_dimension on "Redondeo1" → "R1" work for simple cases.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
selectorNo
radius_mmNo
edge_circlesNo
edge_indicesNo
edge_midpoints_mmNo
tangent_propagationNo
Behavior5/5

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

With no annotations, the description carries full burden. It discloses failure modes (midpoint mismatch, radius too large), non-parametric nature, batching advice to avoid body name shifts, and propagation behavior (tangent_propagation). No contradictions.

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

Conciseness5/5

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

The description is front-loaded with purpose and key usage, followed by structured sections: selector explanation, args, returns, failure modes, caveats. Every sentence adds value, and the length is justified by the tool's complexity.

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

Completeness4/5

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

Given no output schema, the description covers inputs, failure modes, and caveats adequately. It lacks details on the return object beyond name and type, and omits the 'edge_circles' parameter. Slight incompleteness for a complex tool.

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 coverage is 0%, so the description adds extensive semantics for most parameters: typical radius values, selector schema, edge_midpoints usage, edge_indices format, tangent_propagation effect. However, the parameter 'edge_circles' (present in schema) is not mentioned in the description, leaving a 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 description clearly states 'fillet (round) one or more edges, constant radius' with specific verb and resource. It distinguishes from sibling 'fillet_all_edges' by focusing on specific edges and explains alternative edge addressing methods (selector, edge_midpoints, edge_indices).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use selector vs edge_midpoints vs edge_indices, including recommendations (e.g., 'selector recommended') and exclusions (e.g., variable-radius deferred). It also explains mutual exclusivity of selector and edge_* args.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danielproxd2/MCP_CAD'

If you have feedback or need assistance with the MCP directory API, please join our Discord server