Skip to main content
Glama

FERS — structural FEM

Add a cross-section

create_section
Read-only

Add or replace a cross-section on an existing FERS model and optionally assign it to members. Takes the model JSON, mutates model.sections (and model.materials when a new preset is introduced), returns the model.

THREE WAYS TO DEFINE IT:

  1. LIBRARY — shape:"library" with library_name (or just name) set to a library profile — European IPE/HEA/HEB/HEM/UPE/RHS/SHS/CHS/L or UK UB/UC/PFC, e.g. "IPE300", "HEB240", "CHS 114.3x5", "RHS 100x50x5", "UB 457x191x67". This is the ONLY way to get exact rolled-profile properties (root fillets included) and it carries every EC3 modulus. Prefer it whenever a standard profile fits.

  2. PARAMETRIC — shape:"rect" (h_mm, b_mm), "circle" (d_mm), "chs" (d_mm, t_mm), "rhs"/"shs"/"box" (h_mm, b_mm, t_mm) or "i" (h_mm, b_mm, tf_mm, tw_mm), dimensions in MILLIMETRES. rect/circle/chs are exact and rhs area+inertias are exact (its Bredt torsion J is ~2% low), but the "i" generator assumes SHARP fillets: against a real rolled IPE300 it is 3.6% low on area, 4.3% low on i_z and 22% low on J. Use "i" for WELDED plate girders, not for rolled profiles.

  3. CUSTOM — shape:"custom" with your own SI numbers. area, i_y, i_z and j are all MANDATORY and strictly positive; a missing one is a hard parse error and a MISTYPED one is silently ignored (Section has no deny_unknown_fields), giving a wrong answer that still solves.

AXIS CONVENTION: local z is the STRONG axis. For depth h and width b, i_z = b·h³/12 (strong, resists gravity on a horizontal member) and i_y = h·b³/12 (weak). Getting these the wrong way round is the most common authoring error and the solver cannot detect it.

EC3 CHECKS NEED MORE THAN STIFFNESS. An Ec3Steel check on a section lacking wel_y/wpl_y/i_w does not fail — it returns utilization 0.0, status Green and an explanatory message, which reads as a clean pass. So also give wel_y, wel_z, wpl_y, wpl_z and i_w (warping constant, m⁶); the parametric shapes compute these for you. Optionally add ec3 {"section_class":1,"buckling_curve_y":"B","buckling_curve_z":"C","buckling_curve_lt":"B"} — curves A0/A/B/C/D (alpha 0.13/0.21/0.34/0.49/0.76); omitting the block silently uses curve b. Unlike the rest of the section, the ec3 block DOES reject unknown keys, so a typo there is a hard solve-time error.

ASSIGNMENT: apply_to "all" reassigns every member, a JSON array of member ids reassigns those, a classification string reassigns every member in that group. A section whose name already exists is overwritten IN PLACE, keeping its id and all existing member references.

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

Input Schema

NameRequiredDescriptionDefault
jNoTorsion constant, m⁴.
ec3NoEN 1993-1-1 design parameters: {"section_class":1,"buckling_curve_y":"a","buckling_curve_z":"b","buckling_curve_lt":"c"}. Unlike the rest of Section, a typo here IS a hard error.
i_wNoWarping constant, m⁶.
i_yNoSecond moment about local y, m⁴.
i_zNoSecond moment about local z (STRONG axis), m⁴.
a_syNoShear area along local y, m².
a_szNoShear area along local z, m².
areaNoArea in m² (required for shape 'custom').
b_mmNoWidth in MILLIMETRES.
d_mmNoDiameter in MILLIMETRES (circle/chs).
h_mmNoDepth in MILLIMETRES.
nameYesName for the section in this model.
t_mmNoWall thickness in MILLIMETRES.
modelNoStringified FERS model JSON
shapeNolibrary (default when library_name is given) | rect | circle | chs | rhs | shs | box | i | custom. Prefer "library" for a standard profile: the parametric "i" generator has sharp fillets and is ~4% low on area and ~22% low on J versus a real rolled IPE300.
tf_mmNoFlange thickness in MILLIMETRES.
tw_mmNoWeb thickness in MILLIMETRES.
wel_yNoElastic modulus about y, m³.
wel_zNoElastic modulus about z, m³.
wpl_yNoPlastic modulus about y, m³.
wpl_zNoPlastic modulus about z, m³.
apply_toNo"all", a JSON array of member ids, or a classification string — assigns the section to those members.
materialNoMaterial preset for this section (see list_materials).
model_refNoHandle from stash_model, used INSTEAD of `model`. Avoids sending the whole document on every step; the tool returns the same handle back.
library_nameNoLibrary section name, e.g. IPE300 (see list_sections).

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?

Goes far beyond the annotations, disclosing several silent-failure modes an agent would otherwise be blind to: an Ec3Steel check on a section missing wel_y/wpl_y/i_w returns utilization 0.0 with a Green pass, a mistyped custom field is silently ignored while a missing one is a hard parse error, the ec3 block alone rejects unknown keys, and omitting the ec3 block silently defaults to curve b. It also explains in-place overwrite semantics and member reassignment rules. readOnlyHint=true is not treated as a contradiction because the mutation is of the model payload the caller passes in and gets back, not persisted environment state, and the description makes that transform explicit.

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?

Length is justified by a 25-parameter tool with three authoring modes, and the purpose is front-loaded before the numbered detail. It is dense rather than padded, though the all-caps emphasis and multi-clause sentences (notably the library examples and the EC3 paragraph) could be trimmed without losing facts.

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 parameter-heavy mutation tool with no output schema, it covers what an agent needs: how to supply the model (model vs model_ref handle), the three construction routes with their accuracy caveats, what must accompany EC3 checks, how assignment targets are resolved, and what happens on name collision. Nothing material to calling it correctly is left unspecified.

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 already 100%, so the baseline is 3; the description still adds real meaning by pairing shapes with the dimensions each requires, restating that dimensions are in millimetres, spelling out that area/i_y/i_z/j are mandatory for custom, and giving the axis convention (local z = strong) that resolves the ambiguity in the i_y/i_z schema text. It also documents apply_to's three accepted forms and the EC3 curve letters with their alpha values.

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?

Opens with a specific verb, resource and scope: 'Add or replace a cross-section on an existing FERS model and optionally assign it to members', and immediately states the effect on model.sections/model.materials and the return value. That is enough for an agent to distinguish it from get_section, list_sections and set_member 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 Guidelines5/5

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

Explicitly enumerates three authoring modes and states selection rules that an agent could not infer: prefer LIBRARY 'whenever a standard profile fits', use the parametric 'i' generator for welded plate girders but not rolled profiles, and use CUSTOM only with full SI data. It also points at the relevant sibling tools (list_sections, list_materials) for the lookup steps.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.