Skip to main content
Glama

Add Rib

add_rib

Add a reinforcing rib inside a PartDesign Body by thickening an open sketch profile into a wall that fuses with surrounding material. Controls thickness, side placement, and direction.

Instructions

Add a reinforcing rib/web inside a PartDesign Body by thickening an OPEN sketch profile into a wall that fuses with the body's surrounding material.

Args: body: handle of the PartDesign Body (from make_body) to add the rib to. sketch: handle of a sketch holding an OPEN spine (a single line, arc, or connected polyline) that defines where the rib runs. Must NOT be a closed loop. The sketch's attachment plane sets the rib's orientation. thickness: rib wall thickness in mm (> 0). midplane: if True (default) the wall is centered on the spine, growing thickness/2 to each side; if False it grows from one side. reversed: flip the extrusion sense (use if the rib lands on the wrong side of its sketch plane). name: object label.

Returns a dict: {handle (starts 'rib_'), name, volume (the whole Body's Shape.Volume in mm^3 after the rib — strictly greater than before the rib, since a rib only adds material), thickness}.

Fallback behaviour the caller should know: FreeCAD's native PartDesign::Rib type is unavailable in AnkusDrive's headless runtime, so the rib is built as an equivalent midplane PartDesign::Pad — the open spine is offset by +/-thickness/2 into a closed footprint and padded across the body so it reaches the surrounding walls. For the usual straight or smoothly-curved spine this matches a Rib; very intricate spines may differ from the native tool. Raises ValueError if the profile is closed/empty/degenerate or thickness <= 0, and RuntimeError if the rib adds no material (spine does not span between walls).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
nameNoRib
sketchYes
midplaneNo
reversedNo
thicknessYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the operation mutates the body by adding material, returns the whole body's volume after the rib (strictly greater than before), and details the fallback implementation: native PartDesign::Rib is unavailable, so it builds an equivalent midplane PartDesign::Pad, which may differ for intricate spines. It also lists exact error conditions (ValueError and RuntimeError). This is exceptionally rich behavioral disclosure.

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 a one-sentence summary, then clearly labeled Args, Returns, and Fallback sections. Although long, every section earns its place: parameter meanings, return shape, fallback behavior, and error cases are all operationally relevant. The structure makes the length navigable rather than bloated.

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?

For a mutating CAD operation with no output schema and no schema descriptions, the description is complete. It covers all six parameters, the return dict structure, the fallback implementation, and error conditions. It even explains why volume is strictly greater. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must fully document parameters. It does: body, sketch, thickness, midplane, reversed, and name each have prose explanations, including constraints (thickness > 0, sketch must be open, midplane centering, reversed purpose). This completely compensates for the schema 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 opens with a precise verb phrase: 'Add a reinforcing rib/web inside a PartDesign Body by thickening an OPEN sketch profile into a wall that fuses with the body's surrounding material.' This clearly states the operation, the resource (PartDesign Body), and the key distinction from siblings: the input must be an OPEN sketch profile. It fully explains what the tool does and makes it distinguishable from pad/pocket/extrude alternatives.

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?

The description states the intended use case (adding a reinforcing rib/web) and gives critical preconditions: the sketch must be an open spine, not a closed loop, and the attachment plane sets orientation. It also provides fallback context explaining when the native Rib is unavailable. However, it does not explicitly name alternatives or say 'use pad/pocket for closed profiles,' so when-not-to-use guidance is only implied.

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