Skip to main content
Glama

MIDAS CIVIL NX tools (MIDAS IT Europe)

Design or check a girder's prestressing tendons (Tendon Designer)

tendon_design
Read-only

Designs the post- or pre-tensioning tendons of a concrete girder in the open model to EN 1992-1-1 with the Tendon Designer plugin's own engine, or reads the model's own tendons and checks them (mode improve, the default when tendons run along the girder). Reads the girder (a structure group, element list or the CIVIL NX selection; for improve it is picked from the tendons), its sections, supports and concrete, and the forces: construction-stage results when the model has stages (stage by stage for improve), else the static load cases named, plus an optional live envelope and ULS envelope combination. The girder is ONE girder line (a group holding several girders is split; girderLine picks one). Composite girders (precast + deck slab) are checked stage by stage (compositeMode) with the slab's own concrete, including the slab top; standard precast beams are pre-tensioned on their published strand positions, with debonded (sleeved) strands set or searched for by debonding, each end's length separately. Then auto-designs the layout (new) or reads the tendons in (improve), and runs every check: stresses at transfer and in service, Magnel, load balancing, losses, ULS bending, cover, spacing, bend radius, anchorage zones. autoResolve tries the smallest change that clears failed checks. The design is kept (designId) for tendon_write. Read-only.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "tendon_design"
  }
}

Input Schema

