MIDAS CIVIL NX tools (MIDAS IT Europe)
Server Details
Build, check and report on MIDAS CIVIL NX bridge models through the MIDAS IT Europe plugins.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 69 tools
Most tools have distinct plugin-specific purposes, and descriptions often state prerequisite ordering. However, with 69 tools there are many adjacent clusters (e.g. section_read/section_preview/section_properties, cs_stage_summary/results/report, preview_result_table/export_result_tables/result_table_catalog) where an agent can easily choose the wrong entry point unless it reads the long descriptions carefully.
All names are snake_case, and common suffixes like _read, _write, _undo, _preview, _survey, and _setup recur. But there is no single predictable verb_noun convention: some names are noun-first, some verb-first, and much of the structure comes from inconsistent plugin prefixes rather than a uniform action grammar.
69 tools is far beyond a well-scoped MCP server surface and creates a substantial selection burden. Even though the tools are grouped by plugin workflows, the count is extreme for a single server and pushes the set toward a monolith rather than a coherent tool collection.
The set covers many specialised plugin lifecycles deeply, including previews, writes, undo, reporting, and code checks. However, for a general MIDAS CIVIL NX server there are notable gaps: no generic element creation, generic support/boundary creation, generic load-case application, or general analysis-run tool outside specific plugin workflows.
Available Tools
69 toolsauto_structure_groupsAuto Structure GroupsAInspect
Creates one structure group per section, per material, or per section + material pair, with the Auto Structure Groups plugin's own engine: it reads every element's section and material, names each group from the prefix and the section/material names (cleaned and cut to 40 characters, as in the plugin; elements with no section/material go to UNASSIGNED), largest group first. Optional: include each group's nodes, skip groups with fewer than minElements elements, or write only the groups named in groups. A name that already exists is skipped unless existing: 'overwrite' — and then this run's members are ADDED to that group (CIVIL NX merges a write into an existing group; it never removes members). Previews unless apply: true with confirmPlanHash; the plugin's writer re-reads db/GRUP, writes in batches and checks the read-back. auto_structure_groups_undo reverses it.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | What one group holds: one section, one section + material pair, or one material. | section |
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| groups | No | Write only these proposed groups (names from the preview); default all. | |
| prefix | No | Put in front of every group name. | SG_ |
| existing | No | A proposed name that already exists: leave that group alone, or add this run's members to it. | skip |
| minElements | No | Skip groups with fewer elements than this (2 or more turns the filter on). | |
| includeNodes | No | Also put each group's element nodes in the group. | |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: it explains naming rules (prefix + cleaned section/material names, 40-character cut, UNASSIGNED fallback), ordering (largest group first), overwrite semantics ('members are ADDED... it never removes members'), and write verification (re-reads db/GRUP, batches, read-back checks). These details are critical for a mutating tool and are not contradicted by 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and scope, then layers in optional behaviors and safety details. It is dense but mostly earns its length; minor readability could be improved by breaking the single long paragraph into shorter logical chunks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the burden of explaining results. It mentions the preview/planHash workflow and the undo tool, but it does not detail the preview response structure (e.g., proposed group names, counts, planHash). For a complex 8-parameter mutating tool, this is a small remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns a 4 by adding meaningful behavior for key parameters: how 'existing: overwrite' merges rather than replaces, how 'groups' limits the write to named preview groups, and how prefix/minElements/includeNodes affect the generated groups.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Creates one structure group per section, per material, or per section + material pair.' It clearly scopes the tool to grouping by section/material using the Auto Structure Groups engine, making it easy to distinguish from sibling operations like auto_structure_groups_undo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the preview-first workflow ('Previews unless apply: true with confirmPlanHash') and names the undo sibling as the reversal path. It does not explicitly compare to other grouping or stage tools, but the workflow guidance is clear enough to select and invoke the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_structure_groups_undoUndo an Auto Structure Groups runADestructiveInspect
Reverses an auto_structure_groups run from the ledger: deletes the groups it created and puts every group it added members to back exactly as it was (from the snapshot taken just before the write). Refuses while a construction stage uses one of those groups, because deleting a group strips it from every stage. Default: the latest run not yet undone. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No | Ledger run id; default = the latest auto_structure_groups run not yet undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring destructiveHint=true, the description adds substantial behavioral detail: it deletes created groups, restores prior membership from a pre-write snapshot, and refuses to delete groups currently used by construction stages because deletion strips them from stages. This explains exactly what destruction and restoration occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four tight sentences, front-loads the core undo behavior, then adds the refusal condition, default resolution, and preview/apply semantics. Every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive ledger-based undo tool with annotations and a simple schema, the description covers what is undone, what is restored, why the operation may be refused, which run is targeted by default, and how preview mode works. No output schema is present, so no return-value explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the apply parameter has no schema description. The description compensates by explaining that apply defaults to false and previews unless apply is true, while also clarifying the runId default as the latest not-yet-undone run.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it reverses an auto_structure_groups run from the ledger. It clearly distinguishes the undo operation from the forward auto_structure_groups tool by naming what gets deleted and restored.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: default targets the latest run not yet undone, previews unless apply is true, and refuses while a construction stage uses one of the affected groups. It does not explicitly name alternatives such as auto_structure_groups or stages_undo, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
b2p_convertBeam to Plate — convert beams into a plate/solid meshADestructiveInspect
Converts beam elements into a plate (or solid) mesh of their cross-section with the Beam to Plate plugin's own engine (1.0.6): every section CIVIL NX gives geometry for (rolled/fabricated steel, PSC, boxes, composite, tapered groups, VALUE, catalogue), solid concrete sections as a grid of plates or as solids, exact beam loads / nodal loads / temperatures moved onto the mesh, haunches, diaphragms, deck slabs joined, rigid links to whatever else meets the beam's nodes (staged per construction stage), virtual beams per row of plates, groups and composite casting stages carried across. Previews by default (totals, volume check, per-section verdict, notes, what is left behind such as tendons or lanes, problems, planHash) and writes nothing. With apply: true and confirmPlanHash it re-reads the model, refuses if the plan changed, and writes the plugin's way: nodes, thicknesses and elements written and read back, then links, loads, groups, stages, virtual beams, and only then the source beams deleted (deleteSourceBeams); a write that fails part way is rolled back by the plugin. The run is recorded for b2p_undo. Lengths are in the model's unit. Use b2p_survey first. Runs as a background job on the website (poll job_status).
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| model | No | convert = plates/solids along the member; slice = a transverse slice of each section meshed in its own plane (beams kept, nothing linked or loaded). | convert |
| facets | No | Facets per circle for round sections. | |
| groups | No | Every beam in these structure groups. | |
| loadAt | No | Where a converted load lands: exactly where it acts; on the section centreline; spread over the section; spread over the deck top. | exact |
| meshAs | No | Per-section override of the suggestion, {sectionId: 'plate'|'solid'}. | |
| linkAll | No | Rigid-link every member end, not only where something else attaches. | |
| longSize | No | Mesh size along the member (default 0.5 m), in the model's length unit (b2p_survey reports it). | |
| sections | No | Every beam of these section ids. | |
| calibrate | No | Adjust plate thicknesses so the mesh has the section's own A, centroid, Iyy, Izz: where the shape is idealised (generic), every section, or never. | generic |
| groupName | No | Structure group for the whole mesh ('' for none). | B2P mesh |
| joinDecks | No | Join neighbouring girders' deck slabs. | |
| loadFloor | No | Ignore nodal loads under this, in the model's force unit (default 0.01 kN); totals are kept. | |
| materials | No | Material per composite part, {sectionId: {part: materialId}} (b2p_survey lists each section's materialSlots); default: from the CS data or the beam's own. | |
| solidMode | No | auto = each section as the plugin suggests (solid for compact concrete, plates for thin walls); plate; solid. | auto |
| transSize | No | Mesh size across the section (default 0.25 m), in the model's length unit (b2p_survey reports it). | |
| deckPlates | No | Deck plates (plugin 1.0.6): follow = along the slab's mid-thickness, as before; straight = every top-slab node on one line under the top surface, each thicker plate (tapering cantilever, haunches) offset to its own concrete through the plate offset, so area, centroid and second moments are kept; webs run on to the deck line. | follow |
| diaphragms | No | Fill compact diaphragm segments of a box run with plates (plate mode). | |
| elementIds | No | Beam element ids: "101-118, 205" or [101, 102]. | |
| sliceAtPct | No | model 'slice': where along each member, %. | |
| sliceWidth | No | model 'slice': the slice width = plate thickness (default 1 m), in the model's length unit (b2p_survey reports it). | |
| solidPlates | No | How a solid (concrete) section meshed as PLATES is idealised: grid of plates over the real section; thin plates round the outline; one plate per wall. | grid |
| convertLoads | No | Move beam loads, nodal loads on the beams' nodes and element temperatures onto the plates. | |
| virtualBeams | No | One virtual beam per row of plates, so results read as beam forces. | |
| boundaryGroup | No | Boundary group for the rigid links (one per stage in a staged model). | B2P links |
| acceptSections | No | Section ids to convert although their check failed (the window's 'Convert anyway'). Only with the user's agreement. | |
| mergeTolerance | No | Node merge tolerance (default 0.0001 m), in the model's length unit (b2p_survey reports it). | |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. | |
| deleteOrphanNodes | No | Remove the beams' own nodes that nothing else uses once they are deleted. | |
| deleteSourceBeams | No | DESTRUCTIVE: delete the converted beams after the mesh is written and read back (b2p_undo puts them back). Never deleted for a slice. | |
| useCivilSelection | No | The elements selected in CIVIL NX right now. | |
| reuseExistingNodes | No | Use a model node already at a mesh point instead of a new one. | |
| thicknessGroupingPct | No | Plates within this % share one thickness record. | |
| transverseStiffeners | No | Add transverse web stiffeners (CIVIL NX holds none): h outstand, b thickness, spacing along the girder, side, one at each end. | |
| includeUncountedStiffeners | No | Also mesh stiffeners CIVIL NX leaves out of the section (the 'C' box unticked). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: discloses that preview writes nothing, that a write re-reads the model and refuses if the planHash changed, the exact write order, rollback on partial failure, the destructive deleteSourceBeams behaviour (with undo path), and that it runs as a background job requiring job_status polling. This is exactly the extra context annotations can't carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, but the body is a dense run-on paragraph listing many behaviours with little structural separation, making it harder to scan than it needs to be. The content largely earns its place, but the presentation hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 35-parameter, destructive, job-based tool with no output schema, the description covers the write lifecycle, safety, rollback, background-job polling, and the contents of the preview. Return-value detail is partially covered via the preview contents; a little more on the write result shape would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value by tying apply and confirmPlanHash together (write refused if plan differs) and flagging deleteSourceBeams as destructive and skipped for slices. It doesn't explain every parameter, but the schema already does that work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, and engine ('Converts beam elements into a plate (or solid) mesh of their cross-section with the Beam to Plate plugin's own engine'), enumerates the section types handled, and is clearly distinct from b2p_survey (survey) and b2p_undo (undo). An agent can identify exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the workflow: previews by default and writes nothing, write only with apply + confirmPlanHash, 'Use b2p_survey first', and the run is recorded for b2p_undo. The sequencing is clear, though it never states when NOT to use it or names a competing alternative beyond the prerequisite tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
b2p_surveyBeam to Plate — which beams and sections can convertARead-onlyInspect
Reads the model the way the Beam to Plate plugin (1.0.6) does and studies every section the chosen beams use, against CIVIL NX's own published properties (/ope/SECTPROP): whether the outline was READ correctly (A/Iyy/Izz vs published) and how far the PLATE model sits from it, the verdict (converts / blocked / not read, with the reason), the plugin's plate-or-solid suggestion with the mesh a solid would need, material slots of composite parts, the model's length/force units, the beams that cannot be converted and why, and an element estimate for the mesh. Choose beams with ONE of elementIds, sections, groups or useCivilSelection (default: every beam). Read-only; on the website it runs as a background job (poll job_status).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | convert = plates/solids along the member; slice = a transverse slice of each section meshed in its own plane (beams kept, nothing linked or loaded). | convert |
| facets | No | Facets per circle for round sections. | |
| groups | No | Every beam in these structure groups. | |
| meshAs | No | Per-section override of the suggestion, {sectionId: 'plate'|'solid'}. | |
| longSize | No | Mesh size along the member (default 0.5 m), in the model's length unit (b2p_survey reports it). | |
| sections | No | Every beam of these section ids. | |
| calibrate | No | Adjust plate thicknesses so the mesh has the section's own A, centroid, Iyy, Izz: where the shape is idealised (generic), every section, or never. | generic |
| solidMode | No | auto = each section as the plugin suggests (solid for compact concrete, plates for thin walls); plate; solid. | auto |
| transSize | No | Mesh size across the section (default 0.25 m), in the model's length unit (b2p_survey reports it). | |
| elementIds | No | Beam element ids: "101-118, 205" or [101, 102]. | |
| solidPlates | No | How a solid (concrete) section meshed as PLATES is idealised: grid of plates over the real section; thin plates round the outline; one plate per wall. | grid |
| sectionLimit | No | How many section cards to return. | |
| acceptSections | No | Section ids to convert although their check failed (the window's 'Convert anyway'). Only with the user's agreement. | |
| useCivilSelection | No | The elements selected in CIVIL NX right now. | |
| includeUncountedStiffeners | No | Also mesh stiffeners CIVIL NX leaves out of the section (the 'C' box unticked). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and closed-world; the description adds real behavioral context beyond that — the plugin-version fidelity criterion, the comparison source (/ope/SECTPROP), the enumerated verdicts with reasons, and the background-job/polling mode on the website. Pagination and response shape are not described, and no output schema exists, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the opening sentence is an extremely long comma-chained enumeration of every output field, and the selector constraint only appears after it. The content earns its place, but the structure makes it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 15 parameters, nested objects and no output schema, the description does the work of explaining what the tool returns (verdicts, reasons, suggestions, material slots, units, element estimate). Selector exclusivity and the background-job behavior are covered. Only pagination/response envelope details are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, and the description earns a point above it by stating a constraint the schema does not: the four beam selectors are mutually exclusive, use ONE of them, with 'every beam' as the default. That is genuine meaning added over the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it reads the model as the Beam to Plate plugin (1.0.6) does and surveys each section against CIVIL NX's published /ope/SECTPROP properties to produce a convert/blocked verdict. This is clearly a diagnostic pass, distinguishable from the mutating sibling b2p_convert, and no schema needs opening to know what it produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent how to scope the run ('Choose beams with ONE of elementIds, sections, groups or useCivilSelection (default: every beam)') and warns that acceptSections must only be used with the user's agreement. It also notes the website deployment runs as a background job to be polled with job_status. It stops short of explicitly saying 'run this before b2p_convert', which is the natural next step an agent would need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
b2p_undoBeam to Plate — undo a conversionADestructiveInspect
Undoes a b2p_convert run from the ledger with the plugin's own Undo: removes the virtual beams, the plates/solids, the rigid links and construction-joint links, the converted loads and the nodes it made, gives the stages and boundary groups back, then puts the beams back with their beam loads, temperatures, releases, offsets, moved nodal loads and structure-group membership, and reads the model back. Resumable: if CIVIL NX refuses some deletes or the connection goes, the call says what is left and calling again with the same runId carries on (also after a background job that stopped). Afterwards (tidy, default on) it also removes the thickness records and the 'B2P mesh' group the run created when nothing uses them — the plugin's own Undo leaves both. Default run: the latest not undone. Previews unless apply: true; on the website the apply runs as a background job.
| Name | Required | Description | Default |
|---|---|---|---|
| tidy | No | Also remove the thickness records and mesh group this run created, when unused. | |
| apply | No | ||
| runId | No | Ledger run id; default = the latest b2p_convert run not yet undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description goes well beyond them: it lists the exact categories of model entities removed, which are restored to the original beams, that it re-reads the model afterwards, and that tidy additionally deletes thickness records and the 'B2P mesh' group that the plugin's own Undo leaves behind. Resumability and the dry-run default are behaviors no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
All content is relevant, but it is delivered as one very long run-on paragraph where resumability, tidy behavior, default run selection and preview/apply mode are interleaved. Front-loading the undo purpose is good, but the behavioral clauses would scan far better as separate sentences or bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers what an agent needs: default target selection, preview-versus-apply, what a partial failure returns ('says what is left'), and how to resume. Nothing material about invoking this tool safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema coverage, the description compensates for the undocumented `apply` parameter (previews unless true; runs as a background job on the website) and reinforces `runId`'s default. `tidy` is already fully documented in the schema, so the description adds little there, keeping this just under a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Undoes') and a specific resource (a b2p_convert run from the ledger), and enumerates exactly what is reverted versus restored. An agent can distinguish this from b2p_convert or the other *_undo siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit call conditions: default targets the latest not-undone run, it previews unless apply:true, and repeated calls with the same runId resume after a partial failure or a stopped background job. The only minor omission is naming b2p_convert directly as the paired tool, but the runId semantics make that obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_reshapeBridge Reshaper — change spans, skews, alignment and levelsADestructiveInspect
Changes the geometry of the bridge in the open model in place, with the Bridge Reshaper plugin's own engine (1.0.5): new span lengths (the deck is stretched - each span keeps its element count), a skew for each support, a new horizontal alignment (straight, segments, fitted points, LandXML/DXF) and new deck levels (flat, grades with parabolic vertical curves, one-way or crowned cross slope). crossMembers 'parallel' (default) moves nodes only - every element, node, load, group, stage and lane keeps its id; 'square' re-meshes the deck with cross members square to the girders running on to the skewed support lines (straight decks of beam girders only, not with new levels). Loads, structure groups, construction stages, lanes, tapered groups and links follow the deck; beam loads in global axes, plane loads and lane end skews are turned with it; piers and abutments follow their supports ('follow' the skew, or 'rigid' keep their shape). Previews by default: the changes, the issues and a plan drawing (grey = as it is, blue = proposed), with a planHash; nothing is written. With apply: true and confirmPlanHash it re-reads the model, refuses if anything changed since the preview, writes, reads every written node and element back, and records the run for bridge_reshape_undo. Lengths and chainages in the model's unit. Use bridge_reshape_read first. Runs as a background job on the website (poll job_status).
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Spans run along global X or Y. Default: X, or Y when no deck is found along X (the read says which it used). | |
| apply | No | Write to CIVIL NX. Only after the user approved the preview (and saved a copy of the model). | |
| skews | No | New skew of every support in degrees from square, Abutment A first; null keeps one. Default: as modelled. | |
| spans | No | New length of every span, Abutment A first (model unit). Default: as modelled. | |
| layout | No | Deck in straight pieces only: straight (lay it straight) or turns at joints, piers or chainages, each with its angle in degrees (positive turns left). | |
| levels | No | New deck levels (default: as modelled). Each node keeps its depth below the deck surface; piers and abutments are stretched vertically to meet the deck (their lowest node stays). | |
| picture | No | Return a plan drawing (PNG) to look at. | |
| skewAll | No | Instead of skews: the same skew at every support. | |
| supports | No | Where the supports are, chosen instead of the ones found — when the plugin finds none (bearings it cannot read) or finds every construction-stage support defined. Each: ch = chainage along the deck from where its girders start (model unit), skew in degrees from square. At least the two ends. bridge_reshape_read reports the girders' extent and the supports it found. | |
| alignment | No | A new horizontal alignment (default: as modelled - a curved deck keeps its curve). straight: a straight line through the deck start, at the deck's start heading or headingDeg (straightens a curved deck). segments: straights, arcs and clothoid transitions from the deck start, along the deck. points: a curve fitted to X,Y points (model coordinates unless keepCoordinates: false): spline through them, or a least-squares arc or polynomial. landxml / dxf: the file's text. The deck line that follows it is the centreline unless followLine names a girder/edge line (index from bridge_reshape_read). | |
| deckGroups | No | Structure groups that ARE the deck, when the automatic choice is wrong. Default: found from the model. | |
| crossMembers | No | parallel | |
| substructure | No | follow: piers and abutments shear with their support's skew; rigid: they keep their shape and turn with it. | follow |
| addToEverySpan | No | Instead of spans: add this to every span. | |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true already set, the description adds crucial context: previews write nothing, apply requires a matching planHash, the model is re-read and refused if changed, written elements are read back, and the run is recorded for bridge_reshape_undo. It also notes the background job and job_status polling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and every clause is informative, but it is a dense, long block with many semicolon-separated details. For a 15-parameter mutation tool the length is justified, though bullets or shorter sentences would improve scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex destructive mutation tool with no output schema, the description covers the essential workflow: read first, preview default, confirm before writing, stale-plan refusal, undo recording, units, and background execution. An agent has enough to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 93%, so the baseline is 3. The description adds meaningful consequences beyond the schema for key parameters, such as 'parallel' moving nodes only versus 'square' re-meshing the deck, 'follow' vs 'rigid' substructure behavior, and the apply/confirmPlanHash workflow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Changes the geometry of the bridge in the open model in place.' It enumerates the four main capabilities (spans, skews, alignment, levels) and distinguishes itself from bridge_reshape_read and bridge_reshape_undo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use bridge_reshape_read first' and describes the two operating modes: preview by default versus 'With apply: true and confirmPlanHash'. It also states when 'square' cross members are valid and when they are not ('not with new levels').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_reshape_readBridge Reshaper — read the bridgeARead-onlyInspect
Reads the open model the way the Bridge Reshaper plugin (1.0.5) does: the deck (straight, in straight pieces kinked at half-joints or piers, or curved; beam girders, girders meshed as plates, or a spine (single-line) model with its pylons, stays and piers read as substructure; any length unit), its spans, supports and skews (Abutment A, Pier 1…, Abutment B, skew in degrees from square), girder/edge lines, bearings and substructure assemblies, its direction (tightest radius on a curve) and its levels (level at each abutment, grade, cross slope), with a plan drawing. Read-only; on the website it runs as a background job (poll job_status). Use it before bridge_reshape.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Spans run along global X or Y. Default: X, or Y when no deck is found along X (the read says which it used). | |
| picture | No | Return a plan drawing (PNG) to look at. | |
| supports | No | Where the supports are, chosen instead of the ones found — when the plugin finds none (bearings it cannot read) or finds every construction-stage support defined. Each: ch = chainage along the deck from where its girders start (model unit), skew in degrees from square. At least the two ends. bridge_reshape_read reports the girders' extent and the supports it found. | |
| deckGroups | No | Structure groups that ARE the deck, when the automatic choice is wrong. Default: found from the model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already state readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it says the read reports which axis it used, reports the girders' extent and supports found, can return a plan drawing, and on the website runs as a background job to poll with job_status. It does not describe failure modes or authorization needs, but the added async and reporting behavior is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core read action and is mostly made of relevant clauses about what is read and how to invoke it. It is dense and somewhat run-on in the first sentence, but the length is justified by the complexity of the bridge-reading operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex read operation, optional parameters, read-only annotations, and no output schema, the description is largely complete: it explains what model elements are read, that a plan drawing can be returned, that the read reports its chosen axis and found supports, and that it should precede bridge_reshape. It stops short of documenting the exact return structure or failure behavior, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents axis, picture, supports, and deckGroups in detail. The description adds little parameter-specific meaning beyond mentioning the plan drawing and that the read reports the supports it found; baseline 3 is appropriate when the schema carries parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it reads the open bridge model as the Bridge Reshaper plugin does. It then enumerates exactly what is read, including deck, spans, supports, skews, girder/edge lines, bearings, substructure, direction, levels, and plan drawing, which clearly distinguishes it from siblings such as bridge_reshape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use it before bridge_reshape' and notes that on the website it runs as a background job requiring job_status polling. It gives clear context for when to use the tool, though it does not name when-not-to-use cases or alternative read tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_reshape_undoBridge Reshaper — undo a reshapeADestructiveInspect
Undoes a bridge_reshape run from the ledger with the plugin's own Undo: every row the run overwrote is written back and every row it created is removed, so the model returns exactly. Refuses on a different model, or when the model was edited since the apply (force: true undoes anyway, overwriting those edits). Resumable: a step that fails is reported and calling again retries only what is left. Default run: the latest not undone. Previews unless apply: true; on the website the apply runs as a background job.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| force | No | DESTRUCTIVE: undo even though the model was edited since the apply (those edits are overwritten). | |
| runId | No | Ledger run id; default = the latest bridge_reshape run not yet undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, yet the description goes far beyond them: it names exactly what is restored and removed, the refusal conditions (different model, model edited since apply), that force overwrites those edits, resumability semantics, and that the website apply runs as a background job. This is the kind of context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and effect, then layers refusal conditions, resumability, default run, and preview/background behavior. Dense but nearly every sentence carries distinct information; the resumability and background-job clauses could be trimmed slightly without loss of safety-critical meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, resumable mutation tool with no output schema, the description covers outcome (model returns exactly), failure reporting, retry behavior, and dry-run default. An agent has everything needed to decide whether and how to call it, including the destructive override path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and leaves apply undocumented, but the description compensates fully: 'Previews unless apply: true' explains apply, force:true is described as undoing anyway while overwriting edits, and runId's default (latest not-yet-undone run) is spelled out. Each parameter's behavioral effect is clear, not just its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (undoes) and resource (a bridge_reshape ledger run), and describes the exact effect: rows overwritten are written back, rows created are removed. It is clearly distinguishable from bridge_reshape (which applies) and bridge_reshape_read (which reads) without inspecting any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context: default targets the latest not-undone run, apply:true is needed to execute, force:true overrides the 'model edited since apply' exclusion, and re-calling retries only failed steps. It does not explicitly name bridge_reshape_read or bridge_reshape as the alternative to pick for non-undo needs, but the exclusions and prerequisites are unusually complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil_read_tableRead a CIVIL NX tableARead-onlyInspect
Reads one MIDAS database table (GET /db/) from the open model, e.g. NODE, ELEM, SECT, GRUP, STLD, STAG, LLAN, MVLDBS, LCOM-GEN. Returns rows keyed by id: the ids asked for, or the first limit rows. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Row ids to return. Omit for the first `limit` rows. | |
| limit | No | ||
| table | Yes | Table key, e.g. NODE, ELEM, GRUP, STAG. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, but the description goes further by describing the HTTP shape (GET /db/<TABLE>) and the return contract: rows keyed by id, either the requested ids or the first `limit` rows. That return-shape disclosure is real added value; only error/unknown-table behavior is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb/endpoint, then the return contract. The example-key list is moderately long but serves as useful grounding for the required `table` parameter, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and it does (rows keyed by id, ids-vs-limit selection). For a simple 3-parameter read tool with read-only annotations, this is nearly complete; only unknown-table or empty-result behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; `ids` and `table` are already documented in-schema, including 'Omit for the first `limit` rows.' The description restates that interplay rather than extending it, and says nothing about `limit`'s default of 50 or its 500 cap, which the schema also leaves undescribed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reads one MIDAS database table (GET /db/<TABLE>)') and lists concrete table keys (NODE, ELEM, LOAD types), so an agent knows exactly what is fetched. It does not explicitly contrast with nearby siblings like result_table_catalog or preview_result_table, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The table-key examples imply when the tool applies, and 'Read-only' signals safe usage, but there is no explicit guidance on when to pick this over result_table_catalog or preview_result_table, nor on the trade-off between fetching by ids versus scanning with `limit`. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil_statusCIVIL NX connection and model summaryARead-onlyInspect
Checks the MAPI connection to CIVIL NX and summarises the open model: units, moving load code, row counts per table, structure/boundary/load group names, static load cases, stages, general combinations, and the most recent runs recorded for this key. Read-only. Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so "Read-only" is confirmatory rather than additive. What the description does add is the MAPI connection probe — signalling an external application dependency and possible connection failure — plus a preview of the returned inventory including per-key run history. It never says what happens when no model is open or the connection fails, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and scope are front-loaded in the first clause, and the closing "Call this first" directive is well placed. The middle inventory is a long comma-separated run-on inside one sentence, which is dense but every listed item corresponds to a distinct returned data category.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the full burden of describing return content and does so with a concrete inventory; the connection-health signal is also covered. Missing is any statement about failure/degraded behaviour when CIVIL NX is unavailable or no model is open, which is the one gap an agent would benefit from before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. Mentioning that recent runs are recorded "for this key" hints at implicit keying, but no argument semantics need explaining.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (checks connection, summarises model) and enumerates exactly what is reported — units, moving load code, row counts, group names, static load cases, stages, combinations, recent runs. That enumeration clearly separates it from nearby siblings such as model_bridge_summary or civil_read_table, so an agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call this first" gives explicit ordering guidance relative to the other CIVIL NX tools, which is the main usage decision for a status tool. It does not name a competing sibling or state exclusions (e.g. when to prefer model_bridge_summary), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
concurrent_forcesConcurrent forces at the governing stateARead-onlyInspect
Concurrent Force Reporter, step 2. For a set of items (elements, nodes, links), finds the load state that makes ONE key effect extreme at ONE key item (max, min or absolute max over the selected load cases and combinations, at every output point), then reports every item's results IN THAT SAME STATE — the coexistent forces a bearing, pier cap or connection check needs, not each item's own envelope. If the governing load is an envelope (or an Add containing one), it is resolved recursively to a single deterministic state (a weighted sum of static/stage cases, pinning each envelope to the child that governs at the key item), re-read at that state, and gated against the value MIDAS itself reports; it refuses rather than approximates. Near-ties are reported. Items: items in set syntax — elements 12 or 15to20, nodes N12, general links L12, elastic links EL12 (a range keeps only ids that exist) — and/or structure groups. keyItem must be in the set. Values come back in the units asked for (default the model's); plate results are per unit length. Read-only (only /post/TABLE result reads). Call concurrent_forces_setup first for names and keyEffect ids. Runs as a job on the website.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | Also store the full table (header, notes, every row) as a CSV file and return its link. | |
| items | No | Items in set syntax, e.g. "101to148, N9001to9006, EL12". | |
| units | No | Units to report in (MIDAS converts). Default: the model's own. | |
| groups | No | Structure groups to add to the set. | |
| keyItem | Yes | The item whose extreme picks the state, e.g. "101", "N9001", "EL12". Must be in the set. | |
| maxRows | No | At most this many table rows inline. | |
| position | No | Which output points to SHOW for I/J members; the governing state is always searched over all of them. | all |
| criterion | No | max | |
| keyEffect | No | The governing component: a keyEffect id from setup (e.g. BEAM:Moment-y, REACTION:FZ), or just the component (Moment-y, FZ, Axial) for the key item's own table. Default: the first component of the key item's table. | |
| loadCases | Yes | Load case / combination names to search (available ones from setup). | |
| stageSteps | No | Stage step tokens (from setup) when construction-stage cases are selected. Default: every stage step. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/openWorld; the description adds substantial behaviour: recursive envelope resolution to a deterministic single state, gating against MIDAS' own reported value, refusing rather than approximating, near-tie reporting, per-unit-length plate results, and that it executes asynchronously as a website job. These are real constraints an agent needs and none are in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first sentence and zero filler sentences. The middle sentences are extremely dense with nested parentheticals, which slows parsing, but nearly all content is substantive rather than redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, nested-object tool with no output schema, the description covers semantics, workflow dependency, units and inline row limits well. The gap is that it says 'Runs as a job on the website' without explaining how to check or fetch the job result (e.g. job_status), which an agent must know to actually obtain output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 91%, yet the description still adds value: concrete set-syntax examples with ranges ('15to20', 'N12', 'EL12'), the note that a range keeps only existing ids, 'keyItem must be in the set', default units and the per-unit-length plate convention. It goes beyond the schema without re-documenting every field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: find the load state making one key effect extreme at one key item, then report all items' results in that same state. It explicitly contrasts this with 'each item's own envelope', so an agent can distinguish it from envelope-style result tools. 'Step 2' and the reference to concurrent_forces_setup also position it in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('Call concurrent_forces_setup first for names and keyEffect ids') and use case ('the coexistent forces a bearing, pier cap or connection check needs'). It does not mention the sibling concurrent_forces_probe or say when to prefer it, so alternatives beyond setup are left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
concurrent_forces_probeConcurrent forces: probe the result tablesARead-onlyInspect
Concurrent Force Reporter diagnostics. For each result source the plugin reads (beam, truss, plate, general link, elastic link, node reaction, node displacement), asks this CIVIL NX build with one item of that kind which table token answers, the columns it returns and how they map, the output-point tokens, and the result series published. Use it when concurrent_forces reports a missing table, column or series. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | Units to report in (MIDAS converts). Default: the model's own. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and "Read-only" merely repeats that. The description does add that it interrogates the CIVIL NX build per result-source kind rather than reading model data, which is useful context, but it says nothing about output size, cost of probing all seven sources, or what happens if the build doesn't answer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a short identifier sentence, but the core sentence is a long run-on with a seven-item parenthetical and four coordinated clauses. Every element is informative, yet the density makes it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does describe the shape of the answer: table token, returned columns and their mapping, output-point tokens, and published result series. Combined with the trigger condition this is nearly complete; only failure/empty-result behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested units object with its force/length enums and "MIDAS converts / Default: the model's own" note is fully documented in the schema. The description does not mention units at all, so it adds nothing on top of the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (probe/ask the build) and a specific resource (table tokens, columns, output-point tokens and result series per result source), enumerating the seven sources it covers. It is clearly distinct from concurrent_forces (the reporter) but doesn't distinguish itself from adjacent siblings like result_table_catalog or preview_result_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it when concurrent_forces reports a missing table, column or series" gives an explicit trigger condition, which is exactly the context an agent needs. However, it names no alternative tool for the adjacent cases (e.g. catalog lookups when nothing is broken).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
concurrent_forces_setupConcurrent forces: what the model offersARead-onlyInspect
Concurrent Force Reporter, step 1. Reads the open CIVIL NX model the way the plugin does when it connects and lists what a concurrent-forces run can use: every load case and combination (all ten LCOM tables) with how MIDAS addresses it, whether it is envelope-valued, and whether it is AVAILABLE — moving load, settlement, response spectrum, ABS and SRSS (anywhere down the combination tree) cannot give a coexistent state and are listed with the reason and the workaround; the items the model has per result source (beam/truss/plate elements, general/elastic links, node reactions/displacements); the key effects available for them (keyEffect ids such as BEAM:Moment-y, REACTION:FZ, ELASTICLINK:Axial, with units); structure groups (element and node ranges, links found on their nodes); construction stages with their step tokens; criteria and output positions; the model's units; whether results are published. Read-only. Use search to narrow a long case list; includeConstituents shows each combination's children.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | At most this many load case entries. | |
| units | No | Units to report in (MIDAS converts). Default: the model's own. | |
| search | No | Only load cases / combinations whose name contains this (case-insensitive). | |
| includeConstituents | No | List each combination's children (name, factor, analysis kind). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description usefully adds domain behaviour: which case types (moving load, settlement, response spectrum, ABS/SRSS anywhere down the combination tree) cannot yield a coexistent state, that the reason and workaround are reported, and that unit conversion is applied. It does not cover cost, size of the payload, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope is front-loaded ('Concurrent Force Reporter, step 1') and there is little filler, but the core is one enormous run-on sentence with semicolon-stuffed enumerations that is hard to parse. The breadth justifies length, yet the structure could be a short bulleted inventory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return shape entirely, and it does: the ten LCOM tables, MIDAS addressing, envelope flags, availability reasons, per-result-source items, keyEffect ids with units, groups, stage tokens, criteria/output positions and published status. An agent knows what it will receive before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit, units, search and includeConstituents. The description restates search and includeConstituents almost verbatim and says nothing about limit caps or the unit-conversion default, so it adds little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads the open CIVIL NX model and enumerates everything a concurrent-forces run can consume (load cases, result sources, key effects, groups, stages, units). The 'step 1' framing and 'Read-only' make it separable from concurrent_forces / concurrent_forces_probe, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by 'step 1' of a concurrent-forces workflow, and it gives per-parameter advice ('use search to narrow a long case list', 'includeConstituents shows each combination's children'). But there is no explicit statement of when to call this versus concurrent_forces_probe or concurrent_forces, nor any prerequisite/exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
construction_stagesConstruction Stage Wizard — stage sequenceADestructiveInspect
Builds a construction stage sequence with the Construction Stage Wizard plugin's bulk generator and writes it with its stage planner (which keeps composite sections and construction-stage load combinations intact, rewriting and restoring them when CIVIL NX would otherwise delete them). Structure groups are activated in order, groupsPerStage at a time; boundary and load groups (e.g. supports, self weight) ride in the first new stage; an optional temporary group per stage (e.g. a form traveller) is switched on and off with it; an optional final stage closes the sequence. mode 'append' adds after the model's existing stages; 'replace' replaces them all. Every stage is validated against the model's groups first. Previews unless apply: true; the write keeps a snapshot for stages_undo.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | Material age at activation, days; null follows the stage duration. | |
| mode | No | append | |
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| groups | No | Structure groups in construction order. | |
| naming | No | {template:'CS{INDEX}', start, pad}. In append mode start defaults to after the last existing stage. | |
| durations | No | Days per stage; several values repeat as a pattern (e.g. [7, 7, 14]). Default [7]. | |
| temporary | No | {family:'load'|'boundary', groups:[one per stage]}: on in its stage, off in the next. | |
| finalStage | No | {name, duration, steps}: a closing stage, e.g. long-term with time steps. | |
| loadGroups | No | Load groups activated in the first new stage (e.g. self weight). | |
| saveResult | No | ||
| groupPrefix | No | Instead of groups: every structure group whose name starts with this, in natural order (Seg_2 before Seg_10). | |
| boundaryGroups | No | Boundary groups activated in the first new stage (deformed position). | |
| groupsPerStage | No | ||
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnly=false, but the description adds substantial behaviour the agent could not infer: composite sections and load combinations are preserved and restored, groups are validated first, a snapshot is kept for stages_undo, and the write is refused if the plan hash differs. That is exactly the extra context a destructive tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph that front-loads what is built and how it is written, with mode and preview/apply behaviour near the end. It is information-rich rather than padded, though the long parenthetical about composite sections makes the first sentence heavy and slightly harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with nested objects and no output schema, the description covers structure ordering, temporary groups, final stage, modes, validation, preview and undo. Remaining gaps are minor: it never says what the preview returns (notably the planHash needed for confirmPlanHash) and saveResult is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 79%, so the baseline is 3, but the description goes further by explaining sequencing semantics: groupsPerStage at a time, boundary/load groups riding in the first new stage, temporary groups toggled on and off with their stage, and an optional closing final stage. It does not explain saveResult or how naming/start interacts in replace mode, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Builds a construction stage sequence') and identifies the exact machinery used (the Construction Stage Wizard plugin's bulk generator plus its stage planner). It also implicitly distinguishes itself from siblings such as stage_groups and cs_stage_summary by scoping the tool to sequence creation and write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operating conditions: mode 'append' vs 'replace', preview-by-default unless apply: true, and validation before any write. What it lacks is an explicit pointer for when to choose a sibling instead, e.g. when to reach for stage_groups or cs_stage_report rather than this generator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_nodesNode Generator — create nodesADestructiveInspect
Creates nodes in the open CIVIL NX model from X, Y, Z coordinates with the Node Generator plugin's own engine: every check the plugin window makes (blank or non-numeric coordinates, bad or duplicate ids, ids above 999999, ids that already exist, coincident nodes within a tolerance), its numbering modes and its write rules. Give the points as nodes [{id?, x, y, z}] or as table (text pasted from Excel or a CSV; a header like ID,X,Y,Z is recognised, decimal commas and semicolon CSVs too). Coordinates are in inputUnit (m or mm) plus an optional origin offset, and are converted to the model's length unit. numbering: 'auto' continues after the highest existing node id; 'start' uses start + increment; 'column' keeps the ids given (default when every row has one). An id that already exists blocks the write unless overwrite: true, which MOVES those nodes (and the elements on them). Coincident nodes are reported first; choose coincident: 'skip' or 'create'. Previews unless apply: true with confirmPlanHash; new nodes go by POST (create-only, so a node made since the preview is never overwritten), overwrites by PUT, then db/NODE is read back. create_nodes_undo reverses it.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| nodes | No | Points: {x, y, z} or {id, x, y, z}; [x, y, z] and [id, x, y, z] arrays also work. | |
| start | No | numbering 'start': first id. | |
| table | No | Instead of nodes: tab-, comma- or semicolon-separated text, one node per line (ID, X, Y, Z or X, Y, Z), optional header row. | |
| origin | No | Added to every coordinate (input unit). | |
| decimal | No | Decimal mark in table text; AUTO detects it. | |
| increment | No | numbering 'start': step between ids. | |
| inputUnit | No | Unit of the coordinates, the origin offset and the tolerance. | M |
| numbering | No | ||
| overwrite | No | Move existing nodes whose id is in the input to the new coordinates. Only with the user's agreement. | |
| tolerance | No | Coincidence tolerance, input unit. | |
| coincident | No | report = preview only; skip = leave coincident rows out; create = create them anyway. | report |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the destructiveHint/idempotentHint annotations: it states that overwrite MOVES existing nodes and the elements on them, that new nodes are POST create-only so a node added after the preview is never clobbered, that overwrites use PUT, and that db/NODE is read back. It also enumerates the validation rules (duplicate ids, ids above 999999, coincident tolerance) that cause a write to be blocked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Almost every clause carries information and the verb is front-loaded, but it is a single dense paragraph with heavy parentheticals, so the agent must parse one long run-on rather than scan distinct sections. Nothing is wasted, though the structure could be broken up.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, destructive, open-world-false tool with no output schema, this covers validation, numbering, overwrite consequences, unit handling and the preview/confirm flow. It stops short of saying what the call returns (created ids, planHash, the readback payload) and never routes against alternative node-creation siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 92% schema coverage the baseline is 3, and this description adds genuine semantics: what 'auto', 'start' and 'column' numbering each do and which is default, that an existing id blocks the write unless overwrite is set, that coordinates are converted from inputUnit to the model unit with an origin offset, and how the table blob (headers, decimal commas, semicolon CSVs) is parsed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Creates nodes in the open CIVIL NX model') and immediately scopes it to the Node Generator plugin's own engine, including accepted inputs (nodes array or pasted table). It also names the paired sibling create_nodes_undo, so an agent can tell which side of the pair to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit about the preview-then-write contract ('Previews unless apply: true with confirmPlanHash'), about overwrite requiring the user's agreement, and about the coincident report/skip/create decision. What is missing is routing versus other node-creating paths in the sibling list (e.g. dxf_import), which is never mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_nodes_undoUndo a create_nodes runADestructiveInspect
Reverses a create_nodes run from the ledger: deletes the nodes it created and moves every node it overwrote back to its earlier coordinates. Refuses while elements, structure groups or supports use the nodes it created (undo those first). Default: the latest create_nodes run not yet undone. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No | Ledger run id; default = the latest create_nodes run not yet undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds critical behavior beyond that: refusal conditions tied to dependent elements, the default run selection, and preview-vs-apply semantics. This is exactly the extra context an agent needs for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each carrying distinct information: what it reverses, the refusal precondition, the default target, and preview semantics. Front-loaded with the core action and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description covers the destructive effects, safety preconditions, default targeting, and preview behavior — everything needed to invoke a destructive undo correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only runId documented), but the description compensates: it explains that apply:true commits versus default preview, and that runId defaults to the latest un-undone create_nodes run. Both parameters gain meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Reverses') and resource ('a create_nodes run from the ledger'), then details the exact effects: deletes created nodes and restores overwritten nodes to earlier coordinates. This clearly distinguishes it from the sibling create_nodes tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states a precondition ('Refuses while elements, structure groups or supports use the nodes it created (undo those first)') and clarifies the default target ('the latest create_nodes run not yet undone'). It doesn't name specific sibling undo tools, but the when/when-not conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs454_lane_layoutCS 454 notional lanes for a carriagewayARead-onlyInspect
Lays out CS 454 notional lanes, remaining areas, footways and strips on a carriageway cross-section with the CS454 - Moving Load Wizard's own layout engine (Table 5.9a, cl 5.10, ALL model 1 single/convoy, ALL model 2, SV/HB placements), and lists the case groups each loading model needs. Needs no model — use it to answer layout questions or to choose inputs before cs454_moving_loads.
| Name | Required | Description | Default |
|---|---|---|---|
| lanes | No | Lane options: picked (M1S, M1C, M2, SV, HB, SVM1S, SVM1C, SVM2, FW, ACC), level, packing, svVehicle, prefix… | |
| section | No | Cross-section, m: width (carriageway), kerbOffset, markedLanes, hardShoulder, leftVerge, rightVerge, footways (leftFootway, rightFootway), central reserve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context: it runs on the Wizard's own layout engine, needs no model, and returns the case groups each loading model requires. It does not discuss units, failure modes, or determinism, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operation and then the use case. It is dense with standards jargon but each clause carries information, and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-required-parameter tool with no output schema, the description covers the computation basis, the output content (case groups), and the intended usage. An agent has enough to invoke it correctly; only minor details such as return shape specifics are absent, which the absent output schema leaves implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the lanes object (with enumerated options such as M1S, M1C, M2, SV, HB, FW, ACC) and the section object (width, kerbOffset, markedLanes, footways, etc.) are already documented. The description mentions the loading models and cross-section context but adds no syntax or format detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Lays out') and a precise resource (CS 454 notional lanes, remaining areas, footways and strips on a carriageway cross-section), plus the exact layout engine and standard clauses it follows (Table 5.9a, cl 5.10). It also explicitly distinguishes itself from the sibling cs454_moving_loads, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the concrete use cases ('answer layout questions or to choose inputs before cs454_moving_loads') and states the key precondition ('Needs no model'), which routes the agent to this tool rather than the full moving-loads sibling. That is explicit when-to-use guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs454_moving_loadsCS454 - Moving Load WizardBIdempotentInspect
CS 454 assessment live loading with the CS454 - Moving Load Wizard plugin's own engine: notional lanes laid out on the carriageway (line lanes on a grillage, surface lanes on a plate deck), the ALL model 1/2 vehicles up to the chosen level, SV/HB where picked, and the moving load cases with remaining areas — each written and read back. It reads the deck from the model the way the plugin does (reference girder, width, kerb, cross-beam group, skew) unless reference/surface/section.width are given. Without apply it only previews (lanes, vehicles, cases, blockers, planHash). With apply: true it writes, records the run for cs454_moving_loads_undo, and never overwrites lanes, vehicles or cases it did not write.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| lanes | No | Lane options. Main one: picked — the loading models to lay out: M1S (ALL model 1 single), M1C (convoy), M2 (ALL model 2), SV, HB, SVM1S, SVM1C, SVM2, FW (footway), ACC (accidental). Also level, packing, svVehicle… | |
| scope | No | ALL = lanes + vehicles + cases; LANES = lanes only; LOADS = vehicles and cases on the model's existing lanes. | ALL |
| config | No | Advanced: any other plugin configuration field, deep-merged over the defaults. | |
| section | No | Carriageway cross-section, m: width, kerbOffset, markedLanes, hardShoulder, verges, footways, central reserve. width/kerbOffset are read from the deck if omitted. | |
| surface | No | Surface lanes: the alignment. mode GROUP (group), NODES (nodes) or RANGE (range). | |
| laneKind | No | Default: what the model suggests (beams -> LINE, plates -> SURFACE). | |
| readDeck | No | Read reference line, width, kerb offset, cross beams and skew from the deck. | |
| vehicles | No | Vehicle options. levels: assessment levels NORMAL, T26, T18, T7_5, T3, FE1, FE2 (lower levels are stacked in automatically); allModel1, allModel2, limitStates, svType… | |
| reference | No | Line lanes: the reference line. mode RANGE (range: element ids e.g. '1-10'), GROUP (group: structure group name) or NODES (nodes: [ids]). | |
| codeChange | No | Allow setting the moving load code to BS. Changing it from another code DELETES every lane in the model — only with the user's agreement. | |
| laneSource | No | NEW | |
| unitSwitch | No | Allow switching CIVIL NX to kN, m for the write and back afterwards (needed for non-SI models). | |
| writeOptions | No | Lane write options: loadDist LANE|CROSS, groupName (cross-beam group), moving BOTH|FORWARD|BACKWARD, skewStart, skewEnd. | |
| confirmPlanHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly says codeChange can 'DELETE every lane in the model', which is a destructive behavior, while annotations declare destructiveHint: false. This is a direct annotation contradiction, so behavioral transparency must be scored 1 under the rules despite otherwise rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but appropriately sized for a 15-parameter wizard and front-loads the core workflow before preview/apply details. The first sentence is quite packed, but no sentence is obviously wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description explains the main preview output fields, the apply behavior, deck-reading fallbacks, undo recording, and overwrite safeguards. It is nearly complete, though it omits guidance for confirmPlanHash and laneSource.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 80%, and the description adds meaningful semantics beyond the schema: apply controls preview versus write, readDeck has fallback behavior unless reference/surface/section.width are given, and codeChange has a destructive side effect. It still leaves some parameters such as laneSource and confirmPlanHash unexplained in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific purpose: CS454 assessment live loading using the plugin's own engine to lay out lanes, vehicles, moving load cases, and remaining areas. It is much clearer than a generic name restatement, though it does not explicitly distinguish this tool from the sibling cs454_lane_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful usage context: without apply it previews, with apply: true it writes, and the run can be undone via cs454_moving_loads_undo. It also says codeChange should only be used with the user's agreement, but it does not explicitly route the agent between this tool and sibling lane-layout tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs454_moving_loads_undoUndo a CS454 moving-load runADestructiveInspect
Removes the lanes, vehicles, cases and groups a cs454_moving_loads run wrote, using the plugin's own cleanup: anything edited since the run, or still used by something else, is kept. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description goes further by disclosing that cleanup is selective: artifacts edited since the run or still referenced elsewhere are preserved. It also reveals the dry-run-by-default behavior. It stops short of saying what a cancelled/partial undo returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the destructive scope, then the retention caveat, then the preview switch. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param destructive tool with no output schema and no annotation beyond hints, the description covers the essential risk and behavior. The only real absence is any indication of what the preview output looks like or how a runId is obtained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning. It does explain `apply` semantics (preview unless true), but `runId` — the parameter that identifies which run's artifacts are removed — is never described, leaving half the surface to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Removes') with an explicit resource set ('lanes, vehicles, cases and groups') and scopes it to artifacts written by a cs454_moving_loads run, which cleanly separates it from the sibling cs454_moving_loads and from generic undo tools like stages_undo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use after a cs454_moving_loads run, but never states when to use it versus the many other *_undo siblings or what precondition (an existing runId) is required. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs455_assessCS 455 assessment of an RC beam sectionARead-onlyInspect
CS 455 ULS assessment of reinforced concrete beam sections with the plugin's own engine: reads the concurrent force rows (BEAMFORCE / BEAMFORCEVBM for envelopes and moving loads, kN·m; a moving-load case from a model analysed without 'Normal + Concurrent Force' is refused as NOT CONCURRENT) at the chosen element ends for the chosen combinations, and runs every row — N–M flexure by strain-compatibility equilibrium, shear (additive approach, links optional), torsion (cl 5.17–5.27) — with status per row (PASS / FAIL / BLOCKED / OUTSIDE RANGE OF VALIDITY) and the utilisation of each check. Read-only. Takes a while for many rows (a job on the website).
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | Reinforcement yield strength, MPa (default 500). | |
| fcu | No | Concrete cube strength, MPa (default: from the model's EN grade C../.. — its cube value). | |
| cases | No | Load cases / combinations by name (default: every load combination the model has). | |
| image | No | cs455_describe_section only: return the drawing of the section with its bars (default true). | |
| links | No | Links (omit for concrete-only shear, cl 5.6). Used by shear and by torsion. | |
| rebar | Yes | The bar schedule, as the plugin's Reinforcement tab: cover (mm to the bar face, default 50), gap (mm between layers, default max(25, Ø)), rows [{face: bottom|top|side|depth, layer (any whole number, 1 = outermost), count ('8' bars or '@150' spacing), dia (mm, or '1.128in', or '#9'), depth (mm below top, face 'depth' only), span ('±430:900' width limits), from/to/which (side bars)}], coords {datum: bc|bl|tc, text: 'y z dia' per line, mm}. | |
| shear | No | Run the shear check (default true). | |
| maxRows | No | Stop above this many force rows (default 1000). | |
| torsion | No | Torsion check, CS 455 cl 5.17–5.27, on rows that carry a torque (default true, as in the plugin). | |
| stations | No | Element ends to assess (default: the section's first element, both ends, midspan). Location 'support' removes the shear enhancement near supports. | |
| axialSign | No | Positive MIDAS axial is tension (-1, default) or compression (1). | |
| sectionId | Yes | The CIVIL NX section id (a beam section). | |
| maxResults | No | How many rows to list, worst first (default 40). | |
| momentSign | No | Positive MIDAS My is sagging (1, default) or hogging (-1). | |
| restrained | No | Compression bars are restrained by links (cl 5.3.1). Default false: compression bars get no compressive strength (cl 5.3.2(1)), conservative. | |
| includeJobs | No | Also return the exact engine job of each listed row (for audit or re-running in the plugin). | |
| concreteModel | No | Figure 3.4.1 curve (default) or the constant 0.6 fcu/γmc block of cl 5.1(3). | |
| concreteParts | No | Composite sections: { part id: f_cu } where a part's grade differs (describe lists the parts). | |
| tensionOrigin | No | ||
| classification | No | RC only in these tools. | |
| drawingReference | No | ||
| secondaryActions | No | Vy / T / Mz: assess N–My–Vz and list them (default), or refuse rows where they are non-zero. | |
| confirmDimensions | No | Only after the user has compared the drawn section with the drawing: needed when CIVIL NX published no properties to check the outline against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and openWorldHint=false, and the description adds real behavioral content: it declares the exact row sources, the refusal condition, the four possible statuses (PASS / FAIL / BLOCKED / OUTSIDE RANGE OF VALIDITY), and that many rows make it run long as a website job. It doesn't cover output shape in detail, but that is largely a schema matter here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose, the force-row source, and the NOT CONCURRENT caveat are front-loaded in the first sentence; the trailing 'Read-only' and 'Takes a while' sentences earn their place. The first sentence is dense with parentheticals, but for a 23-parameter tool it is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 23-parameter assessment tool with no output schema, the description covers what is assessed, where force rows come from, refusal behavior, and the status vocabulary returned. It omits any explanation of the utilisation values returned and the effect of some flags (e.g., secondaryActions), leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 91% and the nested definitions are unusually thorough (links, rebar rows, stations). The description adds a little framing for cases and stations but mostly defers to the schema, so it does not need to carry parameter meaning itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb and resource ('CS 455 ULS assessment of reinforced concrete beam sections') and names the checks performed (N–M flexure, shear, torsion cl 5.17–5.27) with per-row status output, which clearly separates it from siblings like cs455_describe_section or slab_assess.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear operating context (reads concurrent force rows at chosen element ends for chosen combinations) and an explicit exclusion: a moving-load case from a model analysed without 'Normal + Concurrent Force' is refused as NOT CONCURRENT. It stops short of naming sibling alternatives such as cs455_describe_section or cs455_export_calc_sheet for those tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs455_describe_sectionCS 455: read a section and place its barsARead-onlyInspect
Start here when the user shares a reinforcement drawing, photo or schedule. Read from it: cover, for each face the layers (number of bars or spacing, and Ø - mm, inches or #US sizes are all accepted), side bars, links (Ø, legs, spacing); then call this tool. It reads one beam section from the open model through the shared MIDAS section library (outline checked against CIVIL NX's published properties), places the bars with the CS 455 plugin's own placement (cover to every edge) and RETURNS A DRAWING of the section with every bar placed - compare it with the user's drawing and correct rebar until they match (ask the user about anything the drawing does not show, e.g. cover). Then cs455_export_calc_sheet gives the report. Also returns what the plugin's engine derives: area, centroid, depth, usable_for_capacity, parts, the bars placed per schedule row (or why a row failed), and the model's concrete grade. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | cs455_describe_section only: return the drawing of the section with its bars (default true). | |
| rebar | No | The bar schedule, as the plugin's Reinforcement tab: cover (mm to the bar face, default 50), gap (mm between layers, default max(25, Ø)), rows [{face: bottom|top|side|depth, layer (any whole number, 1 = outermost), count ('8' bars or '@150' spacing), dia (mm, or '1.128in', or '#9'), depth (mm below top, face 'depth' only), span ('±430:900' width limits), from/to/which (side bars)}], coords {datum: bc|bl|tc, text: 'y z dia' per line, mm}. | |
| sectionId | Yes | The CIVIL NX section id (a beam section). | |
| restrained | No | Compression bars are restrained by links (cl 5.3.1). Default false: compression bars get no compressive strength (cl 5.3.2(1)), conservative. | |
| concreteParts | No | Composite sections: { part id: f_cu } where a part's grade differs (describe lists the parts). | |
| confirmDimensions | No | Only after the user has compared the drawn section with the drawing: needed when CIVIL NX published no properties to check the outline against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and the description's 'Read-only' is consistent. It adds real behavioral context beyond annotations: the outline is checked against published CIVIL NX properties, bars are placed with cover to every edge, and it returns both a drawing and derived values (area, centroid, depth, usable_for_capacity, per-row placement or failure reason). It does not detail error modes or what happens when section lookup fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and workflow are front-loaded, but the description is one long run-on paragraph dense with parentheticals and schema-duplicating detail. Every sentence is arguably relevant, yet it is harder to parse than a short, structured summary would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, nested rebar objects and no output schema, the description supplies a full picture of the return (drawing plus derived values) and the workflow around it. It is nearly complete for the call; it does not describe failure behavior for invalid section ids or the drawing format, which are the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents sectionId, image, rebar, restrained, concreteParts and confirmDimensions in detail. The description mostly echoes schema content (cover, rebar faces, return-values) rather than adding syntax; it does add intent for confirmDimensions ('only after the user has compared') and the restrained clause reference. Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and first sentence state a specific verb+resource: read one beam section and place its bars, returning a drawing. It is clearly distinguished from siblings by naming cs455_export_calc_sheet as the reporting step and by describing the CS 455 placement behavior, so an agent can tell it apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here when the user shares a reinforcement drawing, photo or schedule' gives an explicit trigger, and the follow-up 'then cs455_export_calc_sheet gives the report' names the next step. It also instructs to ask the user about anything missing (e.g. cover), covering when-not-to-guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs455_export_calc_sheetCS 455 calculation sheet (Excel)ARead-onlyInspect
The report. Assesses one element end exactly as cs455_assess and writes the plugin's reference-format calculation sheet (.xlsx: A4 pages, title block, geometry, materials, reinforcement, section properties, sagging/hogging bending, shear and torsion with live formulas and charts, summary of results, and a Summary sheet with demand, resistance and ratio per check). Returns a download link. Use the same rebar/links that cs455_describe_section confirmed against the user's drawing. Read-only on the model.
| Name | Required | Description | Default |
|---|---|---|---|
| fy | No | Reinforcement yield strength, MPa (default 500). | |
| end | No | ||
| fcu | No | Concrete cube strength, MPa (default: from the model's EN grade C../.. — its cube value). | |
| cases | No | Load cases / combinations by name (default: every load combination the model has). | |
| image | No | cs455_describe_section only: return the drawing of the section with its bars (default true). | |
| links | No | Links (omit for concrete-only shear, cl 5.6). Used by shear and by torsion. | |
| rebar | Yes | The bar schedule, as the plugin's Reinforcement tab: cover (mm to the bar face, default 50), gap (mm between layers, default max(25, Ø)), rows [{face: bottom|top|side|depth, layer (any whole number, 1 = outermost), count ('8' bars or '@150' spacing), dia (mm, or '1.128in', or '#9'), depth (mm below top, face 'depth' only), span ('±430:900' width limits), from/to/which (side bars)}], coords {datum: bc|bl|tc, text: 'y z dia' per line, mm}. | |
| shear | No | Run the shear check (default true). | |
| report | No | ||
| element | Yes | ||
| maxRows | No | Stop above this many force rows (default 1000). | |
| torsion | No | Torsion check, CS 455 cl 5.17–5.27, on rows that carry a torque (default true, as in the plugin). | |
| location | No | ||
| stations | No | Element ends to assess (default: the section's first element, both ends, midspan). Location 'support' removes the shear enhancement near supports. | |
| axialSign | No | Positive MIDAS axial is tension (-1, default) or compression (1). | |
| sectionId | Yes | The CIVIL NX section id (a beam section). | |
| momentSign | No | Positive MIDAS My is sagging (1, default) or hogging (-1). | |
| restrained | No | Compression bars are restrained by links (cl 5.3.1). Default false: compression bars get no compressive strength (cl 5.3.2(1)), conservative. | |
| concreteModel | No | Figure 3.4.1 curve (default) or the constant 0.6 fcu/γmc block of cl 5.1(3). | |
| concreteParts | No | Composite sections: { part id: f_cu } where a part's grade differs (describe lists the parts). | |
| tensionOrigin | No | ||
| classification | No | RC only in these tools. | |
| drawingReference | No | ||
| secondaryActions | No | Vy / T / Mz: assess N–My–Vz and list them (default), or refuse rows where they are non-zero. | |
| confirmDimensions | No | Only after the user has compared the drawn section with the drawing: needed when CIVIL NX published no properties to check the outline against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds useful behavior beyond that: it writes an .xlsx workbook, includes live formulas/charts, returns a download link, and is read-only on the model. It does not contradict the annotations and adds substantial output-side context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well targeted, listing the workbook contents and return behavior without repeating the schema. 'The report.' is slightly vague as an opener, but the rest is front-loaded and earns its place for a complex export tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter export tool with no output schema, the description explains the generated workbook's contents and that it returns a download link, plus the key prerequisite about rebar/links confirmed by cs455_describe_section. It is largely complete, though it could say more about file handling or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 76%, so the schema already documents most parameters in detail, including many nested rebar and links fields. The description adds contextual guidance about reusing confirmed rebar/links, but it does not explain the many optional parameters or their interactions beyond what the schema provides, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and output: assess one element end exactly as cs455_assess and write the plugin's reference-format .xlsx calculation sheet, returning a download link. It clearly differentiates this export/report tool from the assessment sibling by naming cs455_assess and detailing the Excel output contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: use the same rebar/links that cs455_describe_section confirmed against the user's drawing, and notes it is read-only on the model. It does not explicitly state when to choose this over cs455_assess versus merely viewing assessment results, but the report-generation purpose is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs_stage_reportConstruction Stage Reporter — Excel / PDF reportARead-onlyInspect
Makes the Construction Stage Reporter plugin's own reports of the open model's construction stages and returns download links (never the file inline): the Excel workbook (summary, stage matrices for structure/boundary/load groups, group tables, stage details, composite sections, displacements, beam results, warnings) and the A4 PDF (cover, summary, matrices, one page per stage with a picture of CIVIL NX's own view of that stage from /view/CAPTURE, and the warnings). Construction-stage displacements (series, default Summation) are included when the analysis has been run; members (as cs_stage_results) adds one beam result component. The MP4 animation is not available here — use the plugin in CIVIL NX. Read-only, but the pictures make CIVIL NX show each stage in turn. Runs as a job.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | iso | |
| series | No | Summation | |
| formats | No | Default both. | |
| members | No | Beam results of chosen members: {groups:[structure group names]} and/or {elements:[ids]} (only TYPE BEAM elements count), table 'BEAMFORCE' (default) or 'BEAMSTRESS', component (default Moment-y for forces, Cb(min/max) for stresses; heads such as Axial, Shear-z, Moment-y, Bend(+z), Cb1(-y+z), or short names My, Mz, Fx, Fz), part 'gov' (default: on composite members the governing section part at each position) or 1–4 (1 = girder, 2 = slab), series (default Summation). Composite members' stresses are read per section part (COMPSECTBEAMSTRESS), as the plugin does. | |
| program | No | Program name printed on the reports, when CIVIL NX does not report its version. | |
| snapshots | No | A picture per stage in the PDF from CIVIL NX (/view/CAPTURE). | |
| includeLoads | No | Include the load group matrix and load columns. | |
| maxSnapshots | No | With more stages than this, pictures for this many evenly spread stages. | |
| displacements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint, it discloses that output is always download links, never files inline, and that the tool runs as a job. It also flags a real side effect: although read-only, snapshots make CIVIL NX show each stage in turn. The main gap is that job polling and result-retrieval behavior are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and return behavior, and every sentence contributes. The first sentence is very dense with an exhaustive report-content list, and the job sentence is extremely terse given the importance of job semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter job tool with no output schema, it covers the output artifacts, side effects, and many parameter behaviors well. It still leaves two important gaps: how to retrieve the job result/status and what view controls in the generated pictures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds useful meaning: series defaults to Summation, members adds a beam result component as in cs_stage_results, snapshots create stage pictures, maxSnapshots spreads pictures across many stages, and program is a fallback label. It omits explanation of view and only implicitly covers displacements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it makes the Construction Stage Reporter plugin's reports of construction stages and returns Excel/PDF download links. It also names the precise report contents and explicitly distinguishes the unavailable MP4 output, so an agent can identify the tool without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one useful exclusion (MP4 is not available here; use the CIVIL NX plugin) and a prerequisite (displacements are included when the analysis has been run). However, it does not say when to choose this report over siblings like cs_stage_summary, cs_stage_results, or export_result_tables, nor does it explain how to poll the job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs_stage_resultsConstruction Stage Reporter — construction-stage resultsARead-onlyInspect
Reads construction-stage analysis results the way the Construction Stage Reporter plugin does (POST /post/TABLE in the construction-stage family, every stage in one query at its last step; stages after the analysis stopped carry the stage before and are flagged published:false). displacements (default on): per stage the largest resultant |D| over all nodes, its node and DX/DY/DZ, in mm; nodes:[ids] adds those nodes' displacements per stage. members: beam forces or stresses of chosen beams — per stage the max/min of a component over the beams active in it, with element, output position (I…J) and section part; detailElements:[ids] (≤20) adds the values along those beams. Units are the model's (forces/moments) and mm (displacements). series is a construction-stage result series (default Summation; listSeries: true lists what the model publishes, e.g. Dead Load, Tendon Primary, Creep Secondary). Needs a construction-stage analysis already run in CIVIL NX. Read-only; may take a minute on big models.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | No | Node ids whose displacements to list per stage. | |
| series | No | Construction-stage result series for the displacements. | Summation |
| stages | No | Stage names to report (default: every stage). | |
| members | No | Beam results of chosen members: {groups:[structure group names]} and/or {elements:[ids]} (only TYPE BEAM elements count), table 'BEAMFORCE' (default) or 'BEAMSTRESS', component (default Moment-y for forces, Cb(min/max) for stresses; heads such as Axial, Shear-z, Moment-y, Bend(+z), Cb1(-y+z), or short names My, Mz, Fx, Fz), part 'gov' (default: on composite members the governing section part at each position) or 1–4 (1 = girder, 2 = slab), series (default Summation). Composite members' stresses are read per section part (COMPSECTBEAMSTRESS), as the plugin does. | |
| listSeries | No | Also list the construction-stage series the model publishes. | |
| displacements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint, it discloses important behavior: stages after the analysis stopped carry the previous stage and are flagged published:false, composite members' stresses are read per section part, and the call 'may take a minute on big models'. It also states which endpoint family is used and the units, which is real context an agent could not infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and nearly every clause carries information, but it is delivered as one long run-on paragraph with nested parentheses and semicolons, which hurts scannability. It is appropriately sized for the complexity, though the structure could be broken into clearer sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 6-parameter tool with a nested members object and no output schema, the description covers the return shape (per-stage |D|, node, DX/DY/DZ; beam max/min, element, I…J position, section part), units, defaults, prerequisites, and degraded-stage behavior. An agent has enough to call it correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already high (83%), but the description still adds meaning: it explains that displacements default on, that nodes:[ids] adds those displacements per stage, that detailElements ≤20 adds values along beams, and that series defaults to Summation and can be enumerated via listSeries. That goes beyond what the schema's brief property descriptions convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Reads construction-stage analysis results') and details exactly what is returned for displacements (largest resultant |D| per stage, node, DX/DY/DZ) and members (beam forces/stresses with element, position, section part). It does not explicitly name or contrast with siblings like cs_stage_report or cs_stage_summary, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the prerequisite clearly ('Needs a construction-stage analysis already run in CIVIL NX') and explains the defaults for displacements, series and listSeries. However, it never says when to choose this tool over cs_stage_report or cs_stage_summary, leaving the main alternative-selection question unanswered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cs_stage_summaryConstruction Stage Reporter — stage summaryARead-onlyInspect
Reads the construction stage definition of the open CIVIL NX model with the Construction Stage Reporter plugin's engine and returns, per stage: duration and day range, the structure groups activated (with age and element count) and deactivated (with redistribution), boundary groups activated (deformed/original position) and deactivated, load groups activated/deactivated (first/last day), composite section parts (db/CSCS) that start acting, and the elements and boundary entities active after it. Also the composite sections, the whole-model summary, and the plugin's consistency checks (a group deactivated before it was activated, groups no stage uses, elements never activated, groups a stage names but the model lacks…). Read-only. elementIds: true adds the activated/deactivated element ids per stage; groups: true adds a row per group.
| Name | Required | Description | Default |
|---|---|---|---|
| groups | No | Add one row per structure, boundary and load group: members and the stages that switch it. | |
| stages | No | Stage names to report (default: every stage). | |
| maxStages | No | ||
| elementIds | No | Add the element ids activated and deactivated in each stage (as ranges, e.g. '1-40, 52'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description's 'Read-only' is consistent with them. Beyond that it discloses substantive behavior: it runs the plugin's engine against the currently open model, and it returns built-in consistency checks (a group deactivated before activation, unused groups, elements never activated) — an agent would not guess these from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and scope, then dense enumeration where nearly every clause adds a distinct output category. It is one very long sentence with nested parentheticals and a trailing ellipsis, which costs some readability but little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing returns and does so thoroughly per stage plus model-level summary and consistency checks. Gaps remain around the maxStages truncation behavior and any precondition failure mode (plugin missing, no model open).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the baseline is 3. The description explains what elementIds and groups add to the output, but that largely repeats the schema descriptions, and 'stages' and especially 'maxStages' (no schema description, cap 500) receive no explanation of behavior such as truncation when the default of 150 is exceeded.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reads the construction stage definition of the open CIVIL NX model') and enumerates the exact per-stage content returned. It is distinguishable in substance, but it never names or contrasts itself with close siblings like cs_stage_report, cs_stage_results, construction_stages, or stage_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use/when-not guidance and no alternatives named, despite four adjacent stage-related siblings. The only implicit context is 'the open CIVIL NX model with the Construction Stage Reporter plugin's engine', which hints at a prerequisite but never states it as a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culvert_analyse_and_checkAnalyse the culvert and run every checkAInspect
On the culvert model built from the same inputs (refused if the open model's counts differ): runs the CIVIL NX analysis (unless analyse: false), reads the basic-case results (forces, reactions, displacements) and runs the plugin's checks — every Annex A2 combination and vehicle position: ULS flexure and shear, SLS stresses and crack width, detailing, bearing and uplift. Returns the verdict and the governing locations. Takes minutes: a job on the website.
| Name | Required | Description | Default |
|---|---|---|---|
| analyse | No | Run the analysis first (default true). | |
| project | No | Changes to the 2D Culvert project (schema culvert-studio/2), merged onto the plugin's default project; arrays replace. Sections: project {name, reference, revision}; basis {profile: EN-1G | UK-1G | ..., concrete 'C32/40', steel 'B500B'}; geometry {spans [m per cell], clear_height, t_top, t_bot, t_ext, t_int, haunch_top [w,h], haunch_bot}; ground {fill, fill_density, surfacing_thk, surfacing_density, soil_density, soil_sub, phi, k0_override, subgrade (kN/m3), side_springs}; water {gw_depth, internal_depth}; earth_pressure {method K0 | annexB | cl94, fill_6n6p, ...}; traffic {carriageway, lm1, lm2, braking, surcharge, step, lm3 {enabled, sv80, sv100, sv196, gaps}, vehicles}; thermal {dT_exp, dT_con, dT_heat, dT_cool, shrinkage}; loads {sdl}; reinforcement {top_slab, base_slab, walls}; design {allowable_bearing, RH, t0, creep_phi}. Lengths m, bars [dia mm, spacing mm]. | |
| maxLocations | No | Locations to list, worst first (default 30). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: it is a job that takes minutes on the website, it can be refused when the open model's counts differ, it conditionally runs analysis, and it returns the verdict and governing locations. These details materially help the agent understand runtime and failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but appropriately sized for a complex check-running tool, and it front-loads the prerequisite before listing the checks. Every sentence carries useful information, though the long check enumeration makes it less compact than an ideal 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, nested-parameter tool with no output schema, the description explains the operation, duration, refusal condition, and high-level return. It leaves some ambiguity about whether the call blocks or returns a job identifier for later polling, but overall it is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description reinforces the analyse:false behavior but adds little to the detailed parameter schema, and it does not mention maxLocations semantics beyond the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it runs the CIVIL NX analysis, reads basic-case results, and runs the plugin's checks on the culvert model. It clearly scopes the operation to Annex A2 combinations and vehicle positions, distinguishing it from build/preview/report siblings even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it operates on the culvert model built from the same inputs and is refused if the open model's counts differ, and it explains the analyse:false option. It does not explicitly name alternatives or state when to choose this over culvert_preview, culvert_report, or job_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culvert_buildBuild the culvert model in CIVIL NXADestructiveInspect
Writes the 2D Culvert model exactly as the plugin's Build: units, user material, sections, frame, soil springs, supports, every basic load case with its loads, and the nested EN 1990 Annex A2 combinations; then reads the loads back and fails if CIVIL NX dropped any. Into the open model only if it is empty, or into a new document (newDocument: true — DESTRUCTIVE: CIVIL NX replaces the open model). Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| project | No | Changes to the 2D Culvert project (schema culvert-studio/2), merged onto the plugin's default project; arrays replace. Sections: project {name, reference, revision}; basis {profile: EN-1G | UK-1G | ..., concrete 'C32/40', steel 'B500B'}; geometry {spans [m per cell], clear_height, t_top, t_bot, t_ext, t_int, haunch_top [w,h], haunch_bot}; ground {fill, fill_density, surfacing_thk, surfacing_density, soil_density, soil_sub, phi, k0_override, subgrade (kN/m3), side_springs}; water {gw_depth, internal_depth}; earth_pressure {method K0 | annexB | cl94, fill_6n6p, ...}; traffic {carriageway, lm1, lm2, braking, surcharge, step, lm3 {enabled, sv80, sv100, sv196, gaps}, vehicles}; thermal {dT_exp, dT_con, dT_heat, dT_cool, shrinkage}; loads {sdl}; reinforcement {top_slab, base_slab, walls}; design {allowable_bearing, RH, t0, creep_phi}. Lengths m, bars [dia mm, spacing mm]. | |
| newDocument | No | DESTRUCTIVE: open a new CIVIL NX model first (the open one is replaced; unsaved work is lost). | |
| confirmPlanHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them: the write-then-read-back verification that fails if CIVIL NX drops any loads, the empty-model guard, and the explicit warning that newDocument replaces the open model and loses unsaved work. It does not cover rollback semantics or mention the accompanying undo tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with what gets built, then the safety constraint, then the preview default. The long enumeration earns its place because it defines scope, though the preview/apply note is somewhat buried at the end rather than stated up front.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, deeply nested build tool with no output schema, the description covers the what, the safety profile and the verification behavior. The gaps are the unexplained confirmPlanHash workflow (presumably tied to a prior plan/preview step) and the absence of any reference to culvert_build_undo or how to recover from a bad build.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description compensates for apply and newDocument (preview default, destructive replacement). However, confirmPlanHash is never mentioned in either the description or the schema, leaving a meaningful parameter entirely opaque on a destructive tool, and the nested project object relies wholly on its own schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb plus resource ('Writes the 2D Culvert model') and enumerates the exact contents written: units, material, sections, frame, soil springs, supports, load cases and EN 1990 Annex A2 combinations. It is unambiguous what is produced, though it never names the sibling preview/undo tools to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the operating conditions precisely: 'into the open model only if it is empty, or into a new document (newDocument: true)' and 'Previews unless apply: true', so the agent knows the preconditions and the dry-run default. What is missing is an explicit pointer to culvert_preview / culvert_build_undo as the alternatives for previewing or reverting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culvert_build_undoUndo a culvert buildADestructiveInspect
Deletes every row a culvert_build wrote (combinations, loads, load cases, springs, supports, groups, elements, nodes, sections, material) from the ledger's record, and puts back the model's units. A model replaced by newDocument cannot be brought back. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds the substance the annotation cannot: exactly which record groups are deleted (combinations, loads, load cases, springs, supports, groups, elements, nodes, sections, material), that model units are restored, that preview is the default, and one irreversible edge case. That is precisely the what-gets-destroyed context a mutating tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the destructive scope, then the limitation, then the preview/apply rule. The parenthetical list is long but each item is informative rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive mutation with no output schema and full annotation coverage, the description covers scope, reversibility, and preview behavior adequately. The remaining gap is runId semantics and what the returned preview looks like, though no output schema exists to relieve that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameter burden. It explains apply well ("Previews unless apply: true"), but runId is never mentioned — an agent cannot tell from this text that runId selects which build run to revert, nor what happens if it is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (deletes rows) applied to a precisely named resource (everything culvert_build wrote), and enumerates the record types touched. Naming culvert_build ties it to its counterpart sibling, so an agent can distinguish this undo tool from the other *_undo tools in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Previews unless apply: true" tells the agent the default invocation is a dry run, which is direct usage guidance, and "A model replaced by newDocument cannot be brought back" states an explicit exclusion where the tool is useless. What is missing is a plain statement of when to reach for undo versus rebuilding with culvert_build.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culvert_previewPreview a 2D box culvert (Eurocode)ARead-onlyInspect
Validates a 2D Culvert project with the plugin's own Eurocode core and returns what it would build: nodes, elements, soil springs, basic load cases (traffic unit cases), the EN 1990 Annex A2 combination counts (ULS, SLS characteristic, quasi-permanent) and the nested CIVIL NX combinations, check locations, earth-pressure basis (K0 / PD 6694-1 Annex B / cl 9.4 K*) and derived geometry. Needs no model.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Changes to the 2D Culvert project (schema culvert-studio/2), merged onto the plugin's default project; arrays replace. Sections: project {name, reference, revision}; basis {profile: EN-1G | UK-1G | ..., concrete 'C32/40', steel 'B500B'}; geometry {spans [m per cell], clear_height, t_top, t_bot, t_ext, t_int, haunch_top [w,h], haunch_bot}; ground {fill, fill_density, surfacing_thk, surfacing_density, soil_density, soil_sub, phi, k0_override, subgrade (kN/m3), side_springs}; water {gw_depth, internal_depth}; earth_pressure {method K0 | annexB | cl94, fill_6n6p, ...}; traffic {carriageway, lm1, lm2, braking, surcharge, step, lm3 {enabled, sv80, sv100, sv196, gaps}, vehicles}; thermal {dT_exp, dT_con, dT_heat, dT_cool, shrinkage}; loads {sdl}; reinforcement {top_slab, base_slab, walls}; design {allowable_bearing, RH, t0, creep_phi}. Lengths m, bars [dia mm, spacing mm]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds substantial behavioral context by enumerating what the preview returns (nodes, elements, springs, load cases, combination counts, check locations, earth-pressure basis, derived geometry) and clarifying that no model is required. It does not describe failure behavior or validation-error output, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then packs the return contents densely. It is a long sentence, but every clause appears to carry useful information and there is no obvious filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one optional parameter, the description carries most of the explanatory burden and does so by listing the returned artifacts. Combined with read-only annotations, this is nearly complete, though it could clarify the exact response shape or validation-failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested project parameter is fully documented in the schema, including default merging and array replacement semantics. The description adds no meaning beyond the schema for the parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it validates a 2D Culvert project using the plugin's Eurocode core and returns the generated model data. This clearly distinguishes it as a preview/dry-run tool, though it does not explicitly name sibling tools like culvert_build or culvert_analyse_and_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Needs no model' implies this is a pre-build validation step, which gives implied usage guidance. However, the description never states when to use this versus culvert_build, culvert_analyse_and_check, or culvert_report, nor does it explicitly exclude use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culvert_reportCulvert calculation reportARead-onlyInspect
Runs the checks on the analysed culvert model (as culvert_analyse_and_check, without re-analysing unless analyse: true) and writes the plugin's report: format xlsx (default) = the calculation book in the MIDAS report format with result diagrams captured from CIVIL NX, pdf, or both (one run of the checks). Returns download links.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | xlsx (default), pdf, or both from one run of the checks. | |
| analyse | No | ||
| project | No | Changes to the 2D Culvert project (schema culvert-studio/2), merged onto the plugin's default project; arrays replace. Sections: project {name, reference, revision}; basis {profile: EN-1G | UK-1G | ..., concrete 'C32/40', steel 'B500B'}; geometry {spans [m per cell], clear_height, t_top, t_bot, t_ext, t_int, haunch_top [w,h], haunch_bot}; ground {fill, fill_density, surfacing_thk, surfacing_density, soil_density, soil_sub, phi, k0_override, subgrade (kN/m3), side_springs}; water {gw_depth, internal_depth}; earth_pressure {method K0 | annexB | cl94, fill_6n6p, ...}; traffic {carriageway, lm1, lm2, braking, surcharge, step, lm3 {enabled, sv80, sv100, sv196, gaps}, vehicles}; thermal {dT_exp, dT_con, dT_heat, dT_cool, shrinkage}; loads {sdl}; reinforcement {top_slab, base_slab, walls}; design {allowable_bearing, RH, t0, creep_phi}. Lengths m, bars [dia mm, spacing mm]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds useful behavior: the report is generated from one run of the checks, xlsx is the default, result diagrams are captured from CIVIL NX, and download links are returned. The phrase 'writes the plugin's report' sits slightly awkwardly with readOnlyHint=true, but it appears to describe artifact creation rather than model mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence that covers the main action and output formats without filler. It is dense but appropriately sized for a report-generation tool, though the parenthetical about culvert_analyse_and_check interrupts the flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly notes that download links are returned. It covers the key behavior for the format and analyze parameters, while the large nested project parameter is left to the schema's detailed description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema already documents the format enum and most of the project structure. The description adds the xlsx default and clarifies that 'both' comes from one run of the checks, but it does not explain the analyze flag's full effect or elaborate on the project merges beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and output: runs checks on the analysed culvert model and writes the plugin's report in xlsx, pdf, or both. It explicitly contrasts itself with culvert_analyse_and_check, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says the checks run as in culvert_analyse_and_check and that re-analysis happens only when analyse: true. That establishes the main usage condition and names the sibling alternative, though it does not mention when to prefer other report-oriented siblings such as model_report_export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dxf_importAdvanced DXF Importer — import into CIVIL NXADestructiveInspect
Imports a DXF into the open CIVIL NX model with the Advanced DXF Importer plugin's engine: the same parse, layer mapping, clean-up and write as the plugin. Nodes and elements get new ids above the model's (existing rows are never overwritten); each layer's structure group is created or added to; blank properties become the plugin's DXF default material (C40/50), section (SB 500x300) and thickness (250), created or reused by name. Previews by default (writes nothing): the plan with id ranges, groups, default properties and any unit switch. To write, call again with the same inputs, apply: true and confirmPlanHash; the model is read again and the write refused if the plan changed. The write creates a master group DXF_ # first, then the unit change, properties, nodes, elements and groups, then reads everything back to verify. The import journal is recorded so dxf_import_undo can remove exactly what it created, even after a partial failure. Inputs as for dxf_inspect, plus mergeExisting.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | An https address the DXF is downloaded from, up to 25 MB (public hosts only on the website). | |
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| plane | No | Flat drawings only: XY → plan (global XY), XZ → elevation, YZ → side elevation. | XY |
| origin | No | Move the drawing: {mode:'none'} (default), {mode:'min'} (drawing minimum to 0,0,0), or {mode:'user', x, y, z} (metres, subtracted). Use it for OS-grid / site coordinates. | |
| dxfText | No | The DXF file's text (ASCII DXF), up to 4 MB. Use dxfBase64 for a binary DXF or an R12 file with non-ASCII layer names (the bytes then keep their code page). | |
| mapping | No | Layer mapping in the plugin's preset format (the file Save mapping writes). rules apply in order, first match wins, * and ? wildcards, case-insensitive; layers are exact names and override the rules. Per class (linear = lines/polylines/arcs/splines, face = 3DFACE/polyface/mesh, point): as BEAM|TRUSS|IGNORE (linear), PLATE|IGNORE (face), NODE|IGNORE (point); material, section (linear) or thickness (face) as an id, a name or {id,name} (omitted = the DXF default property, created on import); beta (deg); group ('{layer}' = the layer name); split (split at intersections); plate THICK|THIN; include false drops a layer. Example: {rules:[{layer:'*GIRDER*', class:'linear', as:'BEAM', material:'C40/50', section:'G1', group:'Girders'}, {layer:'DIM*', include:false}], layers:{SLAB:{face:{as:'PLATE', thickness:'Slab 250'}}}} | |
| arcChord | No | Instead of arcSegments: largest chord deviation, mm. | |
| fileName | No | Name of the drawing (default: from the URL or path, else drawing.dxf). It names the import's master group DXF_<name> #<token>. | |
| filePath | No | Local server only: a path to the DXF on this machine, up to 50 MB. | |
| dxfBase64 | No | The DXF file's bytes, base64, up to 4 MB decoded. | |
| arcSegments | No | Arcs/circles/splines: segments per full circle. | |
| planeOffset | No | Flat drawings only: metres added along the axis the drawing's normal maps to. | |
| drawingUnits | No | The drawing's units when it does not record them ($INSUNITS; R12 files never do), or to override them. | |
| mergeExisting | No | Reuse existing model nodes within the merge tolerance instead of creating new ones there (reused nodes join no group). | |
| mergeTolerance | No | Node merge tolerance, mm (clean-up). | |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. | |
| matchModelUnits | No | As in the plugin: switch the CIVIL NX model's length unit to the drawing's (mm/cm/m/in/ft) before writing. DESTRUCTIVE when it changes the unit — the preview says so; undo switches it back. false = keep the model's unit and convert the coordinates. | |
| ignoreAnnotationLayers | No | Untick layers that are empty or mostly annotation (TEXT, DIMENSION, HATCH…), as the plugin's bulk action does. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructive and open-world, and the description backs that with concrete consequences: new ids only, existing rows never overwritten, default material/section/thickness created or reused, a master group DXF_<file> #<token> created, a read-back verification, and a journal enabling exact undo even after partial failure. The write ordering and the destructive unit switch are disclosed, so the agent knows exactly what state is touched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavior, the preview-by-default contract, and the write sequencing are front-loaded before secondary details, and every sentence carries operational content. It is dense for a several-sentence paragraph but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains what the preview returns (plan with id ranges, groups, default properties, any unit switch) and what the write does end to end. For an 18-parameter, nested-object mutation tool this covers the safety contract, verification and rollback path an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter documentation burden is already met by the schema (including the detailed mapping example and the destructive matchModelUnits note). The description adds only a pointer that inputs mirror dxf_inspect plus mergeExisting, without new semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Imports a DXF into the open CIVIL NX model') and names the engine (Advanced DXF Importer plugin). It also draws the boundary against siblings: it references dxf_inspect for inputs and dxf_import_undo for reversal, so the agent can tell what this tool does and does not cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two-step workflow is explicit: preview by default (writes nothing), then call again with the same inputs plus apply:true and confirmPlanHash, with the write refused if the plan changed. What is not resolved is when to use this tool's preview versus dxf_inspect, which the description only cross-references by 'Inputs as for dxf_inspect' without saying which to reach for first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dxf_import_undoUndo a dxf_importADestructiveInspect
Removes what one dxf_import created, with the plugin's own removal rules: it refuses unless the import's master group is in the open model; deletes the import's elements, then its nodes, only where they still match the fingerprint taken before writing (anything edited since is kept, and a node another element uses is kept); deletes the groups and default properties it created once nothing uses them; switches the model's length unit back if the import changed it and it is unchanged since. Works after a partial import too. Default: the latest dxf_import not yet undone. Previews (what would be removed and kept) unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No | The runId dxf_import returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/openWorldHint annotations, disclosing the exact deletion order (elements then nodes), the fingerprint guard that preserves anything edited since the import, the rule keeping nodes still used by other elements, and the conditional unit restore. The only gap is the shape of the non-preview response, but the annotations already flag destructiveness and the description adds rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in the first clause and packs the rest with substantive rules rather than filler. It is dense and long, but each clause carries a distinct behavioral fact; slight tightening of the nested parentheticals would help readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, it covers preconditions, default targeting, safety behavior, and what the preview reports. Only the committed-run return value is left implicit, which is a minor gap given the preview is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (apply has no schema description), and the description compensates by explaining that apply: true commits while the default previews what would be removed and kept. It also explains the runId default (latest un-undone import), giving meaning beyond the schema's "The runId dxf_import returned."
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Removes what one dxf_import created") and immediately frames it as an undo of a named sibling, so the agent can distinguish it from dxf_import, dxf_inspect, and unrelated *_undo tools. The scope statement is precise about what is removed and under which rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions and exclusions: it "refuses unless the import's master group is in the open model," works after a partial import, and defaults to the latest not-yet-undone import when runId is omitted. It also spells out the safe path — preview by default, mutate only with apply: true — leaving nothing to inference about when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dxf_inspectAdvanced DXF Importer — inspect a drawingARead-onlyInspect
Reads a DXF with the Advanced DXF Importer plugin's own parser and clean-up and reports what an import would create: the file (version, encoding, entity counts, what is ignored or unsupported), its units, every layer with its entities and mapping, and the clean model — nodes, BEAM/TRUSS/PLATE elements per layer, structure groups, disconnected parts, and the clean-up operations (merged nodes, removed duplicates and zero-length segments, splits at crossings and T-junctions, hanging nodes). Needs no CIVIL NX model and changes nothing. Give the drawing as dxfText, dxfBase64 or url (4 MB inline, 25 MB by url). Use it to choose the mapping and settings before dxf_import. Lengths in the report are in the unit the import works in (importIn).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | An https address the DXF is downloaded from, up to 25 MB (public hosts only on the website). | |
| plane | No | Flat drawings only: XY → plan (global XY), XZ → elevation, YZ → side elevation. | XY |
| origin | No | Move the drawing: {mode:'none'} (default), {mode:'min'} (drawing minimum to 0,0,0), or {mode:'user', x, y, z} (metres, subtracted). Use it for OS-grid / site coordinates. | |
| dxfText | No | The DXF file's text (ASCII DXF), up to 4 MB. Use dxfBase64 for a binary DXF or an R12 file with non-ASCII layer names (the bytes then keep their code page). | |
| mapping | No | Layer mapping in the plugin's preset format (the file Save mapping writes). rules apply in order, first match wins, * and ? wildcards, case-insensitive; layers are exact names and override the rules. Per class (linear = lines/polylines/arcs/splines, face = 3DFACE/polyface/mesh, point): as BEAM|TRUSS|IGNORE (linear), PLATE|IGNORE (face), NODE|IGNORE (point); material, section (linear) or thickness (face) as an id, a name or {id,name} (omitted = the DXF default property, created on import); beta (deg); group ('{layer}' = the layer name); split (split at intersections); plate THICK|THIN; include false drops a layer. Example: {rules:[{layer:'*GIRDER*', class:'linear', as:'BEAM', material:'C40/50', section:'G1', group:'Girders'}, {layer:'DIM*', include:false}], layers:{SLAB:{face:{as:'PLATE', thickness:'Slab 250'}}}} | |
| arcChord | No | Instead of arcSegments: largest chord deviation, mm. | |
| fileName | No | Name of the drawing (default: from the URL or path, else drawing.dxf). It names the import's master group DXF_<name> #<token>. | |
| filePath | No | Local server only: a path to the DXF on this machine, up to 50 MB. | |
| dxfBase64 | No | The DXF file's bytes, base64, up to 4 MB decoded. | |
| arcSegments | No | Arcs/circles/splines: segments per full circle. | |
| planeOffset | No | Flat drawings only: metres added along the axis the drawing's normal maps to. | |
| drawingUnits | No | The drawing's units when it does not record them ($INSUNITS; R12 files never do), or to override them. | |
| mergeTolerance | No | Node merge tolerance, mm (clean-up). | |
| matchModelUnits | No | As in the plugin: switch the CIVIL NX model's length unit to the drawing's (mm/cm/m/in/ft) before writing. DESTRUCTIVE when it changes the unit — the preview says so; undo switches it back. false = keep the model's unit and convert the coordinates. | |
| ignoreAnnotationLayers | No | Untick layers that are empty or mostly annotation (TEXT, DIMENSION, HATCH…), as the plugin's bulk action does. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint; the description adds genuinely new traits — no model required, nothing is changed, and concrete input ceilings (4 MB inline, 25 MB by url). It also notes that report lengths follow the import's working unit, which matters for interpreting results. It stops short of discussing errors or performance on large drawings, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scope, then report contents, then the dxf_import hand-off, then input options and the units caveat. Dense but every clause carries information; the source-inputs sentence is the only part that largely duplicates the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work by enumerating what the report contains (version, encoding, entity counts, ignored/unsupported items, layers, elements, structure groups, disconnected parts, clean-up operations). That is enough for an agent to know what it will get back; the reference to 'importIn' as a unit, which is not among this tool's parameters, is the one loose end.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates the three input sources and their size limits (already in the schema) and adds the unit framing ('Lengths in the report are in the unit the import works in (importIn)') — but 'importIn' is not a parameter of this tool, which slightly muddies rather than clarifies parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (reads a DXF with the plugin's parser) and names the exact output shape: what an import would create — file metadata, units, layers/mapping, and the clean model. It is unmistakably a dry-run sibling of dxf_import rather than a conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: 'Use it to choose the mapping and settings before dxf_import', plus the scope qualifier 'Needs no CIVIL NX model and changes nothing' that tells the agent this is the safe pre-flight step. The alternative (dxf_import) is named and the selecting condition is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ec_wind_applyWrite bridge wind loads (Eurocode Wind Loads)AInspect
Calculates §8 wind on the deck and writes it with the Eurocode Wind Loads plugin's adapter: one EC1W_ load case per global direction, then beam loads (beam deck) or a pressure + fascia nodal loads (plate deck) on the target elements — one element written and read back first, then the rest, with a direction audit. Target: elementIds, a structure group, or (neither) the deck the plugin finds itself. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| co | No | Orography factor c_o (default 1). | |
| vb0 | No | Fundamental basic wind velocity v_b,0, m/s (CEN has no map). | |
| cdir | No | ||
| apply | No | ||
| group | No | ||
| bridge | No | Deck inputs, metres. Omitted geometry is measured from the model (ec_wind_apply) — ec_wind_bridge needs b, d, L and groundToSoffit. | |
| cseason | No | ||
| directions | No | Global load directions to write, e.g. {"Z-": false}. Default: all six (X±, Y±, Z±). | |
| elementIds | No | ||
| zEccentric | No | §8.3.3(5): place the vertical force at e = ±b/4. | |
| cscdOverride | No | ||
| lineOfAction | No | Transverse wind at mid-height of d_tot (aref) or at the section centroids. | aref |
| nationalAnnex | No | Built-in annex id; default CEN. | |
| confirmPlanHash | No | ||
| terrainCategory | No | 0, I, II (default), III or IV. | |
| returnPeriodYears | No | Default 50. | |
| acknowledgeOutOfScope | No | Only with the user's agreement: apply §8 to a form it does not cover. | |
| acknowledgeUnverifiedAnnex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the dry-run-by-default behavior, the write pattern (one element written and read back first, then the rest), and the direction audit — meaningful safety context for a mutating tool flagged readOnlyHint=false. This is exactly the operational detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the calculation and the write target, then the mechanics and the preview switch. It is dense and em-dash-heavy but every clause carries information; a light restructuring would improve scanability without cutting content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema mutation tool with 18 params and nested geometry, it covers the essentials: what gets written, where, in what order, and that it previews by default. Gaps remain around overwrite behavior for existing EC1W_ cases, failure/rollback semantics, and the purpose of confirmPlanHash, which an agent would need before a real apply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 18 parameters at 56% schema coverage, the schema carries most of the burden. The description adds real value on target selection (elementIds vs group vs implicit deck) and the directions default of all six, but says nothing about co, vb0, nationalAnnex, terrainCategory, confirmPlanHash, or cscdOverride, leaving several params unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calculates §8 wind on the deck and writes it with the Eurocode Wind Loads plugin's adapter') and specifies the concrete output artifacts: one EC1W_ load case per global direction plus beam loads or pressure + fascia nodal loads. An agent can distinguish this write operation from read/remove siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Previews unless apply: true' clause is an explicit usage condition and the target-resolution rule (elementIds, group, or default deck) tells the agent what inputs select which target. It stops short of naming alternatives such as ec_wind_bridge for geometry-only calculation or ec_wind_remove for cleanup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ec_wind_bridgeEN 1991-1-4 §8 bridge wind loadsARead-onlyInspect
Calculates EN 1991-1-4 §8 wind actions on a bridge deck with the Eurocode Wind Loads plugin's own engine: v_b, q_p(z_e), c_sc_d, d_tot, the transverse (x), longitudinal (y) and vertical (z, at e = ±b/4) forces, and the load cases the plugin would write. Needs no model.
| Name | Required | Description | Default |
|---|---|---|---|
| co | No | Orography factor c_o (default 1). | |
| vb0 | No | Fundamental basic wind velocity v_b,0, m/s (CEN has no map). | |
| cdir | No | ||
| bridge | Yes | Deck inputs, metres. Omitted geometry is measured from the model (ec_wind_apply) — ec_wind_bridge needs b, d, L and groundToSoffit. | |
| cseason | No | ||
| spanAxis | No | X | |
| directions | No | Global load directions to write, e.g. {"Z-": false}. Default: all six (X±, Y±, Z±). | |
| zEccentric | No | ||
| cscdOverride | No | ||
| nationalAnnex | No | Built-in annex id; default CEN. | |
| terrainCategory | No | 0, I, II (default), III or IV. | |
| returnPeriodYears | No | Default 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false; the description adds that calculation is standalone ('Needs no model'), uses the plugin's own engine, and returns derived forces and load cases. It does not discuss failure modes or out-of-scope structural forms, but it does not contradict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler, and 'Needs no model' appears early. The dense symbol list is justified because there is no output schema, though readability could improve by separating purpose from returned quantities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, listing v_b, q_p(z_e), c_sc_d, d_tot, component forces, and load cases fills a real gap. Required bridge geometry and many defaults are covered by the schema, while limitations such as out-of-scope structural forms are left to schema fields rather than the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description contributes almost no input-parameter meaning; it lists outputs and says no model is needed, but several schema parameters lack descriptions and the description does not compensate. At 58% coverage, the agent must infer several units, defaults, and enum meanings from parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Calculates), exact standard/resource (EN 1991-1-4 §8 wind actions on a bridge deck), and names returned quantities. 'Needs no model' separates it from model-bound siblings such as ec_wind_apply, so an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a usage condition ('Needs no model') but does not name alternatives or exclusions, such as when to use ec_wind_apply for writing into a model or ec_wind_read_deck for reading deck data. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ec_wind_read_deckRead the deck for windARead-onlyInspect
Reads the open model the way the Eurocode Wind Loads plugin does: finds the deck (or measures the elements / group given), and reports b, d, L, the soffit height, the span axis, whether the deck is beams or plates, and a structural-form guess. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| elementIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description still adds real value by listing the returned quantities (there is no output schema) and flagging that the structural form is only a 'guess'. It does not disclose failure behavior, e.g. what happens when no deck can be found or how ambiguity between candidates is resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the verb and the 'finds the deck' core, followed by a compact colon-list of outputs. Nothing is padding, though the output enumeration runs long and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what comes back, and annotations cover the read-only profile. Gaps remain for a measurement tool: units/conventions for b, d, L and soffit height are unstated, and no-deck-found behavior is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does partially: 'measures the elements / group given' assigns a role to each of the two parameters. However it leaves precedence undefined (what happens if both group and elementIds are supplied), does not explain what a 'group' string refers to, and does not say both are optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reads the open model ... finds the deck') and enumerates the exact quantities it reports (b, d, L, soffit height, span axis, deck type, structural form). It is clearly a read/measure step in the ec_wind_* family, distinguishable from ec_wind_apply and ec_wind_remove, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is the survey step before ec_wind_apply, and the parenthetical hints that passing a group or elementIds switches to measuring those instead of auto-finding the deck. There is no explicit when-to-use/when-not statement or guidance on choosing between the two modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ec_wind_removeRemove the wind loadsADestructiveInspect
Removes what the Eurocode Wind Loads plugin writes: every EC1W_ load case, its load group, and their beam/pressure/nodal loads — whether this tool or the plugin window wrote them. Loads anyone else put on the same elements are kept. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds substantial context: exactly which load cases and load groups are removed, that plugin-window-authored loads are also removed, and that unrelated loads on the same elements are preserved. It also discloses the preview-by-default behavior, which is valuable for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the removal scope, followed by the preservation guarantee and the preview/apply rule. Every clause adds useful information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive one-parameter removal tool with annotations and no output schema, the description covers what is removed, what is preserved, and the preview/apply distinction. An agent has enough information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is apply, and although schema description coverage is 0%, the description explicitly states 'Previews unless apply: true.' This fully explains the parameter's effect beyond its boolean type and default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it removes every EC1W_ load case, load group, and their beam/pressure/nodal loads written by the Eurocode Wind Loads plugin. It distinguishes this from sibling tools by naming the plugin provenance and clarifying that loads from other sources are kept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the default preview behavior and the apply: true mutation path, so an agent knows how to invoke it safely. It does not explicitly name alternatives such as ec_wind_apply or state when not to use this tool, but the intended use context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_result_tablesExport result and model tables to ExcelARead-onlyInspect
Exports one or more CIVIL NX tables (each like the preview_result_table arguments, full scope, no sampling) into one Excel workbook built by the exporter plugin: one sheet per table (and per sub-table; split above 1,048,575 rows), unit-labelled headers, numeric cells, and a 'Contents & Export Log' sheet listing each table's request, rows and any failure. format csv gives one CSV file per sheet instead. Returns download links (never the file inline) and a per-table summary; a table that fails is logged and the rest still export. Read-only. Can run long on big models, so it runs as a job on the website.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | xlsx | |
| tables | Yes | ||
| workbookName | No | File name without extension (default MIDAS_CIVIL_NX_Tables). | |
| includeContents | No | Add the 'Contents & Export Log' sheet first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only state readOnlyHint=true and openWorldHint=false. The description adds substantial behavioral detail: one sheet per table, splitting above 1,048,575 rows, unit-labelled headers, a Contents & Export Log sheet, download links returned instead of inline files, partial failure isolation, and long-running job execution. This is rich context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core export behavior and remains dense with operational details such as sheet layout, failure logging, and download-link returns. Its length is proportionate to the complexity of a multi-table export tool, and every clause provides useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description states the return shape (download links and a per-table summary), covers partial failure behavior, and notes that long-running exports execute as a job. Together with the annotations and schema, this gives an agent enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema description coverage, the description compensates by explaining that each entry in the 'tables' array mirrors preview_result_table arguments with full scope and no sampling, and that format='csv' changes the output to one CSV file per sheet. It does not explain workbookName or includeContents directly, but those are covered by schema descriptions, so the main semantic gap is filled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it exports CIVIL NX tables into an Excel workbook or CSV files. It also distinguishes this from preview_result_table by stating that the export uses full scope and no sampling, so an agent can tell the two tools apart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the export use case, explains that format='csv' produces one CSV per sheet instead of an Excel workbook, and warns that large models run as a job. It does not explicitly name when to avoid this tool or route the agent to a preview alternative beyond the schema's 'preview first' note, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusStatus of a long-running tool callARead-onlyInspect
Status, progress and (when finished) the result of a tool call that returned a jobId. Poll every few seconds until status is done or failed.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds genuinely new behavior: partial progress reporting before completion, result delivery only on finish, and the two terminal states done/failed. It doesn't cover intermediate state names or whether repeated polls are rate-limited, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: what is returned first, then how to poll. Every clause carries information (return fields, timing, termination); nothing is redundant with the annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and read-only annotations, the description covers what an agent needs: where jobId comes from, what comes back over time, and when to stop polling. Remaining gaps are minor — the full set of non-terminal state values and error/failure payload semantics are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (jobId is typed as a bare string with no description), so the description must compensate — and it does, explaining that jobId is the identifier returned by the original long-running tool call. It still doesn't say whether jobId is opaque, session-scoped, or whether it expires, so not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (report status, progress, and result) against a specific resource (a tool call identified by jobId). The precondition 'a tool call that returned a jobId' uniquely identifies this as the async-polling tool, distinguishing it from the many analysis/setup siblings without needing a named alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit invocation guidance — 'Poll every few seconds until status is done or failed' — including cadence and the stopping condition, plus the implied trigger (a prior call returned a jobId). It stops short of saying what to do on a failed status (retry vs. abandon) or what not to do, so it is clear context rather than full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_bridge_summaryModel to IFC — what the exporter seesARead-onlyInspect
Reads the open model's geometry tables and CIVIL NX's computed section properties and reports the bridge the Model to IFC plugin finds in it: girder lines, piers and pylons (station, elements, bearings, foundations), abutments, bearings, the deck alignment and its line/arc fit, the joined deck, every section in use with how its outline was rebuilt and its area difference from CIVIL NX, tendons, weightless members left out, volumes per material. Read-only; writes no file. Use it before model_to_ifc / model_to_dxf, or to sanity-check a model.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File / model name (default: the model's project name). | |
| tendons | No | Tendons drawn at their duct diameter. | |
| joinDeck | No | Join side-by-side girders' slab strips into one continuous deck. | |
| startStation | No | Chainage at the start of the deck, m. | |
| separateSlabs | No | A composite section's deck slab as its own slab. | |
| skipWeightless | No | Leave out weightless (dummy) members; cables, piles and members named NoSW are kept. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so 'Read-only; writes no file' is largely reinforcement rather than new information. What the description does add is substantive: the tool reads both model geometry tables and CIVIL NX-computed section properties, reports area differences against CIVIL NX, and surfaces excluded weightless members — behavior an agent could not infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope is front-loaded in the first clause and the usage routing comes last, so an agent gets the point immediately. The middle sentence is a very long comma-delimited inventory of reported items that is dense but each item earns its place as return-value disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden of describing return content — and it does so exhaustively (girder lines, foundations, bearings, alignment fit, per-section area deltas, volumes per material). With readOnly/openWorld annotations covering safety and all six parameters defaulted, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema. The description echoes several of them indirectly (tendons, 'the joined deck', 'weightless members left out', 'every section in use'), but adds no syntax, units, or default behavior beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-plus-resource ('Reads the open model's geometry tables and CIVIL NX's computed section properties') and enumerates exactly what it reports: girder lines, piers/pylons, abutments, bearings, deck alignment and line/arc fit, joined deck, sections with outline rebuild and area deltas, tendons, weightless members, volumes. It is unmistakably the diagnostic/preview counterpart of model_to_ifc and cannot be confused with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger conditions directly: 'Use it before model_to_ifc / model_to_dxf, or to sanity-check a model.' That names the alternatives and the ordering, and the 'Read-only; writes no file' clause makes clear why one would pick this tool over the exporters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_qc_checkModel QC checks (Model Report)ARead-onlyInspect
Runs the Model Report plugin's fourteen quality checks on the open CIVIL NX model: duplicate (coincident) nodes, orphan nodes, zero-length and duplicate elements, elements without material/section, unused properties, disconnected regions, support adequacy, load cases with no loads, loads on missing nodes/elements, combinations citing a missing case, elements in no structure group, length outliers and end releases that make a mechanism. Returns each check's result (pass / fail / not applicable / not run), severity, criterion, count and the ids involved, a model summary (counts, units) and what was read from each table. Reads only the tables the checks use (GET only). Read-only; on the website it runs as a job.
| Name | Required | Description | Default |
|---|---|---|---|
| maxIds | No | Ids listed per check. | |
| language | No | Language of the check wording / the report: English, French, German, Greek, Polish. | en |
| toleranceMm | No | Nodes closer than this (mm, 3D) count as coincident. | |
| outlierFactor | No | An element longer or shorter than the median length by this factor is an outlier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint already present, it discloses the read scope (only the tables the checks use), the async job behavior on the website, and — with no output schema — enumerates each check's returned result fields (pass/fail/not-applicable/not-run, severity, criterion, count, ids), the model summary, and the table-read record. This is substantive behavioral context the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded, and the long enumeration of the fourteen checks earns its space by defining coverage. The return-value clause is a dense run-on that could be tightened, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, no-output-schema tool, the description is complete: it explains what is checked, the read-only/GET/job behavior, and the shape of the returned results and summary. An agent has enough to decide to call it and to interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all four parameters, so the schema already does the work and the baseline 3 applies. The description adds no parameter-level detail (e.g. how toleranceMm interacts with the coincidence check beyond what the schema says).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (runs fourteen quality checks) on a specific resource (the open CIVIL NX model) and enumerates what is checked, so an agent knows exactly what the tool covers. It is clearly distinct from siblings like model_report_export or model_report_images, which handle output rather than checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes the operating context (the open CIVIL NX model), notes it is GET-only, and mentions that on the website it runs as a job. It does not explicitly name when to prefer a sibling (e.g. model_report_export after running) or state exclusions, so it falls short of the explicit alternative-routing a 5 requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_report_exportModel report document (HTML, Excel, Word, PDF)ARead-onlyInspect
Builds the Model Report plugin's 'Model report' for the open CIVIL NX model — cover, contents, materials, sections (with drawings), supports and springs, load cases, combinations and loads, nodes/elements/groups appendix, cross sections, tendons, CIVIL NX pictures, the QC checks and the data sources read — and returns it as download links: html (default), xlsx, docx and/or pdf, in English, French, German, Greek or Polish. Document details (project, client, job no., revision, author, checker, date …) go on the cover. Pictures are rendered by CIVIL NX (POST /view/CAPTURE, the user's own view is left as it is): by default the isometric model view and every figure saved in the model; choose model views, load views, saved figures and beam diagrams with images (model_report_images lists them), and the beam diagrams' legend format (exponential/fixed, decimals) there too. Otherwise reads only (GET, plus POST /post/TABLE for tendon coordinates). Runs as a job.
| Name | Required | Description | Default |
|---|---|---|---|
| images | No | Pictures CIVIL NX renders into the report. "none" for none; otherwise an object (omitted fields keep the defaults: modelViews ["iso"], savedFigures "all"). | |
| details | No | Document details printed on the cover (all optional). | |
| formats | No | ||
| language | No | Language of the check wording / the report: English, French, German, Greek, Polish. | en |
| numbering | No | Number chapters and figures. | |
| toleranceMm | No | Nodes closer than this (mm, 3D) count as coincident. | |
| outlierFactor | No | An element longer or shorter than the median length by this factor is an outlier. | |
| tendonCoordinates | No | Read the computed tendon coordinate table (needs an analysed model) when the report has tendons. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, but the description adds substantial behavioral context beyond those hints. It discloses that the tool runs as a job, that CIVIL NX renders pictures via POST /view/CAPTURE while leaving the user's view unchanged, that it otherwise performs reads including POST /post/TABLE for tendon coordinates, and that beam diagrams and tendon coordinates require an analysed model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and remains dense with relevant detail. It is appropriately sized for a complex export tool, though the single long paragraph could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the absence of an output schema, the description explains that the result is download links, the available formats, and job execution. It is largely complete, but it does not describe how to retrieve job status or results, and it omits explanation of the QC tolerance and outlier parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents most parameters. The description still adds useful semantics: default picture behavior (modelViews ['iso'], savedFigures 'all'), legend formatting for beam diagrams, the need for an analysed model, and where document details appear. It does not explain toleranceMm or outlierFactor, which are only covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Builds') and resource ('the Model Report plugin's Model report') and enumerates the report's contents, output formats, and supported languages. It also names the sibling tool model_report_images for picture keys, so an agent can distinguish this export from related report tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: reports on the open CIVIL NX model, returns download links, and runs as a job. It also explains image defaults and points to model_report_images for available picture keys. However, it does not explicitly compare against alternatives such as export_result_tables or cs_stage_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_report_imagesPictures the model report can carryARead-onlyInspect
Lists the CIVIL NX pictures the Model Report can put in this model's report, with their keys: FE model views (iso, plan, front, side), the applied loads of each static load case, the figures saved in the model (/db/UFIG), and the beam diagrams on offer (each static case, combination and construction-stage part × components Fx…Mw). Pick from them with model_report_export images. Read-only (GET only); nothing is rendered.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false; the description adds the useful clarification that it is GET-only and that 'nothing is rendered', telling the agent no image generation side effect occurs. It does not cover failure modes such as a model with no saved figures, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and resource, and every clause enumerates a distinct category of returnable image, so the length is earned. The single long sentence with nested parentheticals is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining the return value, and it does so by listing the image categories and key concepts. The exact key string format remains unstated, leaving a small gap for an agent that must construct keys, but the structural picture is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description compensates by describing the returned key space in detail (iso/plan/front/side views, per-static-case loads, /db/UFIG figures, per-case/combination/stage diagram components Fx…Mw), which is more than the empty schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — lists the CIVIL NX pictures the Model Report can carry, with their keys — and enumerates exactly what kinds of images appear (FE views, load figures, /db/UFIG figures, beam diagrams). It also distinguishes itself from the sibling model_report_export by positioning itself as the catalogue that export consumes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Pick from them with model_report_export images' names the alternative tool and the follow-up action. It implies the intended flow (discover keys here, then export) but does not state any exclusion such as when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_to_dxfModel to IFC — DXF drawings and 3D DXFARead-onlyInspect
Draws the open CIVIL NX model as DXF with the Model to IFC plugin's drawing engine: a 2D drawing file (DXF 2000: plan, elevation developed along the deck, hidden-line isometric, section cuts with hatched faces and tendon ducts, and every section in use dimensioned) and a 3D DXF (one polyface mesh per element, layered by role, DXF 2000 or R12). Cuts are given in metres: {kind:'cross', at: chainage} across the deck, {kind:'long', at: offset left of the centreline}, {kind:'level', at: height}, with depth = how far beyond the cut to draw; none given = one across mid-span, cutsAtSupports adds one at each pier and abutment. Only reads the model; returns download links.
| Name | Required | Description | Default |
|---|---|---|---|
| cuts | No | ||
| name | No | File / model name (default: the model's project name). | |
| units | No | Drawing unit (dimensions); levels and chainages are labelled in m (ft for imperial). | mm |
| views | No | Which 2D views (default all: plan, elevation, iso, cuts, sections). | |
| hidden | No | Hidden lines dashed in plan and elevation. | |
| labels | No | Chainages, labels and dimensions. | |
| model3d | No | Also write the 3D DXF. | |
| tendons | No | Tendons drawn at their duct diameter. | |
| format3d | No | R12 is about half the size (Autodesk Viewer may show it empty). | R2000 |
| joinDeck | No | Join side-by-side girders' slab strips into one continuous deck. | |
| wireframe | No | 3D: element centrelines and plate outlines on a non-plotting layer. | |
| drawings2d | No | ||
| startStation | No | Chainage at the start of the deck, m. | |
| separateSlabs | No | A composite section's deck slab as its own slab. | |
| cutsAtSupports | No | ||
| max3dMegabytes | No | Skip the 3D file (and say so) if it would be larger than this. | |
| skipWeightless | No | Leave out weightless (dummy) members; cables, piles and members named NoSW are kept. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false; the description reinforces this with 'Only reads the model; returns download links.' It also adds genuine behavioral context beyond annotations: cut coordinate conventions in metres, the default cut when none is supplied, the effect of cutsAtSupports, and the max3dMegabytes skip behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the two output types, then the cut syntax, then the read-only/download-link note. It is dense and long, but for a 17-parameter tool nearly every clause carries distinct information; a few items (e.g. drawings2d, name) are left to the schema rather than repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 17 parameters and no output schema, the description does the important work: it explains the cuts structure, default and support-cut behavior, the 2D/3D outputs, and that results come back as download links. Some parameters (drawings2d, name, wireframe interplay) are left entirely to the schema, but nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 82%, so the baseline is 3, but the description meaningfully extends semantics for the undocumented 'cuts' array: kinds (cross/long/level) with their reference frames, 'at' in metres, and 'depth' meaning how far beyond the cut to draw. It also clarifies units labeling (m/ft for levels and chainages) beyond the schema's own enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: draws the open CIVIL NX model as DXF, producing both a 2D drawing (DXF 2000, with plan/elevation/iso/cuts/sections) and a 3D polyface-mesh DXF. It explicitly ties itself to the Model to IFC plugin's drawing engine, which separates it from siblings like model_to_ifc (IFC export) and dxf_import (opposite direction).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than spelled out: the tool reads the model and returns download links, and cut defaults ('none given = one across mid-span, cutsAtSupports adds one at each pier') give context on how it behaves by default. However, there is no explicit statement of when to choose this vs model_to_ifc, model_report_export, or dxf_inspect, and no prerequisites or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_to_ifcModel to IFC — export the model to IFC4 / IFC4.3ARead-onlyInspect
Exports the open CIVIL NX model to IFC with the Model to IFC plugin: real section outlines with voids, smooth tapers, tendons, composite deck slabs, materials, structure groups and stages; in IFC4.3 also the bridge structure (deck, piers, abutments, bearings, alignment); optionally the structural analysis model with loads, combinations, support reactions, and — for the series named in resultSeries — node displacements and member/plate forces; optionally a second file of the deformed shape for one load case or combination. Only reads the model. Returns download links (never the file inline) and the exporter's report (sections, volumes, bridge parts, checks). Results are read on demand and can take long on big models (one live model: 40 s for all displacements), which is why this runs as a job.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File / model name (default: the model's project name). | |
| loads | No | Load cases, self-weight, nodal/beam/pressure loads and combinations (with analysis). | |
| georef | No | {crs (e.g. EPSG:27700), eastings, northings, height, rotation (deg), scale}: IfcMapConversion. Omitted = none. | |
| groups | No | ||
| schema | No | IFC4: Revit, Navisworks, Tekla, Solibri. IFC4X3: the bridge model (IfcBridge parts, bearings, alignment). | IFC4 |
| stages | No | Construction stages as groups. | |
| colours | No | ||
| tendons | No | Tendons drawn at their duct diameter. | |
| analysis | No | Include the structural analysis model (nodes, supports, members, links). | |
| deformed | No | {series, scale}: also write the deformed shape for one load case or combination as its own IFC (scale omitted = automatic, the largest movement drawn at about 5% of the bridge's size). | |
| joinDeck | No | Join side-by-side girders' slab strips into one continuous deck. | |
| reactions | No | Support reactions for every analysed series (with analysis; needs an analysed model). | |
| plateForces | No | With resultSeries: plate forces. | |
| memberForces | No | With resultSeries: beam forces. | |
| resultSeries | No | Load cases / combinations (exact names) whose results to add: node displacements and member and plate forces. None by default — they multiply by elements × points × series. | |
| startStation | No | Chainage at the start of the deck, m. | |
| displacements | No | With resultSeries: node displacements. | |
| separateSlabs | No | A composite section's deck slab as its own slab. | |
| classification | No | {name, edition, codes: {<role>: {code, title}}} e.g. Uniclass codes per role (girder, deck slab, pier stem, pier cap, abutment wall, pile, bearing, tendon…). | |
| skipWeightless | No | Leave out weightless (dummy) members; cables, piles and members named NoSW are kept. | |
| linearPlacement | No | IFC4.3 only: place members along the alignment (IfcLinearPlacement). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description states that it only reads the model, returns download links rather than inline files, includes the exporter report, and runs as a job because large models can take a long time. These are operationally important details an agent would otherwise have to infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and dense with relevant information, which suits a complex export tool. The long semicolon-separated sentence is slightly harder to scan but does not waste space on repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 21-parameter export with no output schema, the description covers purpose, schema choice, optional analysis content, return format, job behavior, and runtime caveats. An agent has enough information to decide whether and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 90%, so most parameter meaning is carried by structured fields. The description adds useful context around resultSeries, deformed output, and IFC4.3 bridge content, but it does not meaningfully explain many of the 21 parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: exports the open CIVIL NX model to IFC via the Model to IFC plugin. It clearly distinguishes this from unrelated siblings by being an IFC export, not a DXF or report export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the IFC4 vs IFC4.3 choice explicit and explains what each schema adds, while also clarifying that analysis results and deformed-shape output are optional. It does not name sibling alternatives such as model_to_dxf, but the intended use case is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pd6694_route_aPD 6694-1 Route A earth pressuresARead-onlyInspect
PD 6694-1 integral abutment earth pressures by the limit-equilibrium route (K*, cl.9.4.3/9.4.4) with the PD 6694-1 Integral Abutment plugin's own engine: thermal movement and design displacement, the route (A1/A2, or B / review when Annex A is needed), applicability checks, coefficients, and the four states EXPMAX/EXPMIN/CONMAX/CONMIN (force, peak pressure, resultant, moment per metre). Needs no model.
| Name | Required | Description | Default |
|---|---|---|---|
| psi | No | ||
| tMax | No | Max effective bridge temperature, °C (default 37). | |
| tMin | No | Min effective bridge temperature, °C (default -2). | |
| gammaQ | No | ||
| skewDeg | No | ||
| abutment | No | ||
| gammaSat | No | ||
| override | No | Engineer's route override {route, engineer, reason} — only with the user's justification. | |
| gammaBulk | No | ||
| alphaMicro | No | Thermal coefficient ×1e-6 /°C (default 12). | |
| phiCritDeg | No | Backfill φ'crit (default 32). | |
| phiPeakDeg | No | Backfill φ'peak (default 35). | |
| abutmentType | No | frame (default) or the plugin's other types. | |
| surchargeKpa | No | ||
| hasWaterTable | No | ||
| phiInferiorDeg | No | ||
| phiSuperiorDeg | No | ||
| expansionLength | No | Length to the point of zero movement, m (default 60). | |
| waterTableDepth | No | ||
| nAbutmentsSharing | No | Abutments sharing the movement (default 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful context: it uses the plugin's own engine, performs applicability checks, requires no model, and returns the four states with force, peak pressure, resultant and moment per metre. It does not specify persistence behavior, but the model-free note and read-only hint make that clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and packs the key differentiators (Route A, no model, four output states) into a single dense sentence. It is appropriately sized for a complex calculation tool, though it could be split for readability; no sentence is purely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 20-parameter tool with no output schema, the description covers the high-level purpose, route conditions, no-model requirement and the four output states. However, it leaves most parameter semantics to a schema with only 45% coverage and does not fully explain the return object structure. It is minimally adequate but has clear gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 45%, so the description should compensate for the many undocumented parameters. It broadly mentions thermal movement, design displacement, route, coefficients and states, but does not explain the roles of parameters such as psi, gammaQ, skewDeg, gammaSat, gammaBulk, surchargeKpa, hasWaterTable, waterTableDepth, phiInferiorDeg, phiSuperiorDeg, nAbutmentsSharing and others. The description adds high-level grouping but not sufficient per-parameter meaning for a 20-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific calculation: PD 6694-1 integral abutment earth pressures via the limit-equilibrium route (K*, cl.9.4.3/9.4.4), naming the engine and the four output states. It distinguishes itself from siblings by specifying Route A/A1/A2 versus B/Annex A review and by noting it needs no model, which separates it from model-dependent SSI or write tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear condition for Route A versus Route B / Annex A review, and states that the tool needs no model. It does not explicitly name the SSI or write/remove sibling tools, but the alternative route condition and the model-free scope provide enough context for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pd6694_route_a_removeRemove PD 6694 Route A casesADestructiveInspect
Removes the four PD6694 EP limit-equilibrium load cases with their pressures, load groups and stage activations (the plugin's Remove). Other load cases are kept. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by naming exactly what is destroyed (four load cases, pressures, load groups, stage activations) and confirming that other load cases are retained. It also discloses the preview-by-default behavior, which is critical for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the removal scope and ends with the safety-relevant preview condition. Every clause carries useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive mutation with annotations covering the safety profile, the description gives nearly everything an agent needs: scope, retention of other cases, and preview behavior. It does not mention reversibility or undoability, which would be useful context for a removal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining that the sole parameter apply toggles between preview and actual removal. That meaning is clear, though minor details such as the type/default are left to the schema (boolean, default false).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: removes the four PD6694 EP limit-equilibrium load cases, including pressures, load groups and stage activations. The parenthetical '(the plugin's Remove)' and the scope note 'Other load cases are kept' distinguish it clearly from related route A and SSI tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear operational context: it is the plugin's Remove command and previews unless apply: true. It does not explicitly name an alternative sibling such as pd6694_route_a_write or discuss when not to use it, but the intended use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pd6694_route_a_writeWrite PD 6694 Route A pressuresAInspect
Writes the four PD 6694 limit-equilibrium states as plate pressures on one or two abutment wall groups, exactly as the plugin's Write button: same-model guard, the PD6694 EP load cases and groups, pressure items (other loads on the plates kept), then verification of the totals against the calculation; optionally activates them in a construction stage. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| psi | No | ||
| tMax | No | Max effective bridge temperature, °C (default 37). | |
| tMin | No | Min effective bridge temperature, °C (default -2). | |
| apply | No | ||
| gammaQ | No | ||
| skewDeg | No | ||
| stageId | No | Construction stage id to activate the four cases in. | |
| gammaSat | No | ||
| override | No | Engineer's route override {route, engineer, reason} — only with the user's justification. | |
| abutments | Yes | ||
| gammaBulk | No | ||
| alphaMicro | No | Thermal coefficient ×1e-6 /°C (default 12). | |
| phiCritDeg | No | Backfill φ'crit (default 32). | |
| phiPeakDeg | No | Backfill φ'peak (default 35). | |
| abutmentType | No | frame (default) or the plugin's other types. | |
| surchargeKpa | No | ||
| hasWaterTable | No | ||
| phiInferiorDeg | No | ||
| phiSuperiorDeg | No | ||
| confirmPlanHash | No | ||
| expansionLength | No | Length to the point of zero movement, m (default 60). | |
| waterTableDepth | No | ||
| nAbutmentsSharing | No | Abutments sharing the movement (default 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive local mutation; the description adds real behavioral context beyond that: a same-model guard, preservation of other loads on the plates, post-write verification of totals against the calculation, and optional stage activation. It omits whether previously written pressures are replaced or duplicated, and how the guard failure surfaces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and target, then the write pipeline, then the preview caveat. Dense but nearly every clause carries information. The middle clause chain ('pressure items (other loads on the plates kept), then verification...') is a run-on that could be split for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the workflow end to end for a guarded mutation with no output schema, but for a 23-parameter tool it leaves the agent guessing about most inputs and about what the preview response actually contains. Adequate as a summary, short of what the schema's low coverage requires.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (43%) across 23 parameters, so the description must compensate. It clarifies apply (write vs preview), stageId (activates the four cases), override (requires engineer justification) and the one-or-two abutments cap, but says nothing about psi, gammaQ, gammaBulk, skewDeg, confirmPlanHash, or the sign/unit conventions of the pressure items — a large unexplained remainder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: writes the four PD 6694 limit-equilibrium states as plate pressures onto one or two abutment wall groups. The 'exactly as the plugin's Write button' anchor makes the semantics concrete. It does not explicitly contrast with the sibling pd6694_route_a (compute-only) or pd6694_route_a_remove, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an important usage rule — 'Previews unless apply: true' — and a conditional prerequisite for the override parameter ('only with the user's justification'). It does not say when to call this versus pd6694_route_a, pd6694_route_a_remove, or the SSI siblings, nor what conditions make a write inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pd6694_ssi_planPlan a PD 6694 Annex A (SSI) runBRead-onlyInspect
Plans the PD 6694-1 Annex A soil-structure interaction run on the open model with the plugin's planner: spring nodes on each wall, piles, the stiffness range, and every blocker. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| psi | No | ||
| ssi | No | Annex A settings, as the plugin's SSI tab: deckGroup (required), stageId, suspendGroups, piles [{pileGroup, pileTributaryWidth, excavationLevel}], movementConvention, foundationC, groundPhi, groundGamma, mode (multilinear|linear), onLinearBehaviour, tolerance, maxIterations, relaxation, wallRigidAtBase, pilePlaneStrainConfirmed. | |
| tMax | No | Max effective bridge temperature, °C (default 37). | |
| tMin | No | Min effective bridge temperature, °C (default -2). | |
| gammaQ | No | ||
| skewDeg | No | ||
| gammaSat | No | ||
| override | No | Engineer's route override {route, engineer, reason} — only with the user's justification. | |
| abutments | Yes | ||
| gammaBulk | No | ||
| alphaMicro | No | Thermal coefficient ×1e-6 /°C (default 12). | |
| phiCritDeg | No | Backfill φ'crit (default 32). | |
| phiPeakDeg | No | Backfill φ'peak (default 35). | |
| abutmentType | No | frame (default) or the plugin's other types. | |
| surchargeKpa | No | ||
| hasWaterTable | No | ||
| phiInferiorDeg | No | ||
| phiSuperiorDeg | No | ||
| expansionLength | No | Length to the point of zero movement, m (default 60). | |
| waterTableDepth | No | ||
| nAbutmentsSharing | No | Abutments sharing the movement (default 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already establishes the safe, non-mutating profile, and the description is consistent with it by saying 'Read-only'. It adds useful context that the planner produces spring nodes, piles, stiffness ranges, and blockers, but it does not explain what blockers mean, whether they prevent later execution, or what the planner output contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted preamble. It is concise, though the phrase 'every blocker' is opaque and the sentence is doing a lot of implicit work for such a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 21-parameter tool with nested SSI configuration and no output schema, the description is too sparse. It does not explain the plan's return shape, the meaning of blockers, how route overrides interact with planning, or key prerequisites, leaving significant gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 48% across 21 parameters, so the description needs to compensate for undocumented inputs, but it does not. It mentions conceptual elements such as piles and stiffness range without mapping them to specific parameters or explaining required fields, override behavior, or the nested ssi settings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: planning the PD 6694-1 Annex A soil-structure interaction run on the open model via the plugin's planner. It also lists the artifacts produced (spring nodes, piles, stiffness range, blockers), and the planning/read-only framing distinguishes it from the sibling execution tool pd6694_ssi_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Plans' and 'Read-only', suggesting this is a pre-execution check rather than an execution or mutation tool. However, the description does not explicitly state when to use it versus pd6694_ssi_run, nor does it name prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pd6694_ssi_removeRemove PD 6694 SSI resultsADestructiveInspect
Removes everything an SSI run left (design pressure cases, spring groups, analysis cases) and restores the model's own springs from the run's backup (the plugin's Remove SSI). Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond the annotations: it lists the artifacts that will be removed, states that model springs are restored from a backup, and clarifies that preview is the default. This is rich behavioral detail for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no wasted words. The core removal action is stated first, followed by the restore behavior and the preview condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with annotations covering safety and no output schema, the description supplies the important missing context: what is removed, what is restored, and how preview works. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, apply, and the schema provides no description for it. The description compensates by explaining that the operation previews unless apply is true, which gives the parameter clear semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Removes', and names exactly what is removed: design pressure cases, spring groups, and analysis cases. It also distinguishes the operation from an SSI run by explaining that it restores the model's own springs from the run's backup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: this is the cleanup operation for an SSI run. It also explains the preview-versus-apply behavior, though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pd6694_ssi_runRun PD 6694 Annex A (SSI)AInspect
Runs the PD 6694-1 Annex A iteration with the plugin's own runner: Winkler springs on the walls (multi-linear), repeated analyses until the wall displacements settle, then the two design pressure cases written and the analysis set-up removed — keeping a backup of the model's own springs for undo. Takes minutes: on the website it runs as a job (poll job_status). Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| psi | No | ||
| ssi | No | Annex A settings, as the plugin's SSI tab: deckGroup (required), stageId, suspendGroups, piles [{pileGroup, pileTributaryWidth, excavationLevel}], movementConvention, foundationC, groundPhi, groundGamma, mode (multilinear|linear), onLinearBehaviour, tolerance, maxIterations, relaxation, wallRigidAtBase, pilePlaneStrainConfirmed. | |
| tMax | No | Max effective bridge temperature, °C (default 37). | |
| tMin | No | Min effective bridge temperature, °C (default -2). | |
| apply | No | ||
| gammaQ | No | ||
| skewDeg | No | ||
| gammaSat | No | ||
| override | No | Engineer's route override {route, engineer, reason} — only with the user's justification. | |
| abutments | Yes | ||
| gammaBulk | No | ||
| alphaMicro | No | Thermal coefficient ×1e-6 /°C (default 12). | |
| phiCritDeg | No | Backfill φ'crit (default 32). | |
| phiPeakDeg | No | Backfill φ'peak (default 35). | |
| abutmentType | No | frame (default) or the plugin's other types. | |
| surchargeKpa | No | ||
| hasWaterTable | No | ||
| phiInferiorDeg | No | ||
| phiSuperiorDeg | No | ||
| confirmPlanHash | No | ||
| expansionLength | No | Length to the point of zero movement, m (default 60). | |
| waterTableDepth | No | ||
| nAbutmentsSharing | No | Abutments sharing the movement (default 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations only flagging non-readonly, non-destructive, the description discloses the actual side effects: two pressure cases written, the analysis set-up removed, a backup of the model's own springs kept for undo, and a minutes-long runtime. That is exactly the mutation/undo context an agent needs beyond the hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and packed with useful detail in two sentences, no filler. The second sentence is dense with several clauses (runtime, job polling, apply), which slightly hurts scannability but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 23-param mutating runner with no output schema, the description covers the process, job behavior, undo backup, and apply semantics well. It omits preconditions like the confirmPlanHash flow and the meaning of most geometric/thermal parameters, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43% across 23 parameters, so the description should compensate but mostly doesn't. It does add real meaning for 'apply' (preview vs write), but the many bare numeric parameters (psi, gammaQ, skewDeg, etc.) get no clarification here or in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Runs the PD 6694-1 Annex A iteration' with concrete mechanics (Winkler springs, settling loop, pressure cases written). It is clearly differentiated in substance from pd6694_ssi_plan and pd6694_route_a, though it never names a sibling to contrast against, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Previews unless apply: true' gives explicit dry-run vs commit guidance, and 'runs as a job (poll job_status)' tells the agent how to follow up. It stops short of naming alternatives (e.g., when to prefer pd6694_ssi_plan) or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_result_tablePreview one result or model tableARead-onlyInspect
Reads one table from the open CIVIL NX model the way the exporter's 'Preview this table' does and returns its first rows (default 20, max 200) with unit-labelled headers, any sub-tables (e.g. reaction totals) and the exact POST /post/TABLE Argument sent. Result tables are a quick sample (first 20 nodes/elements, 3 load cases, 2 stage steps) with an estimate of the full row count; model tables are read whole. When no loadCases are given it also lists the model's load-case names (loadCasesInModel). Read-only (GET /db and POST /post/TABLE only). Results need an analysed model.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| dbKey | No | For db-custom: any /db/ key (e.g. MVHL, TDNA). | |
| parts | No | Beam tables: stations along each element (default PartI, PartJ). | |
| table | Yes | Table id from result_table_catalog (e.g. reaction-global, beam-force, displacement-global, plate-force-unit-local, db-node). A MIDAS TABLE_TYPE (BEAMFORCE) or DB key (NODE) is accepted too. | |
| title | No | ||
| units | No | Units MIDAS converts the results to (default kN, m). | |
| columns | No | Model tables: exact column names to keep (preview first to see them). | |
| records | No | Model tables: which record ids (filtered after the read). | |
| argument | No | For custom-table: the full POST /post/TABLE Argument object. | |
| decimals | No | Default 6. | |
| entities | No | ||
| loadCases | No | e.g. ["DL(ST)", "ULS(CB)", "ENV(CB:max)", "LM1(MV:max)"]. Omit for every case. | |
| sheetName | No | Excel sheet name (≤ 31 characters). | |
| tableType | No | For result-any: the MIDAS TABLE_TYPE. | |
| components | No | Columns, as listed for the table (e.g. Axial, Moment-y). Omit for the plugin's defaults; for 'all columns' tables omit for every column. | |
| nodeCenter | No | Plate tables: include the element centre. | |
| stageSteps | No | With constructionStage: e.g. ["CS1:001(first)", "CS3:002(last)"]. Omit for every saved step. | |
| nodeCorners | No | Plate tables: include the corner nodes (default true). | |
| averageNodal | No | ||
| numberFormat | No | Default Scientific. | |
| extraArgument | No | For 'all columns' tables: more POST /post/TABLE Argument keys (e.g. LOAD_CASE_NAMES, NODE_ELEMS, OPT_CS). | |
| userTableName | No | For user-defined-table-*: the saved Dynamic Report Table name. | |
| sectionPositions | No | Beam stress detail: e.g. ["Maximum"] or stress point numbers. | |
| constructionStage | No | Results of the construction stage analysis (adds Stage and Step columns). | |
| displacementOption | No | Displacement tables in construction stages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint=false; the description goes well beyond them by stating the exact endpoints used (GET /db and POST /post/TABLE only), the sampling caps for result tables (first 20 nodes/elements, 3 load cases, 2 stage steps) versus whole reads for model tables, the row-count estimate, and the prerequisite that results need an analysed model. This is precisely the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads what the tool returns and the result-vs-model-table distinction, then layers constraints. Nearly every clause carries information, though the exporter-preview analogy and parenthetical endpoint list add slight bulk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 25 parameters and no output schema, the description does the important work of describing the return shape (rows, headers, sub-tables, POST argument, full-row-count estimate) and the analysed-model prerequisite. Remaining gaps are minor since the schema covers parameter-level semantics at 84%.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Coverage is 84%, so the schema already documents nearly all 25 parameters and the baseline of 3 applies. The description contributes one real behavioral detail not in the schema: when loadCases is omitted, the model's load-case names are also returned via loadCasesInModel. Other parameters (parts, sectionPositions, displacementOption, extraArgument) are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (reads one table from the open CIVIL NX model) and explains the return payload: first rows, unit-labelled headers, sub-tables, and the exact POST /post/TABLE argument. It also distinguishes result tables (sampled) from model tables (read whole), which is genuinely differentiating. It does not name sibling tools such as export_result_tables or civil_read_table, so the agent must infer the preview-vs-export split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
result_table_catalogResult and model tables the exporter knowsARead-onlyInspect
Lists the CIVIL NX tables the Bulk Tabular Result Exporter plugin can export, with each one's id, MIDAS TABLE_TYPE or /db endpoint, components and the arguments it takes: analysis results (reactions, displacements, beam/truss/plate/solid forces and stresses, links, cables, tendons, modes, composite sections, construction stage tables, 'all columns' for any TABLE_TYPE), calculated pre-process tables, and every model data table (/db/NODE, ELEM, SECT, loads, stages, combinations…). Filter with scope, search or id. Needs no model. Use it to pick the table id for preview_result_table and export_result_tables.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | One table id, with its full description. | |
| scope | No | pre = model data and pre-process tables; post = analysis results. | |
| search | No | Words in the id, name, category, TABLE_TYPE or DB key, e.g. 'beam', 'reaction', 'tendon'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, openWorldHint=false), and the description adds genuinely non-obvious behavior: the catalog requires no model loaded, and it spans both analysis results and /db model tables. It does not discuss ordering, size of the catalog, or rate limits, but nothing contradicts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and returned fields are front-loaded, and the filter/caller guidance closes the description. The long parenthetical enumeration of result categories ('reactions, displacements, beam/truss/plate/solid forces…') is dense but earns its place by telling the agent what coverage to expect; it is slightly longer than strictly needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return shape itself (id, TABLE_TYPE or /db endpoint, components, arguments) and explains the pre/post split and free-text matching. For a zero-required-parameter catalog with full schema coverage, nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already documents itself (scope enum, search examples, id). 'Filter with scope, search or id' restates the schema rather than adding semantics such as how scope interacts with search or what happens when both are passed, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Lists the CIVIL NX tables the Bulk Tabular Result Exporter plugin can export', then enumerates the returned fields (id, TABLE_TYPE/db endpoint, components, arguments). The two calling siblings, preview_result_table and export_result_tables, are named, so the agent can place it in the workflow without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to pick the table id for preview_result_table and export_result_tables' gives explicit downstream routing, and 'Needs no model' sets the precondition. It stops short of stating when not to use it (e.g. when the table id is already known), so it is clear context rather than a full when/when-not rule set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
section_previewSection Designer — check and draw a sectionARead-onlyInspect
Checks a cross-section's outlines with Section Designer's own rules (closed, not self-crossing, holes inside their outline, no overlaps, materials) and returns a PNG drawing of it — the outlines, numbered input vertices, the centroid and chain dimensions — plus the extents, areas and every vertex. Use it FIRST, and LOOK at the drawing: compare it with the user's sketch (overall width and depth, slab and web thicknesses, haunches, cells) and correct misreads before computing or writing anything. Needs no model. From a sketch: read every dimension and put the outline down as vertices in y (across, right +) and z (up), in the sketch's units (default mm). Holes are separate rings inside their outline; direction of travel does not matter. Rounded corners: fillet on that vertex; arcs between vertices: bulge; round bars or ducts: { circle }. Standard shapes can use a template (i_girder, box_girder) instead of vertices. Two materials (girder + slab): one part each, in construction order, each with its material.
| Name | Required | Description | Default |
|---|---|---|---|
| svg | No | Also store the drawing as an SVG file and return its link. | |
| section | Yes | The section, read off the sketch. Axes: y across (positive right), z up, as seen in CIVIL's section dialog; put the origin anywhere convenient (e.g. bottom-left corner or soffit centre) — CIVIL's frame is applied on write. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds rich behavioral context beyond that: it checks outlines against specific rules, returns a PNG drawing plus extents, areas and every vertex, and requires no model. This gives an agent a complete picture of what the tool does and does not do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with purpose and usage instructions. Each sentence contributes useful guidance for a complex nested schema, though some phrasing could be tightened slightly without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description fully explains the return value (PNG drawing with outlines, vertices, centroid, chain dimensions, extents, areas, and every vertex). It also covers the 'no model needed' context and the construction-order requirement for materials, leaving nothing essential missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all parameters. The description adds substantial meaning for the core 'section' parameter: coordinate axes (y across, z up), units (default mm), how to represent holes, fillets, bulges and circles, and how to structure parts and materials. It does not elaborate on secondary parameters like svg or warpingEffect, keeping it just below full marks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Checks') and resource ('cross-section's outlines') and explicitly lists the rules checked. It also distinguishes itself from siblings by saying 'Use it FIRST' and 'Needs no model', contrasting with section_properties and section_write without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use it FIRST' and describes the workflow: compare the drawing with the sketch and correct misreads before computing or writing anything. It does not name alternative tools, but the context precludes use of computation or write tools before this preview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
section_propertiesSection Designer — section propertiesARead-onlyInspect
Computes the full CIVIL NX property set of a section with Section Designer's solver: exact area, centroid, second moments, extreme fibres and perimeters from the outlines, and torsion J and shear areas ASY/ASZ from a finite-element mesh refined until all three settle to 0.5 % (converged: true). Composites (two or more parts) give each part alone (STIFF) and each construction stage transformed to the reference material (STIFF_SUM). Results use CIVIL's names (AREA, ASY, ASZ, RXX = J, RYY = Iyy, RZZ = Izz, …) in the section's units. Needs no model. Same section input as section_preview.
| Name | Required | Description | Default |
|---|---|---|---|
| drawing | No | Also return the drawing (with the computed centroid). | |
| section | Yes | The section, read off the sketch. Axes: y across (positive right), z up, as seen in CIVIL's section dialog; put the origin anywhere convenient (e.g. bottom-left corner or soffit centre) — CIVIL's frame is applied on write. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/openWorld=false; the description adds substantial behaviour beyond that — mesh-refined J and shear areas iterated to 0.5% convergence with a converged flag, composite handling via STIFF and STIFF_SUM per construction stage, and CIVIL-specific result naming. This is exactly the kind of solver semantics an agent could not infer from schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and outputs, no filler sentences, and the convergence guarantee appears early. It is dense to the point of being hard to scan in one pass, which keeps it just short of top marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of explaining return values and does so — result names, units, composite variants, and the converged flag. Combined with its statement that no model is required, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested section schema is extremely detailed, so parameter semantics are already carried by structured data. The description adds only a cross-reference ('Same section input as section_preview') and the note that results are in the section's units, which is marginal additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and verb — computing the full CIVIL NX property set of a section — and enumerates the quantities produced (area, centroid, second moments, extreme fibres, perimeters, J, shear areas). It also distinguishes itself implicitly from section_preview by noting the shared input but differing output, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context: 'Needs no model' and 'Same section input as section_preview', which implies this is the compute counterpart to the preview tool. It stops short of explicit when-not guidance or naming section_read/section_write as alternatives, so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
section_readSection Designer — read sections from the modelARead-onlyInspect
Without id: lists the model's sections (id, name, type, whether Section Designer can edit it) and the next free id. With id: returns a drawn section (VALUE/GEN, PSC/VALU, COMPOSITE-GEN) as outlines in section_preview's input format, in units (default mm), with its stored properties — edit it and write it back with section_write.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| units | No | mm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds useful behavioral details: the conditional return shape, next free id, section editability, default units, and the write-back path. It does not specify error behavior for invalid ids or pagination, but it adds substantial context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the two usage modes and uses compact, information-dense phrasing. Every clause earns its place by specifying behavior, return content, units, or the follow-up write tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does a good job explaining what is returned in both list and detail modes, including fields, outline format, units, and stored properties. The detail-mode properties are not itemized, but the cross-reference to section_preview and section_write makes the definition usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It clearly explains that id toggles between listing sections and retrieving a drawn section, and it explains units as the output coordinate units with a default of mm, though it does not explicitly say units is irrelevant when no id is supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific verb/resource behavior: without id it lists sections with fields and next free id, with id it returns a drawn section as outlines plus stored properties. It also distinguishes the read operation from the write path by naming section_write for editing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the id vs no-id usage modes and names section_write as the alternative for editing. However, it does not explicitly differentiate this tool from section_properties or section_preview beyond referencing section_preview's input format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
section_writeSection Designer — write a section to CIVIL NXADestructiveInspect
Writes a section into the open CIVIL NX model exactly as Section Designer's Write button does: VALUE/GEN, PSC/VALU or COMPOSITE-GEN with its computed properties (CIVIL keeps them as sent), in the model's units read at the time of writing, then reads it back and compares every value sent. id defaults to the model's next free section id. Refuses unconverged results. If the id is taken it writes nothing and says by what (and how many elements use it); replacing needs replaceExisting: true — DESTRUCTIVE, only with the user's agreement. Previews unless apply: true with confirmPlanHash. Before applying, show the user the drawing (section_preview) and the properties and get their go-ahead. section_write_undo reverses it. Same section input as section_preview.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Section id; default = next free id in the model. | |
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| section | Yes | The section, read off the sketch. Axes: y across (positive right), z up, as seen in CIVIL's section dialog; put the origin anywhere convenient (e.g. bottom-left corner or soffit centre) — CIVIL's frame is applied on write. | |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. | |
| replaceExisting | No | DESTRUCTIVE: overwrite the section already at id (elements using it change stiffness). Only with the user's agreement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, readOnlyHint=false) by disclosing that it refuses unconverged results, that an id collision writes nothing and reports how many elements use the id, that units are read from the model at write time, and that it reads back and compares every value after writing. The property/drawing approval workflow adds real operational context. Only the response payload shape (what the comparison result looks like) is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical gating information (preview-by-default, apply+hash, destructive replace) is front-loaded and every clause is actionable. It is dense and semicolon-heavy, with a couple of redundancies against the schema, but nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a heavily nested schema with no output schema and four safety annotations, the description covers preconditions (open model, units at write time), the preview/approval protocol, collision handling, destroyed state on replace, and the undo path. An agent has everything needed to call it safely without opening the schema first.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value by pointing to section_preview as the identical input shape and by highlighting that id defaults to the next free section id and that confirmPlanHash binds the write to the approved plan. Some statements (id default, replaceExisting destructive) restate schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — writes a section into the open CIVIL NX model — and ties it to a concrete behavioural reference (Section Designer's Write button), naming the write variants (VALUE/GEN, PSC/VALU, COMPOSITE-GEN). It is clearly separable from section_preview (which only draws) and section_write_undo (which reverses).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not rules: previews by default, requires apply:true plus confirmPlanHash to write, requires replaceExisting:true (and user agreement) to overwrite a taken id, and directs the agent to show section_preview and section_properties for approval first. It also names the reversal path (section_write_undo).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
section_write_undoUndo a section_write runADestructiveInspect
Reverses a section_write run from the ledger: deletes the section it created (refused while elements use it), or writes back the section it replaced, then reads back. Default: the latest section_write run not yet undone. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No | Ledger run id; default = the latest section_write run not yet undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description goes well beyond them by disclosing exactly what is destroyed versus restored, the guard that refuses deletion while elements reference the section, and the preview-vs-apply gating. That is precisely the extra context an agent needs before triggering an irreversible mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences plus a short default clause; the reversal behavior is front-loaded and the parenthetical guard is placed inline where it matters. No filler or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive mutation with no output schema, the description covers purpose, default target selection, safety guard, and preview/apply behavior. The phrase 'then reads back' gestures at the return value but does not say what is returned, which is the only meaningful gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% – only runId is documented in the schema, and apply has no description there. The description compensates by defining apply's semantics (previews unless true) and restating the runId default, adding real meaning rather than repeating an uninformative boolean default. It stops short of describing runId's format or where ledger run ids come from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reverses/undoes) and a specific resource (a section_write run from the ledger), then enumerates the two possible reversal semantics (delete created section vs. write back replaced section). This clearly distinguishes it from section_write and from unrelated *_undo siblings such as cs454_moving_loads_undo or skew_grillage_undo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operative context: it targets the latest section_write run not yet undone, and it previews unless apply: true. The paired relationship with section_write is implied by the naming, and the refusal condition while elements use the section tells the agent when it will fail, but there is no explicit sentence routing the agent back to section_write or section_read for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skew_grillageSkew Grillage Geometry GeneratorADestructiveInspect
Generates a bridge deck (beam grillage or plate mesh) with the Skew Grillage Geometry Generator plugin's own engine: skew, unequal girders, plan curvature, multi-span, crossfall and vertical profile, automatic transverse section sizing and structure groups (GIRDERS, CROSS-BEAMS, END-BEAMS for the support-line members, SPAN-n, or DECK for plates). Without apply it only previews (counts, metrics, groups, planHash). With apply: true it writes to CIVIL NX exactly as the plugin does: it refuses a model that already holds geometry unless replaceExisting is set, creates default material/sections/thickness where the ids are missing, and records the run for skew_grillage_undo.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| geometry | No | Deck inputs, named as in the plugin. Anything omitted takes the plugin form's default. Lengths in metres, angles in degrees. | |
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. | |
| replaceExisting | No | DESTRUCTIVE: delete all nodes, elements, sections, thicknesses, materials and structure groups first. Only with the user's explicit agreement. | |
| structureGroups | No | ||
| allowDefaultProperties | No | Create a default C30-like material and rectangular sections/thickness when the ids are not in the model. | |
| autoTransverseSections | No | One transverse section per measured tributary width (beam decks). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, it discloses concrete write behavior: it refuses a model already holding geometry unless replaceExisting is set, creates default material/sections/thickness where ids are missing, and records the run for undo. It also states what the preview returns (counts, metrics, groups, planHash), which the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the generation capability before the preview/write semantics. Every clause carries information, though the first sentence is a long run-on list that would read faster split into capability and options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema mutation tool with a nested geometry object, the description covers the preview payload, the write preconditions, default-property fallbacks and the undo path. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema carries most parameter documentation; the description adds value on top by naming the actual group labels (GIRDERS, CROSS-BEAMS, END-BEAMS, SPAN-n, DECK) that structureGroups produces and by tying apply/preview to the approval workflow. It adds less on individual geometry fields, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — generates a bridge deck as beam grillage or plate mesh — and names the engine (the plugin's own), the addressable features (skew, unequal girders, plan curvature, multi-span, crossfall, vertical profile) and the structure groups produced. An agent can distinguish it from siblings like bridge_reshape, culvert_build, or skew_grillage_undo without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The preview-versus-write split is explicit: without apply it only previews, with apply: true it writes, and the run is recorded for skew_grillage_undo. It does not explicitly name a sibling alternative for non-plugin deck creation (e.g. bridge_reshape), so it is clear context without full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skew_grillage_undoUndo a Skew Grillage runADestructiveInspect
Removes the deck a skew_grillage run wrote (its elements, nodes, new structure groups and any default properties nothing else uses). Refuses while lanes, other groups or other elements still depend on it. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No | Ledger run id; default = the latest skew_grillage run not yet undone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare destructiveHint=true and readOnlyHint=false, the description adds substantial value by specifying exactly what is deleted, the dependency conditions that block deletion, and the default preview behavior. This is strong behavioral disclosure beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the action and target, then dependency refusal, then preview behavior. Every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive undo tool with no output schema, this covers what is removed, what blocks the operation, and how to preview versus apply. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: runId is documented in the schema, while apply is not. The description compensates by explaining that apply=true performs the removal and omitting it previews, giving the undocumented parameter clear semantics. It adds little about runId beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: removes the deck written by a skew_grillage run. It enumerates exactly what is cleaned up (elements, nodes, structure groups, unused default properties), which clearly distinguishes it from the sibling skew_grillage run tool and other undo tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the key usage condition: it previews unless apply is true and refuses while dependent lanes, groups, or elements remain. It does not name an alternative tool for resolving dependencies, but the when-to-use and when-not-to-use conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slab_assessAssess RC slabs/shells from plate forcesARead-onlyInspect
Reads plate forces (PLATEFORCEUL, element local axes) for one orientation group and the given load cases, rotates them to the reinforcement direction and assesses every position with the plugin's own core (Denton, Wood-Armer, sandwich, Annex LL, CS 455). Returns counts, the worst elements with governing case/position, coverage and every gap (missing results are INCOMPLETE, never a pass). Read-only. Can take minutes on big models (a job on the website).
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | The bar arrangement (preferred): drives the Denton/Wood-Armer capacities, the Annex LL steel forces and covers, and CS 455. | |
| cases | Yes | Load cases / combinations by name (slab_survey lists them). | |
| cs455 | No | CS 455 material inputs (with bars). | |
| group | No | Structure group to assess (default: every plate). | |
| methods | No | Routes: denton (needs capacities), woodarmer, sandwich (Clark–Nielsen), annexll (EN 1992-2 Annex LL), cs455 (needs bars). Default denton + woodarmer. | |
| alphaDeg | No | Angle of the second bar direction from the first, degrees (default 90 = orthogonal). | |
| sandwich | No | Sandwich / Annex LL: fck, gamma_c, cot_theta, shear {ndp, anchored, d, rho_x, rho_y, rho_l, fywd, asw_per_s}, layer_thicknesses [ts, ti] m; WITHOUT bars also thickness, cover_top, cover_bottom (m, to the bar centroid) and steel [tx, ta, bx, ba] kN/m. | |
| thetaDeg | No | Or: the direction as an angle in the plane from slab_survey's suggestedReference (default 0). | |
| averaging | No | Average nodal results over the plates meeting at each node (in the reinforcement frame). Off by default: averaging hides peaks. | |
| reference | No | Reinforcement x direction as a global vector in the plane of the plates. | |
| capacities | No | Moment capacities typed directly, instead of bars. | |
| centreOnly | No | Assess element centres only. | |
| maxElements | No | How many of the worst elements to list (default 25). | |
| orientation | No | Orientation group index from slab_survey (default 0, the largest). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so 'Read-only' is redundant. The description does add real value with the 'can take minutes on big models (a job on the website)' runtime hint and the 'missing results are INCOMPLETE, never a pass' semantics, which are not in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence order is well front-loaded: what it reads, then the return payload, then the correctness caveat, then the runtime warning. The lone 'Read-only' sentence duplicates the annotation and is the only wasted line in an otherwise dense, purposeful paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, deeply nested tool with no output schema, it names the return contents (counts, worst elements with governing case/position, coverage, gaps) and flags the async job behaviour. The remaining gap is an explicit pointer to how runtime results are fetched, but the definition is otherwise sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 14 parameters including defaults and enums. The description reinforces the picture ('one orientation group', rotation to the reinforcement direction, preferred bars) but adds little syntax or default information the schema does not already carry, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (reads plate forces, rotates, assesses) on a specific resource (RC slabs/shells, PLATEFORCEUL, one orientation group) and names the exact method set (Denton, Wood-Armer, sandwich, Annex LL, CS 455). This clearly separates it from siblings like cs455_assess, slab_capacities_from_bars and slab_survey.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It points at slab_survey for case names and orientation indices, and explains that bars are the preferred input vs typed capacities, and that gaps are INCOMPLETE rather than a pass. It does not explicitly state when to choose this over the sibling assessment tools, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slab_capacities_from_barsRC slab capacities from barsBRead-onlyInspect
Bar arrangement → everything the RC Slab & Shell Assessment routes need, with the plugin's own core: per layer area, d, x, z, moment capacity (kNm/m) and force (kN/m); the Denton/Wood-Armer capacity pairs, the four Annex LL steel forces and the covers to the reinforcement centroid. Needs no model.
| Name | Required | Description | Default |
|---|---|---|---|
| fck | Yes | MPa | |
| fyk | No | MPa (default 500) | |
| top | No | One face: {cover_mm, layers: [{dia, spacing, angle, outer}, ...]} — one layer per bar direction, the outer one marked outer: true. | |
| bottom | No | One face: {cover_mm, layers: [{dia, spacing, angle, outer}, ...]} — one layer per bar direction, the outer one marked outer: true. | |
| gamma_c | No | ||
| gamma_s | No | ||
| alpha_cc | No | ||
| thickness_mm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description usefully adds that the tool requires no model and enumerates the computed quantities, which is behavior an agent cannot infer from the annotations alone; error handling and input validation behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence, front-loaded with the transformation 'Bar arrangement → ...'. It packs many output items but remains fairly tight, though domain shorthand like 'Annex LL steel forces' may require prior knowledge.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does well to enumerate the returned quantities, but the input side is complex (nested top/bottom layers, 8 parameters, 50% schema coverage) and the description provides no guidance on the undocumented gamma and alpha parameters. It is adequate but incomplete for an agent to call this correctly without carefully inspecting the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, with gamma_c, gamma_s, alpha_cc, and thickness_mm undocumented in the schema. The description adds no parameter-level meaning, such as defaults for partial factors or how top/bottom layers and cover interact, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific computation: deriving RC slab/shell capacities from a bar arrangement, including per-layer area, effective depth, lever arms, moment and force capacities. It is clearly a calculation tool, but it does not explicitly differentiate itself from assessment siblings such as slab_assess or cs455_assess.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Needs no model' implies it should be used for standalone capacity calculation from bars, and the link to 'RC Slab & Shell Assessment routes' gives context. However, there is no explicit when-not guidance or named alternative for cases where a model-based assessment is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slab_explain_locationExplain one slab location's utilisationARead-onlyInspect
The working behind one element's utilisation: reads that element's plate forces, picks its governing position and case (or the one given) and re-runs it through the plugin's explain_location — every route, face, utilisation and intermediate quantity (gamma, Wood-Armer branch, sandwich layer forces, Annex LL split). Same inputs as slab_assess plus element. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | The bar arrangement (preferred): drives the Denton/Wood-Armer capacities, the Annex LL steel forces and covers, and CS 455. | |
| case | No | Only this case (default: the element's governing one among cases). | |
| cases | Yes | Load cases / combinations by name (slab_survey lists them). | |
| cs455 | No | CS 455 material inputs (with bars). | |
| group | No | Structure group to assess (default: every plate). | |
| element | Yes | ||
| methods | No | Routes: denton (needs capacities), woodarmer, sandwich (Clark–Nielsen), annexll (EN 1992-2 Annex LL), cs455 (needs bars). Default denton + woodarmer. | |
| alphaDeg | No | Angle of the second bar direction from the first, degrees (default 90 = orthogonal). | |
| position | No | Node number or 'Cent' (default: governing). | |
| sandwich | No | Sandwich / Annex LL: fck, gamma_c, cot_theta, shear {ndp, anchored, d, rho_x, rho_y, rho_l, fywd, asw_per_s}, layer_thicknesses [ts, ti] m; WITHOUT bars also thickness, cover_top, cover_bottom (m, to the bar centroid) and steel [tx, ta, bx, ba] kN/m. | |
| thetaDeg | No | Or: the direction as an angle in the plane from slab_survey's suggestedReference (default 0). | |
| averaging | No | Average nodal results over the plates meeting at each node (in the reinforcement frame). Off by default: averaging hides peaks. | |
| reference | No | Reinforcement x direction as a global vector in the plane of the plates. | |
| capacities | No | Moment capacities typed directly, instead of bars. | |
| centreOnly | No | Assess element centres only. | |
| maxElements | No | Accepted (slab_assess arguments can be reused) and ignored. | |
| orientation | No | Orientation group index from slab_survey (default 0, the largest). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and closed-world, but the description adds meaningful process detail: it reads plate forces, selects the governing position and case, re-runs the plugin, and returns every route, face, utilisation and intermediate quantity. The final 'Read-only' line is redundant, but overall it adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and behavior, followed by a compact input note. No filler or repetition beyond the brief read-only tag.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter nested tool with no output schema, the description gives a clear behavioral and return-content summary and defers input details to slab_assess and the schema. It could say more about output structure, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 94% schema description coverage, the schema already carries parameter semantics. The description only adds that inputs match slab_assess plus element and that position/case default to governing, which is helpful but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('explain') and resource ('one element's utilisation'), and clarifies that it re-runs the element through explain_location. It also distinguishes itself from slab_assess by noting it takes the same inputs plus element, making its narrower scope clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies use when you need the working behind a single element's utilisation rather than a full assessment, but it never explicitly states when to choose it over slab_assess or other siblings, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slab_surveySurvey plates and load cases for slab assessmentARead-onlyInspect
Reads the open model's plates (ELEM/NODE), structure groups, static cases and combinations (all LCOM tables) the way the RC Slab & Shell Assessment plugin does: orientation groups by plate normal (with a suggested in-plane reference direction) and every case with the sense it must be requested by. Read-only; use it before slab_assess.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Structure group to assess (default: every plate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that: it mirrors the RC Slab & Shell Assessment plugin's behavior, derives orientation groups from plate normals with a suggested in-plane reference, and reports each case with the sign/sense it must be requested by — non-obvious semantics an agent could not infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then a compact second sentence on sequencing. The parentheticals (ELEM/NODE, all LCOM tables) add precision, though the first sentence is long and dense enough to cost a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a single filter parameter, the description does the heavy lifting by describing what is returned (plates, groups, cases, combinations, orientation groupings, sign senses). An agent has enough to call it correctly and interpret the result; only explicit return structure is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter and schema coverage is 100%, so the schema already documents the group filter and its default ('every plate'). The description adds no further semantics about group naming or scoping beyond 'the open model's plates', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reads) and enumerates the exact resources: plates (ELEM/NODE), structure groups, static cases and combinations (LCOM tables), plus derived orientation groups by plate normal. It also positions itself against the sibling slab_assess, so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read-only; use it before slab_assess" gives an explicit ordering and context for invocation. It stops short of naming when-not to use it or alternatives such as model_bridge_summary for non-slab surveys, so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sls_stress_checkSLS stress limitation check (Stress Profile Generator)ARead-onlyInspect
The Stress Profile Generator's SLS report check (EN 1992-2 §7.2 concrete, EN 1993-2 §7.3 structural steel; normal stress σx at the fibres) over many elements × positions × combinations — or, with source stages, its construction-stage checks (fck(t) from CIVIL NX's concrete age, steel fy/γM0, tendons from CIVIL NX's tendon stresses). Every state is generated and matched with CIVIL NX as in stress_profile; composite parts are checked against their own concrete's fck. LIMITS ARE OPT-IN exactly as in the plugin: with no limit chosen the verdict is NO LIMIT APPLIED; nothing that could not be evaluated passes (INCOMPLETE). Combination categories (characteristic / frequent / quasi-permanent / none) are taken as given, else guessed from the name and reported. Returns the one verdict, the limits used, counts, the governing state, failures, what was not evaluated and why, per combination/stage and per element, and the plugin's SLS CSV as a download link. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | Return the plugin's SLS CSV (every state, one row per part) as a download link. | |
| unit | No | Stress unit of the results (internally kN/m²). | MPa |
| group | No | A structure group; its beam elements are used. | |
| limits | No | Combination checks. Nothing optional is on unless set here. Stresses in MPa. | |
| source | No | combinations | |
| stages | No | source stages: stage names, or "all" (default). | |
| elements | No | Element list as the plugin takes it, e.g. "1-20, 35, 40 to 44". | |
| positions | No | Positions along the element: I-end, ¼, ½, ¾ span, J-end. Default all five. | |
| elementIds | No | Beam element numbers. | |
| stageLimits | No | source stages. The plugin's defaults: compression on (kc 0.6), tension none, steel full, tendons checked. | |
| combinations | No | source combinations: the combinations to check, each a name or {name, category}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint; the description adds substantial behavioral detail beyond them: limits are opt-in, no limit yields NO LIMIT APPLIED, unevaluated states yield INCOMPLETE, combination categories are guessed and reported, and every state is matched to CIVIL NX. It even explains composite-part fck handling and stage-specific behaviour.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and compressed into a few dense sentences; almost every clause earns its place. The single long opening sentence and all-caps emphasis make it slightly harder to scan, but it is not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with nested objects and no output schema, the description explains the return payload in detail: verdict, limits used, counts, governing state, failures, unevaluated items and reasons, per combination/stage and per element, plus the CSV download link. It also covers the key edge-case outcomes, leaving little an agent needs to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 91%, so the baseline is 3, but the description adds useful conceptual meaning: limits are opt-in exactly as in the plugin, stage checks use fck(t) from concrete age and tendon stresses from CIVIL NX, and combination categories are taken as given or guessed. It does not document each parameter individually, but it meaningfully frames the nested limits and stageLimits objects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific check: the Stress Profile Generator's SLS report check, naming EN 1992-2 §7.2 concrete and EN 1993-2 §7.3 steel, normal stress σx at fibres, across elements × positions × combinations. The two modes (combinations vs. stages) and the stress_profile relationship make it distinguishable from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains the two source modes and the opt-in limits model, but it does not explicitly say when to choose this tool over stress_profile or other sibling checks. Usage is implied rather than routed with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage_groupsConstruction Stage Wizard — structure groupsAInspect
Creates structure groups with the Construction Stage Wizard plugin's group builder: pick a scope of elements, split it by rules (slice along X/Y/Z into n segments or at cuts, by section, material, element type, thickness, id ranges, existing groups), name them from a template, and resolve clashes with existing groups by policy. Typical use: segments of a deck for staged construction, e.g. rules [{kind:'slice', axis:'X', mode:'count', count:8, cuts:[]}] with naming {template:'Seg_{SLICE}'}. Previews unless apply: true; the write keeps a snapshot for stages_undo.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Write to CIVIL NX. Only after the user approved the preview. | |
| rules | No | Applied together (every combination becomes a group): {kind:'slice', axis:'X'|'Y'|'Z', mode:'count'|'cuts', count, cuts:[coords]}, {kind:'section'}, {kind:'material'}, {kind:'type'}, {kind:'thickness'}, {kind:'idRange', ranges:[{label, text}]}, {kind:'existingGroup', groups:[names]}. | |
| scope | No | {kind:'all'} | {kind:'groups', groups:[names]} | {kind:'ids', text:'1-80'} | {kind:'selection', elements:[ids]} | |
| naming | No | template with tokens {INDEX}, {SLICE}, {SECTION}, {MATERIAL}, {TYPE}…; prefix, suffix, pad, start. | |
| policy | No | What to do when a group name already exists. | skip |
| typeFilter | No | Element types to keep (BEAM, TRUSS, PLATE, SOLID…); empty = all. | |
| includeNodes | No | ||
| confirmPlanHash | No | planHash from the approved preview; the write is refused if the plan differs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorld=false), and the description adds genuinely non-redundant behavior: dry-run by default, write only with apply:true, a snapshot kept for stages_undo, and a planHash guard that refuses the write if the plan drifted. It also flags that existing group-name clashes are resolved by policy. The one gap is that it doesn't say what 'overwrite'/'merge' actually do to pre-existing groups, which is the riskiest part of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then a usage example, then the preview/apply caveat — a sensible order with no filler. The middle sentence is long and clause-heavy (scope + six rule kinds + naming + policy in one breath), which costs a bit of readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, nested-object, write-capable tool with no output schema, the description covers the critical unknowns: that it is a dry run by default, what unlocks the write, the undo path, and the plan-hash safeguard. It does not describe what the preview returns (group list? counts? the planHash itself?), which is the main remaining hole given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the baseline is 3 and the schema carries most of the load. The description still adds value with a fully worked rules example ({kind:'slice', axis:'X', mode:'count', count:8, cuts:[]}) and the naming template ({template:'Seg_{SLICE}'}), which shows how the nested objects compose in practice rather than just listing them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Creates structure groups with the Construction Stage Wizard plugin's group builder') and then enumerates the actual mechanics: scope selection, splitting rules, templated naming, clash policy. An agent knows exactly what the tool does. It does not, however, distinguish itself from the sibling auto_structure_groups, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('segments of a deck for staged construction') with a literal rules/naming payload, so the agent can pattern-match a request to this tool. The preview/apply gating is stated clearly. What is missing is explicit when-not guidance — nothing says when to reach for auto_structure_groups or construction_stages instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stages_undoUndo a stage_groups or construction_stages runADestructiveInspect
Restores the rows a stage_groups or construction_stages run changed, from the snapshot taken just before it wrote (the plugin's own restore). Default: the latest run not yet undone. Previews unless apply: true.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| runId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as destructive and not read-only. The description adds useful behavior beyond that: restoration comes from a snapshot taken just before the original write, and the tool previews unless apply is true. It does not cover edge cases such as invalid run IDs or repeated undo, but it is informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it defines the operation, the data source, the default target, and the preview/apply switch in two dense sentences with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter undo tool with annotations already flagging destructiveness and no output schema, the description supplies the key call context: what is restored, from which snapshot, which run is default, and that preview is the default. Missing details concern edge cases rather than the core behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains apply semantics (preview unless apply=true) and the runId default (latest run not yet undone). It could say more about the runId format, but both parameters are meaningfully addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it restores rows changed by a stage_groups or construction_stages run. Naming those two source tools clearly distinguishes it from the many other *_undo siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: undo a stage_groups or construction_stages run, defaulting to the latest run not yet undone, with preview unless apply is true. It does not explicitly rule out use for other run types or name alternatives, but the scope is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stress_element_loadsResults available for beam elements (Stress Profile Generator)ARead-onlyInspect
Reads what the Stress Profile Generator can show for chosen beam elements: each element's section (type, outline verified, composite parts, tapered), material, length, the load cases / combinations / envelopes CIVIL NX publishes results for (with kind and whether each is one concurrent state), the construction stages with results for that element (and, with stage, that stage's results such as Summation). Also lists the model's combinations with the SLS category the plugin would guess. Read-only; reads results with a few batched /post/TABLE requests. Use it before stress_profile or sls_stress_check.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | A structure group; its beam elements are used. | |
| stage | No | A construction stage: also list its results for each element. | |
| elements | No | Element list as the plugin takes it, e.g. "1-20, 35, 40 to 44". | |
| elementIds | No | Beam element numbers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint=false annotations, the description discloses that it is read-only, that it reads with a few batched /post/TABLE requests, and that the stage parameter changes what stage-specific results (such as Summation) are included. It also explains what the plugin returns for each element and the model-level combinations, which is useful operational context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core purpose and packs a lot of useful details into a few sentences, ending with a clear usage recommendation. It is dense and slightly long due to parenthetical enumerations, but every sentence contributes directly to understanding what is returned and when to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only discovery tool with no output schema, the description does the necessary work: it describes the shape of the returned data (section, material, length, load cases, stages, combinations) and explains the stage-dependent behavior. Combined with annotations that already declare read-only and closed-world behavior, the definition is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter already has a clear description in the schema. The description adds only light semantic context, such as "chosen beam elements" and noting that the stage parameter makes the tool include that stage's results, but it does not add syntax or format detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: it reads exactly what the Stress Profile Generator can show for chosen beam elements, and it enumerates the returned content (section data, material, length, load cases, stages, combinations). This clearly distinguishes it from siblings like stress_profile or sls_stress_check, which are downstream consumers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use it: "Use it before stress_profile or sls_stress_check." That names the alternatives and the ordering condition, leaving no ambiguity about why an agent would choose this discovery tool over the actual stress-profile or SLS check tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stress_profileStress distribution through a beam section (Stress Profile Generator)ARead-onlyInspect
The Stress Profile Generator's profile for ONE beam element: from CIVIL NX's beam forces and the true section outline it calculates σx (or σx from N / My / Mz, τ from Vz / Vy, von Mises, principal, Tresca) over the section at the chosen positions and loads, and checks every profile against CIVIL NX's own published stresses (effective PSC sections are drawn through CIVIL NX's stress points; composite sections part by part from CIVIL NX's per-part results; envelopes give CIVIL NX's values at the stress points plus the governing member or static part as a profile). Returns per profile: status (ok/unchecked/points/refused) with reasons, forces, extremes and where they occur, CIVIL NX vs calculated at stress points 1–4, per-part σx for composites, and min/max across the section at each depth. With thermal it gives the EN 1991-1-5 temperature stresses instead, split into total, restraint, self-equilibrating, uniform and linear parts (Type 3 heating/cooling with 100 mm surfacing, a user ΔT profile, or CIVIL NX's own section temperature; restraint free, full, axial, rotation, or CIVIL NX's forces of a load). Optional csv gives the plugin's CSV export as a download link. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | Also return the plugin's CSV export of every profile (a download link). | |
| unit | No | Stress unit of the results (internally kN/m²). | MPa |
| loads | No | Load case / combination / envelope names as stress_element_loads lists them; with stage, that stage's results (e.g. Summation, Dead Load). | |
| stage | No | Construction stage: use its results (last step) instead of the final state. | |
| result | No | sx σx combined; sxN/sxMy/sxMz its parts; tVz/tVy shear; vm von Mises; s1/s2 principal; tmax; tresca. | sx |
| thermal | No | Temperature stresses instead of load results (EN 1991-1-5 §6.1.4). | |
| elementId | Yes | The beam element. | |
| positions | No | Positions along the element: I-end, ¼, ½, ¾ span, J-end. Default ["2/4"]. | |
| depthLevels | No | Levels of the through-depth table (vertex levels are added); 0 leaves it out. | |
| sectionProperties | No | effective = CIVIL NX's own stresses (as the plugin's default); gross = the plugin's calculation on the section as modelled, difference stated. | effective |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds substantial behavior: verification against CIVIL NX stresses, per-profile statuses (ok/unchecked/points/refused), composite per-part results, envelope handling, and thermal decomposition. It does not cover error recovery beyond status codes, but transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single massive run-on sentence with nested parentheticals and semicolons. It is front-loaded with purpose, but the structure makes it difficult to parse despite the information being relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 10-parameter nested tool with no output schema, the description explains return values, statuses, composite handling, thermal variants, and CSV export. It provides enough operational context for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 10 parameters and their enums. The description contextualizes the thermal and result options but mostly restates schema content rather than adding new syntax, defaults, or interaction rules beyond what is structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: it calculates stress profiles for ONE beam element from CIVIL NX's beam forces and true section outline, with detailed scope. It lacks explicit sibling differentiation, e.g. from stress_element_loads or sls_stress_check, so it is clear but not fully routing-aware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, when-not-to-use, or alternative routing. The use case is implied by 'profile for ONE beam element' and the thermal branch, but an agent must infer which sibling to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
69 tool updates
- First observed
auto_structure_groups - First observed
auto_structure_groups_undo - First observed
b2p_convert - First observed
b2p_survey - First observed
b2p_undo - First observed
bridge_reshape - First observed
bridge_reshape_read - First observed
bridge_reshape_undo - First observed
civil_read_table - First observed
civil_status - First observed
concurrent_forces - First observed
concurrent_forces_probe - First observed
concurrent_forces_setup - First observed
construction_stages - First observed
create_nodes - First observed
create_nodes_undo - First observed
cs_stage_report - First observed
cs_stage_results - First observed
cs_stage_summary - First observed
cs454_lane_layout - First observed
cs454_moving_loads - First observed
cs454_moving_loads_undo - First observed
cs455_assess - First observed
cs455_describe_section - First observed
cs455_export_calc_sheet - First observed
culvert_analyse_and_check - First observed
culvert_build - First observed
culvert_build_undo - First observed
culvert_preview - First observed
culvert_report - First observed
dxf_import - First observed
dxf_import_undo - First observed
dxf_inspect - First observed
ec_wind_apply - First observed
ec_wind_bridge - First observed
ec_wind_read_deck - First observed
ec_wind_remove - First observed
export_result_tables - First observed
job_status - First observed
model_bridge_summary - First observed
model_qc_check - First observed
model_report_export - First observed
model_report_images - First observed
model_to_dxf - First observed
model_to_ifc - First observed
pd6694_route_a - First observed
pd6694_route_a_remove - First observed
pd6694_route_a_write - First observed
pd6694_ssi_plan - First observed
pd6694_ssi_remove - First observed
pd6694_ssi_run - First observed
preview_result_table - First observed
result_table_catalog - First observed
section_preview - First observed
section_properties - First observed
section_read - First observed
section_write - First observed
section_write_undo - First observed
skew_grillage - First observed
skew_grillage_undo - First observed
slab_assess - First observed
slab_capacities_from_bars - First observed
slab_explain_location - First observed
slab_survey - First observed
sls_stress_check - First observed
stage_groups - First observed
stages_undo - First observed
stress_element_loads - First observed
stress_profile
Related MCP Connectors
- ApricotOAuthtools.apricot
Manage SysML2 projects; check, evaluate, verify, query, document and diagram models.
Parametric estimating engine: CESMM4/NRM2/SMM7/MMHW Bills of Quantities for civils assemblies.
Read and edit the Revit 2024–2027 model on your PC. Needs the free Revit MCP add-in.
AI clash detection in Navisworks Manage 2025–2027 on your PC. Needs the free plug-in.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to interact with bridge structural analysis software for modeling, construction stages, and code checking.1541 PyPIApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables Claude to directly control Midas Civil NX for bridge structural analysis, allowing users to model, apply loads, and perform analysis through natural language descriptions.2MIT
- FlicenseNot gradedqualityDmaintenanceEnables to interact with Abaqus FEA software through an MCP bridge, supporting connection checks, script execution, model queries, job submission, and simulation automation.3-
- AlicenseAqualityAmaintenanceEnables an AI assistant to drive a running CSiBridge session by calling its full COM API — building and editing models, reading signatures and enums, running analyses, and reading or editing database tables of definitions and results. Access is available locally over stdio or remotely over HTTPS with per-person tokens, and a mock backend supports development off Windows.15Functional Source , Version 1.1, MIT Future
Glama MCP Gateway
Add one secure layer between your agents and this server.