MCP tool reference
Field-by-field reference for the Integraph MCP tools — LGS, concrete, and materials — including JSON field names, required parameters, and error codes.
Overview
This page is a field-level reference for the Integraph MCP tool suite. For connection setup, the hierarchy model, and the complete concrete and fire tool documentation, see MCP server.
:::note[JSON casing alignment — August 2026 (#4906, completed by #4912)]
Before August 2026, many MCP tool responses used JSON field casing that did not match the REST API contract: PascalCase field names where the equivalent REST endpoint returns camelCase. MCP tool response fields now use camelCase, matching the REST endpoints. Agents or scripts that parsed MCP response fields using PascalCase names (for example, DesignCode rather than designCode, or StressModel rather than stressModel) need to update their field references.
The alignment landed in two stages. The first covered the LGS analysis, concrete designer, and materials tools. The second covered the remaining tool groups — projects, tool instances, design options and elements, EPD records, billing, organizations, fire, and observability. The change is to field names only; field values are unchanged.
One deliberate exception. CalculateSectionProperties keeps standard engineering notation in its field names — Ix_mm4, Iy_mm4, Sx_top_mm3, Zx_mm3, I1_mm4 — rather than camelCasing them to ix_mm4 and so on. Its REST equivalent (GET /api/v1/gcs/design-options/{designOptionId}/properties) does the same, so this is what keeps the two surfaces aligned, not a group the alignment missed. The former stateless CalculateFromGeometry tool was retired with the payload REST route it wrapped: save the geometry as a design option first, then read its properties by id.
:::
LGS by-id tools
Error codes (ProblemDetails forwarding)
:::note[LGS by-id tools now forward ProblemDetails codes — August 2026 (#4885)]
Before this release, typed error codes from LGS by-id tool refusals were stripped at the MCP boundary: the agent received only the human-readable detail text, with no machine-readable code field. The 7 LGS by-id tools now forward the same code that the corresponding REST derived read returns, making programmatic error handling possible:
{ "error": "mode_count_required", "detail": "?modeCount={1-20} is required. It selects how many eigenvalues the finite-strip solver tracks, which sets the mode classification — a method parameter, never defaulted (C-7)." }
Agents that previously parsed the detail string to detect error conditions should switch to the code field, which is stable across locales and phrasing changes.
:::
The 7 LGS by-id tools and their REST equivalents:
| Tool | REST equivalent | Notes |
|---|---|---|
GetLgsSectionPropertiesByDesignOption | GET /api/v1/lgs/design-options/{id}/analyze | Geometry only — no material, no loads |
GetLgsStressByDesignOption | GET /api/v1/lgs/design-options/{id}/stress | combinationId required |
GetLgsBucklingByDesignOption | GET /api/v1/lgs/design-options/{id}/buckling | modeCount required; combinationId optional on the fy stress basis, required on loadCase |
GetLgsDsmCheckByDesignOption | GET /api/v1/lgs/design-options/{id}/dsm-check | modeCount required; combinationId as above; compressionFibre fans out — omit it for both fibres, labelled |
GetLgsShearCheckByDesignOption | GET /api/v1/lgs/design-options/{id}/shear-check | Every input read from the persisted rows |
GetLgsWebCripplingCheckByDesignOption | GET /api/v1/lgs/design-options/{id}/web-crippling-check | Every input read from the persisted rows |
GetLgsDesignCheckByDesignOption | GET /api/v1/lgs/design-options/{id}/design-check | The all-combinations answer — takes no combinationId |
All 7 tools forward the same code their REST peer returns. The LGS by-id set is combination_required, combination_required_for_load_case_basis, combination_id_missing, combination_not_found, mode_count_required, fan_out_cap_exceeded, shear_actions_missing, web_crippling_actions_missing and missing_buckling_minimum.
:::note[invalid_arc_geometry — August 2026 (#5234)]
The LGS by-id tools now return invalid_arc_geometry when a design option’s section geometry contains an arc edge that fails the platform’s arc validity constraints (bulge magnitude out of range, or arc producing a degenerate chord). Previously the tools propagated the raw solver exception as an unstructured 500, with no machine-readable code. The fix aligns with the typed arc-validation refusals on the GCS and ACS geometry save paths and is consistent with the ProblemDetails forwarding change above.
{ "error": "invalid_arc_geometry", "detail": "Section geometry contains an arc edge with an invalid bulge value. Correct the geometry in the section editor before retrying." }
:::
Response field names (camelCase)
LGS by-id tool responses use camelCase field names matching the REST API. Common fields:
| Correct (camelCase) | Previous (incorrect PascalCase) |
|---|---|
designCode | DesignCode |
memberLength | MemberLength |
sectionProperties | SectionProperties |
bucklingLoad | BucklingLoad |
signatureCurve | SignatureCurve |
Concrete payload tools
:::caution[Concrete section-analysis payload tools were removed — September 2026] The concrete blob tools that duplicated an id-addressed section analysis have been deleted with the REST routes they wrapped. This includes the ULS tools, the SLS stress/crack/deflection tools, the two fibre stress-field tools, moment-curvature and time-dependent effects. Use the id-addressed peers below.
They accepted resolved bar coordinates inline. Producing those correctly means reproducing the
platform’s BarResolver outside the platform, and a caller that gets it wrong receives a
plausible, internally consistent, wrong capacity with nothing in the response revealing it. The
id-addressed tools take a designOptionId and resolve every physics input on the saved section.
:::
Only two concrete payload tools remain: CalculateTendonMaterial and
CalculateStressStrainCurve. They compute reference material data rather than analysing a saved
section.
:::note[SLS stress-model keys refused as ULS stressModel on payload tools — September 2026 (#5387, #5396)]
Supplying an SLS constitutive-law identifier — "linear_elastic_cracked_transformed" or "linear_elastic_cracked_transformed_bischoff" — as the stressModel parameter on any ULS payload calculation is now refused with { "error": "stress_model_not_set", ... }. This is consistent with the REST endpoint behaviour fixed in #5319 and extended to all ULS handlers in #5396. The SLS constitutive law is always resolved from the section’s slsTensionStiffening setting; supplying an SLS key as stressModel on a ULS call is always a caller error. The detail field names the key and lists the admissible ULS model values.
:::
:::note[M-κ analysis dispatched through the central analysis runner — September 2026 (#5396)]
GetConcreteMomentCurvatureByDesignOption and GetConcreteMkInteractionByDesignOption dispatch
through the same central analysis runner as their REST derived reads, so validation and persisted
selectors cannot diverge between the two surfaces.
:::
Concrete by-id tools
The 18 concrete by-id tools are documented at MCP server — Concrete id-addressed tools (18). Key field names after casing alignment:
| Correct (camelCase) | Previous (incorrect PascalCase) |
|---|---|
designCode | DesignCode |
stressModel | StressModel |
memberType | MemberType |
exposureClass | ExposureClass |
combination | Combination |
rowVersion | RowVersion |
:::note[memberType must be an exact match — August 2026 (#4969)]
The ConcreteDesigner MCP tools now enforce an exact, case-sensitive match on memberType. Admissible values are beam, column, slab, and wall — lower-case, no surrounding whitespace.
Previously the validation normalised the supplied string (trim + lowercase) before checking it, which accepted values like "Column" or "Beam" and then passed the original, unmodified string to the engine. The engine’s own match is ordinal — it does not normalise — so "Column" fell through to the beam family, silently selecting beam ductility checks and dropping the AS 3600 Cl. 10.1.2 minimum design moment that applies to a column (§874, mcp.md). The tool now delegates to the same predicate the engine uses, so the two cannot drift.
Agents passing PascalCase or mixed-case member types must update those values to exact lowercase before calling any ConcreteDesigner MCP tool. :::
Design element tools
:::note[ElementRole serialised as name string — August 2026 (#5026)]
MCP tool responses that include an ElementRole field (on design element and tool-instance records) now emit it as a human-readable name string — for example "shell", "bar" — matching the serialisation of the equivalent REST endpoint. Previously the field was emitted as an integer ordinal.
MCP callers who pattern-match or switch on ElementRole values need to update those comparisons from integer literals to the name strings.
:::
Fire tools
:::note[Fire blob tools removed — August 2026 (#5040)]
CalculateHeatTransfer and CalculateFireCapacity were removed in August 2026. Both accepted section geometry as a request payload, creating a second analysis path that could drift from the persisted-design-option path that the editor and all other fire surfaces use. Their REST equivalents (POST /api/v1/fire/heat-transfer and POST /api/v1/fire/capacity) were retired in the same release.
The replacement tools are the by-id fire derived reads documented in full at MCP server — Fire tools: GetFireHeatTransferByDesignOption and GetFireCapacityByDesignOption. These read the section from the persisted design option, eliminating the geometry-resubmission pattern. Agents that previously passed geometry inline must migrate to the by-id tools — save the section via the ConcreteDesigner write tools first, then call the derived read by design-option ID.
:::
Materials tools
The materials MCP tools (ListMaterials, GetMaterial, CreateCustomMaterial) also use camelCase field names after the August 2026 alignment. The elasticModulus, poissonRatio, and density fields are now consistently camelCase in both request and response bodies.
Related pages
- MCP server — connection setup, hierarchy, full concrete and fire tool documentation
- LGS buckling — the signature curve and buckling modes the LGS by-id tools consume
- LGS DSM — Direct Strength Method check available via
GetLgsDsmCheckByDesignOption - API error codes — refusal codes forwarded by the MCP by-id tools