NameRequiredDescriptionDefault
keepNoautoResolve: what it must not change. improve default: anchors, count, strandsPerTendon and duct kept, profile free; new default: nothing kept.
modeNonew = auto-design new tendons; improve = read the model's own tendons on the girder and check / improve them. Default: improve when tendons run along the girder, else new.
groupNoStructure group holding ONE girder's beam elements - the elements one continuous tendon runs through, end to end (not the whole deck). A group holding several girders is split into its girder lines and one is designed (girderLine).
forcesNoWhere the forces come from. Default: CIVIL NX - construction-stage results when the model has stages (the construction-stage analysis must have been run), else static load cases.
settingsNoLoads & prestress values that differ from the model / plugin defaults.
debondingNoPre-tensioned only: strands sleeved (debonded) at the beam ends so they carry no force there - relieves transfer tension at the ends. "auto" = the plugin's Find debonding on the strands as designed (pairs of inner strands, 1-6 m, within 25 % of all strands and 40 % of a row, outermost strands bonded; taken only if checks improve); "none" = every strand bonded (auto-design does not debond either); or a list giving exactly the strands to sleeve, by name as design.debonding.strandNames lists them (standard positions like "A.5", or tendon numbers on a tendon grid). Omitted: as auto-design left it (on a standard precast beam it may already debond). Written to CIVIL NX as each strand's DeBondBLEN / DeBondELEN.
lineLoadsNoforces.source beam: superimposed dead and live line loads, kN/m.
startNodeNoThe girder end its stations are measured from (default: the end the elements run from).
elementIdsNoThe girder's beam elements (one girder line).
girderLineNoWhen the group/elements hold several separate girders: which one to design (1-based, as listed in girderNotes). Default: the one with the most tendons on it.
autoResolveNoWhen checks fail, try the smallest change that clears them (the plugin's Auto-resolve); taken only if fewer checks fail.
useSelectionNoUse the beam elements selected in CIVIL NX (one girder line).
columnStrandsNoStrands per tendon, column by column (left to right, as design.columns lists them); null = the design's strandsPerTendon. A column with its own count is written with its own tendon property. Post-tensioned draped tendons only (not standard strand patterns).
compositeModeNoComposite girder (precast girder + deck slab section): when the tendons are stressed. before = prestress, girder and wet-slab weight on the girder alone, superimposed dead and live load on the composite section (precast / pre-tensioned); after = the slab has hardened, prestress on the composite section too; off = ignore the slab. Default: worked out from the construction stages (first stressing stage vs the slab's CSCS stage), else before. The slab's concrete is read from the model (CSCS, else the section's Es/Ec).
externalTendonsNomode new, post-tensioned box or U girders: add external tendons in the void (CIVIL NX External tendon type), straight between deviators - anchored at the centroid, low at 0.3 and 0.7 of each span just clear of the bottom slab, high over interior supports. Added before the internal tendons are sized, so those are sized with them in place.
sectionNodeLineNoOnly when CIVIL NX will not send the section records: the node line (top, centroid, bottom) the tendon heights are measured from. Worked out from the model otherwise.
standardStrandsNomode new: a section named after a UK/Irish standard precast beam (Y, TY, SY, M, U, W ...) is pre-tensioned on the beam's published strand positions. false (or settings.prestressType "post") post-tensions it instead.
compositeSectionNoOld name of compositeMode: girder = before, whole = after.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / columnStrands
      Added value: +{
      +  "description": "Strands per tendon, column by column (left to right, as design.columns lists them); null = the design's strandsPerTendon. A column with its own count is written with its own tendon property. Post-tensioned draped tendons only (not standard strand patterns).",
      +  "items": {
      +    "maximum": 61,
      +    "minimum": 1,
      +    "type": [
      +      "integer",
      +      "null"
      +    ]
      +  },
      +  "maxItems": 40,
      +  "type": "array"
      +}
    • addedInput schema / properties / externalTendons
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "mode new, post-tensioned box or U girders: add external tendons in the void (CIVIL NX External tendon type), straight between deviators - anchored at the centroid, low at 0.3 and 0.7 of each span just clear of the bottom slab, high over interior supports. Added before the internal tendons are sized, so those are sized with them in place.",
      +  "properties": {
      +    "clear_mm": {
      +      "description": "Clear gap from the sheath to the concrete, mm (default 50).",
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "count": {
      +      "default": 4,
      +      "description": "External tendons (placed beside each web; one at the middle when odd).",
      +      "maximum": 12,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "mu": {
      +      "description": "Friction at the deviators (default 0.12, HDPE duct, EN 1992-1-1 Table 5.1; steel 0.25).",
      +      "maximum": 0.5,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "strands": {
      +      "default": 19,
      +      "description": "Strands per external tendon.",
      +      "maximum": 61,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / debonding
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "auto",
      +        "none"
      +      ]
      +    },
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "endA_m": {
      +            "description": "Sleeved length at end A (the girder's start), m.",
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "endB_m": {
      +            "description": "At end B, m (default = endA_m).",
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "strands": {
      +            "items": {
      +              "type": [
      +                "string",
      +                "integer"
      +              ]
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "strands",
      +          "endA_m"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 100,
      +      "type": "array"
      +    }
      +  ],
      +  "description": "Pre-tensioned only: strands sleeved (debonded) at the beam ends so they carry no force there - relieves transfer tension at the ends. \"auto\" = the plugin's Find debonding on the strands as designed (pairs of inner strands, 1-6 m, within 25 % of all strands and 40 % of a row, outermost strands bonded; taken only if checks improve); \"none\" = every strand bonded (auto-design does not debond either); or a list giving exactly the strands to sleeve, by name as design.debonding.strandNames lists them (standard positions like \"A.5\", or tendon numbers on a tendon grid). Omitted: as auto-design left it (on a standard precast beam it may already debond). Written to CIVIL NX as each strand's DeBondBLEN / DeBondELEN."
      +}
  3. Changed8 schema fields changed
    • addedInput schema / properties / compositeMode
      Added value: +{
      +  "description": "Composite girder (precast girder + deck slab section): when the tendons are stressed. before = prestress, girder and wet-slab weight on the girder alone, superimposed dead and live load on the composite section (precast / pre-tensioned); after = the slab has hardened, prestress on the composite section too; off = ignore the slab. Default: worked out from the construction stages (first stressing stage vs the slab's CSCS stage), else before. The slab's concrete is read from the model (CSCS, else the section's Es/Ec).",
      +  "enum": [
      +    "before",
      +    "after",
      +    "off"
      +  ]
      +}
    • removedInput schema / properties / compositeSection / default
      Removed value: -"girder"
    • changedInput schema / properties / compositeSection / description
      Previous value: -"Composite sections: the girder alone (stressed before the slab acts, the safe choice) or the whole section."New value: +"Old name of compositeMode: girder = before, whole = after."
    • changedInput schema / properties / elementIds / description
      Previous value: -"The girder's beam elements."New value: +"The girder's beam elements (one girder line)."
    • addedInput schema / properties / girderLine
      Added value: +{
      +  "description": "When the group/elements hold several separate girders: which one to design (1-based, as listed in girderNotes). Default: the one with the most tendons on it.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / group / description
      Previous value: -"Structure group holding the girder's beam elements (one unbranched chain)."New value: +"Structure group holding ONE girder's beam elements - the elements one continuous tendon runs through, end to end (not the whole deck). A group holding several girders is split into its girder lines and one is designed (girderLine)."
    • addedInput schema / properties / standardStrands
      Added value: +{
      +  "default": true,
      +  "description": "mode new: a section named after a UK/Irish standard precast beam (Y, TY, SY, M, U, W ...) is pre-tensioned on the beam's published strand positions. false (or settings.prestressType \"post\") post-tensions it instead.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / useSelection / description
      Previous value: -"Use the beam elements selected in CIVIL NX."New value: +"Use the beam elements selected in CIVIL NX (one girder line)."
  4. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and the description confirms it with an explicit trailing 'Read-only.', and adds the key behavioral fact that the design is not written but retained as designId for tendon_write. Beyond that it discloses non-obvious traits the annotations cannot: the girder must be one girder line (groups with several girders are split), composite girders are checked stage by stage, autoResolve is only taken if fewer checks fail, and debonding is written back as DeBondBLEN/DeBondELEN. No contradiction with 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.

Conciseness3/5

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

The purpose is front-loaded in the first clause, which is good, but the remainder is a single very long run-on paragraph that chains girder input, forces, composite handling, debonding and the check list without breaks. Given the tool's complexity the length is largely earned, yet the wall-of-text structure makes it harder to scan than a short bulleted or sentence-per-topic layout would.

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?

For a zero-required-parameter, 18-parameter tool with no output schema, the description covers the workflow, defaults, prerequisites and the designId hand-off well. The remaining gap is that it references output structures (girderNotes, design.columns, design.debonding.strandNames) as if the agent already knows their shape, and gives no sense of what a run returns when checks fail.

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%, so the schema already carries the per-parameter meaning and the baseline is 3. The description reinforces a few high-level defaults (improve keeps anchors/count/strands/duct but frees profile; compositeMode before/after/off) but adds little syntax or format detail beyond what the schema states. Some parameters are referenced only obliquely, e.g. girderLine 'as listed in girderNotes' and columnStrands 'as design.columns lists them'.

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 sentence names a specific verb (designs/checks), a specific resource (post- or pre-tensioning tendons of a concrete girder), the governing code (EN 1992-1-1) and the engine (Tendon Designer plugin). It then explicitly splits the two modes (new = auto-design, improve = read in and check the model's own tendons), so an agent can distinguish this from tendon_write and the pd6694_route_a siblings 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?

It states the default mode and the condition that selects it (improve when tendons run along the girder, else new), when composite stage-by-stage checking applies, when forces come from construction stages vs static cases vs the plugin's own beam, and routes the resulting design to tendon_write. It also states the prerequisite that the construction-stage analysis must have been run, which is exactly the kind of when-to-use gating an agent needs.

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.

Resources