Structomat
Server Details
Structural steel engineering: 3D frame analysis, portal frame tonnage, checked steel connections.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes: analysis, tonnage estimation, example search, connection lookup, service listing, and request drafting are separable. The main overlap is between about_structomat and list_services, since both describe what Structomat does and what clients send/receive, which could cause occasional misselection.
The set uses consistent snake_case and mostly follows a verb_noun pattern such as analyze_frame, find_examples, get_connection, list_services, and draft_project_request. The only notable deviation is about_structomat, which is not verb-led, but it is readable and conventional for an informational tool.
Seven tools is well within the appropriate range for this server and each tool appears to earn its place. The set covers information, discovery, preliminary engineering tools, examples, connection details, and project request drafting without feeling bloated.
The surface covers the main front-end workflow: learning about Structomat, listing services, finding examples, looking up connections, running elastic frame analysis, estimating portal-frame tonnage, and drafting a project request. Obvious gaps remain for full engineering lifecycle operations such as code checks, connection design, shop drawing generation, and erectability checks, though these can be routed through the services and request-drafting tools.
Available Tools
7 toolsabout_structomatAbout StructomatARead-onlyIdempotentInspect
Facts about Structomat, an AI engineering agent for structural steel: what it does, design codes, who signs designs for construction, what to send, what comes back, how to start. Use when the user asks about Structomat or how to engage it.
| 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, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds a hint about content shape ('what comes back') but says nothing about whether the response is static documentation, whether it can vary, or how large it is. Adequate but not additive.
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 subject and its domain, then a compressed topic list that doubles as a table of contents. Nothing is repeated from the title and no sentence is 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 zero-parameter, read-only documentation tool with no output schema, the description covers what the agent needs to decide to call it. The one gap is that it does not characterize the returned content's form (prose doc, structured facts), which matters slightly since 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?
The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies no input is required by framing the call as a pure information lookup.
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 the resource precisely ('Facts about Structomat, an AI engineering agent for structural steel') and enumerates the exact topics covered: capabilities, design codes, signing responsibility, inputs, outputs, and getting started. That enumeration makes it obviously distinct from the engineering siblings like analyze_frame and estimate_portal_frame_steel, which compute rather than explain.
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 when the user asks about Structomat or how to engage it' gives a clear trigger condition. It stops short of naming the adjacent alternatives — 'what to send' and 'how to start' overlap with draft_project_request, and the description never says to switch to that tool once the user is ready to actually submit work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_frameAnalyze a 3D steel frame (finite elements, returns the numbers)ARead-onlyIdempotentInspect
Runs a 3D finite-element frame analysis and returns the numbers: equilibrium check, largest deflection along the members, largest joint displacement and sway in X and Y, every support reaction, the axial force, shears and moments of every member (the envelope with the governing combination when there are several), and natural periods with mass participation (modal analysis); linear or second order (P-Delta). The model is either a template (a pitched portal frame building, an open mono-pitch canopy, or a multi-storey frame, from a few dimensions, sections and loads) or a full model in JSON (nodes, members, sections, supports, loads, combinations). It is solved by the code of Structomat's free 3D frame analysis page, so the result also has a link that shows the same model and results in 3D (deflected shape, force diagrams, mode shapes). Use it to check a frame, compare sections or see how loads flow, and run it again with changed sections or loads. Elastic analysis only, not a code check: member buckling, connection design and code load combinations are not covered. Nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| bases | No | Column bases (default fixed). | |
| modal | No | Also run a modal analysis: natural periods, mode shapes and mass participation (default true). | |
| model | No | Instead of a template: a full model, units kN and m, Z vertical. {"up":"Z", "nodes":{"N1":[x,y,z],...}, "members":[{"id":"M1","i":"N1","j":"N2","sec":"S1","rot":0,"pinned":false}], "sections":{"S1":{"A":m2,"Iy":m4 weak,"Iz":m4 strong,"J":m4}}, "supports":{"N1":"fixed"|"pinned"}, "nodeLoads":[{"node":"N2","case":"G"|"Q"|"W","F":[Fx,Fy,Fz]}], "memberLoads":[{"member":"M1","case":"G","dir":"FX"|"FY"|"FZ","w":kN_per_m}], "combos":[{"name":"ULS1","factors":{"G":1.35,"Q":1.5}}], "selfWeight":true, "analysis":"pdelta"|"linear", "modal":{"modes":12,"G":1,"Q":0.3}}. Load cases may have any name; several combinations are solved and shown with their envelope (a single "combo":{...} is still accepted). Gravity loads act in -FZ. A member load may vary from w to w2 between x1 and x2 (m from the i end). "pinned": true releases bending at both ends, "i" or "j" at one end. The modal mass may use any load case, e.g. {"modes":12,"G":1,"S":0.3}. A vertical member has its web (local axis 2) along X; "rot":90 turns it to Y. Without "up":"Z" the older format with Y vertical is read and converted. Steel E = 210 GPa. | |
| bays_x | No | storey: bays in X. | |
| bays_z | No | storey: bays in Y (the second horizontal direction; Z is vertical). | |
| frames | No | portal, mono: number of frames. | |
| span_m | No | portal (4-60) or mono (3-30): frame span, m. | |
| bay_x_m | No | storey: bay width in X, m. | |
| bay_z_m | No | storey: bay width in Y, m. | |
| factors | No | Combination factors {"G":1.0,"Q":1.0,"W":1.0} (default all 1.0). | |
| storeys | No | storey: number of storeys. | |
| analysis | No | Second order (default) or linear. | |
| template | No | portal = pitched portal frame building; mono = open mono-pitch canopy; storey = multi-storey frame. Omit when sending model. | |
| column_web | No | Direction of the column webs: x (default) = strong axis resists sway in X, the frame direction; y = strong axis resists sway in Y. | |
| dead_kN_m2 | No | Dead load on roof/floor, kN/m2 (self-weight of members is added). | |
| live_kN_m2 | No | Live or snow load, kN/m2. | |
| wind_kN_m2 | No | portal, storey: wind pressure on the windward face (see wind_direction); mono: net wind pressure on the roof, positive upward (uplift); kN/m2. | |
| beam_section | No | Hot-rolled I-section for beams / rafters. | |
| low_height_m | No | mono: height of the low side, m. | |
| ridge_rise_m | No | portal: ridge rise above eave, m. | |
| brace_section | No | portal, mono: hollow section for the bracing (default CHS 139.7x5). | |
| eave_height_m | No | portal: eave height, m. | |
| high_height_m | No | mono: height of the high side, m. | |
| leeward_kN_m2 | No | portal, storey: leeward suction, kN/m2 (not used for mono). | |
| column_section | No | Hot-rolled I-section for columns. | |
| wind_direction | No | portal, storey: x (default) = wind on the long wall / the face at X = 0; y = wind on the gable / the face at Y = 0; xy = both together in the same combination (conservative). | |
| combination_set | No | single (default) = one combination with the factors given; en = a typical EN 1990 ultimate set (expression 6.10); asce = ASCE 7 LRFD basic combinations. en and asce are solved as an envelope. | |
| frame_spacing_m | No | portal, mono: frame spacing, m. | |
| storey_height_m | No | storey: storey height, m. | |
| modal_live_share | No | Share of the live or snow load in the modal mass, psi (default 0.3); mass = self-weight + dead + psi x live. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description still adds real context: it is elastic-only, not a code check, solved by an external page whose result includes a 3D link, and 'Nothing is stored.' These are behavioral facts 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?
It is a single dense paragraph, but front-loaded with the payoff (what numbers come back) before the modeling detail and exclusions. Every sentence carries information; it could be broken into bullets for readability but 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 a 30-parameter tool with a nested model object and no output schema, enumerating the return contents (equilibrium check, deflections, reactions, member forces/envelope, modal periods) is exactly what the description must supply, and it does so thoroughly, including limits and model formats.
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 30 parameters at 100% schema description coverage, the schema does the heavy lifting and baseline is 3. The description reinforces the two modeling modes (template vs full JSON) and the envelope/governing-combination behavior, but this largely restates structured information rather than adding new per-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?
The description opens with a specific verb and resource ('Runs a 3D finite-element frame analysis') and then enumerates exactly what comes back, so an agent knows precisely what this tool produces. It is clearly distinct from sibling tools like estimate_portal_frame_steel, since it returns numbers rather than an estimate.
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 explicit positive guidance ('check a frame, compare sections or see how loads flow, and run it again with changed sections or loads') and explicit exclusions ('Elastic analysis only, not a code check: member buckling, connection design and code load combinations are not covered'). The only gap is that it never names a sibling to route to when the agent actually wants a code check or a quick estimate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_project_requestDraft a project request e-mailARead-onlyIdempotentInspect
Prepare an e-mail to Structomat (info@structomat.com) describing a project, ready for the user to review and send. This tool sends nothing and stores nothing; it returns the draft text and a mailto link.
| Name | Required | Description | Default |
|---|---|---|---|
| need | Yes | What the user needs, e.g. "structural analysis and calculation report for a 12 x 6 m steel canopy". | |
| deadline | No | Optional. | |
| design_code | No | Optional: Eurocode, AISC 360 or the code the project requires. | |
| structure_type | No | Optional: canopy, mezzanine, warehouse, stair, connection, ... | |
| available_files | No | Optional: drawings, photos, IFC or analysis model the user can send. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the bar is lower, yet the description still adds the decisive reassurance ('sends nothing and stores nothing') and, critically, discloses the return shape ('draft text and a mailto link') where no output schema exists. It also pins the fixed recipient address, which is behavior an agent could not infer from the 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?
Two sentences, no filler. The core action and audience come first, and the non-mutating guarantee plus return format follow as the one fact that most affects the agent's decision. Every clause 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?
Five parameters with only one required, full schema coverage, and no output schema, so the description's job is to explain what comes back and whether side effects occur — both are covered explicitly. Nothing an agent needs in order to call this 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% and each of the five properties carries its own description with examples, so the schema does the heavy lifting. The description only says the e-mail describes 'a project', adding no format, length or content guidance for `need` or the optional fields. 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 artifact ('prepare an e-mail'), names the recipient (Structomat, info@structomat.com) and the output ('ready for the user to review and send'). This is unmistakably different from the analysis siblings (analyze_frame, estimate_portal_frame_steel, get_connection), which compute rather than compose outreach.
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 intended scenario clear: the user wants to describe a project to Structomat and needs a reviewable draft. It also sets a boundary on behavior ('sends nothing and stores nothing'), which tells the agent this is a safe pre-send step. It does not explicitly say when to prefer this over, say, list_services or about_structomat, so no exclusion guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_portal_frame_steelEstimate the steel of a portal frame buildingARead-onlyIdempotentInspect
Steel tonnage estimate for a single-span pitched portal frame building (span 15-30 m) before any design: total tonnes, kg per m2 of floor, a range, the weight by part (frames, gable posts, bracing, eave struts, purlins, side rails, plates and connections) and typical member sizes. Interpolated between complete finite-element designs and calibrated against published designs. Use for budgets, tenders and feasibility; a real design needs the actual loads and code.
| Name | Required | Description | Default |
|---|---|---|---|
| span_m | Yes | Clear span of the frames, m (15-30). | |
| bracing | No | Optional: tube (default, tension and compression) or tension-only rods. | |
| length_m | Yes | Building length, m. Frames are at 6 m. | |
| eave_height_m | Yes | Eave height, m (5-11). | |
| ground_snow_kN_m2 | Yes | Characteristic ground snow load sk, kN/m2 (0.5-2.0). Roof load = 0.8 sk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add method and limits — and it does: results are interpolated between complete finite-element designs and calibrated against published designs, and it is a pre-design estimate. That is real behavioral context an agent could not infer from the annotations. It stops short of stating accuracy bands or how the range is derived.
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 scope, then outputs, then method, then usage caveat. No filler and nothing buried.
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 return-value burden and does so thoroughly — it lists every component of the result including the per-part breakdown and typical member sizes. Combined with the fully documented input schema and read-only annotations, an agent has everything needed to call and interpret 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 description coverage is 100%, including ranges, units and the roof-load relation (0.8 sk), so the schema already does the parameter work. The description only repeats the span range and adds no syntax or default guidance (e.g. when to choose rod vs tube bracing) beyond what the enum already conveys.
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 — steel tonnage estimate for a single-span pitched portal frame, span 15-30 m — and enumerates exactly what is returned (total tonnes, kg/m2, range, weight by part, member sizes). The only gap is that it does not distinguish itself from the sibling analyze_frame, which an agent might reasonably consider for a frame-related task.
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 to use it for budgets, tenders and feasibility, and explicitly says when not to rely on it: 'a real design needs the actual loads and code.' That is a clear when/when-not framing, though it never names an alternative tool for the design case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_examplesFind examples of past workARead-onlyIdempotentInspect
Search Structomat's published work: steel projects, case studies, example situations, checked steel connections, measured benchmarks (e.g. scan-to-BIM from a point cloud), sample deliverables (e.g. a complete US AISC shop drawing submittal with a clouded revision, or an erectability check that finds the pieces of a clash-free model that cannot get into place during erection) and free tools. Returns titles, links and short summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional filter. | |
| limit | No | Default 8. | |
| query | No | What to look for, e.g. "canopy", "mezzanine", "base plate", "HEB 600", "crane", "point cloud". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile needs no repeating. The description adds genuinely new information beyond them: the return shape ('titles, links and short summaries'), which matters because there is no output 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?
The purpose is front-loaded, but the body is one very long sentence whose enumerated list maps nearly 1:1 to the schema enum (project, case_study, connection, benchmark, sample, tool), so much of it repeats structured data. The parenthetical examples are the only part that earns its length.
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 zero-required-parameter search tool with no output schema, the description supplies the searchable domain, the result format, and sample query targets — enough to invoke correctly. It lacks only routing guidance against sibling tools that touch adjacent content.
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% — all three parameters, including the seven-value enum, are documented in the schema. The description's examples ('point cloud', 'shop drawing submittal') loosely illustrate query phrasing but add no constraint, format, or interaction detail 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?
Specific verb ('Search') plus a well-defined resource ('Structomat's published work') with the content corpus enumerated. An agent can immediately tell this is a discovery/lookup tool and distinguish it from siblings like get_connection or list_services.
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 clear what corpus is searchable and gives concrete example targets ('canopy', 'base plate', point cloud), which implies when to reach for it. It does not, however, name an alternative or state when NOT to use it — relevant since get_connection and list_services could overlap on 'checked steel connections' and 'free tools'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connectionGet a checked steel connectionARead-onlyIdempotentInspect
Details of one connection from the Structomat steel connection library: members, plates, bolts, welds, design code and the utilisation of each component. Use find_examples with type "connection" to get slugs.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Connection slug from find_examples. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world access, so the safety profile is covered. The description adds real value beyond them by describing the payload contents, though it says nothing about failure behavior for an unknown slug or any limits.
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, zero waste: the payload summary is front-loaded and the prerequisite follows. Every clause carries information an agent needs.
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 required parameter, no output schema, and annotations covering safety, the description is nearly complete — it even compensates for the missing output schema by listing returned fields. Only the behavior on a missing/invalid slug is left 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 100% and the single slug parameter is fully documented, so baseline would be 3. The description adds the specific acquisition path (find_examples with type "connection"), which tells the agent where a valid slug comes from without opening the sibling 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?
States a specific resource and scope: 'Details of one connection from the Structomat steel connection library', then enumerates what is returned (members, plates, bolts, welds, design code, utilisation). An agent can immediately distinguish this single-record lookup from the broader sibling tools such as analyze_frame or find_examples.
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 to find_examples with type "connection" as the way to obtain the required slug, which is clear prerequisite guidance. It stops short of stating when-not to use it or naming an alternative for retrieving connection data, so it falls just short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesList servicesBRead-onlyIdempotentInspect
Structomat services (analysis & design, connection design, shop drawings, erectability check of a steel model before erection, automation consulting, custom tools) with what the client sends and what comes back.
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | Optional: one service only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, closed-world lookup, so safety is covered. The description adds that each entry includes both the client-provided inputs and the resulting outputs, which is genuine content beyond the annotations, but says nothing about ordering, count, or whether descriptions are exhaustive.
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 front-loaded sentence with no filler, and the catalog enumeration comes first. The nested parentheticals make it slightly dense to parse 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?
With no output schema, the description carries the burden of explaining returns; 'what the client sends and what comes back' is directionally correct but imprecise about the actual shape of each entry. For a zero-required-parameter catalog tool this is adequate but leaves the agent guessing at the response structure.
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 enum is fully documented, so the schema does the heavy lifting. The description's parenthetical list enumerates the same six service values in prose, giving a human-readable gloss on each enum label (e.g. 'erectability check of a steel model before erection'), which is a modest value-add but not a baseline shift.
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 the exact resource (the six Structomat service lines) and what each record carries (client inputs and returned deliverables), so the agent knows this is a service catalog rather than a computation tool. It lacks an explicit verb ('list') and never contrasts itself with sibling about_structomat, which is also an informational 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?
No statement of when to call this versus about_structomat, draft_project_request, or find_examples, and no guidance on filtering by the optional `service` argument. The agent must infer usage from the tool name alone.
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.
7 tool updates
- First observed
about_structomat - First observed
analyze_frame - First observed
draft_project_request - First observed
estimate_portal_frame_steel - First observed
find_examples - First observed
get_connection - First observed
list_services
Related MCP Connectors
Structural FEM for AI agents: frames, plates, buckling, seismic and Eurocode checks, solved locally.
Real FEA on CAD parts: validated setups, stress, safety factor, natural frequencies
Steel takeoff, weight and gauge calculators plus RFQ, RFI, NCR and Bluebeam markup generators.
Navisworks clash detection, 4D simulation, quantity takeoff.
Related MCP Servers
- AlicenseAqualityFmaintenanceA lightweight MCP server for linear-static structural analysis of bridges and building frames, providing tools to build 3D beam/truss models, analyze with built-in or CalculiX solvers, and export to FreeCAD.174MIT
- AlicenseNot gradedqualityDmaintenanceEnables real finite element analysis from natural language: accepts STEP geometry and plain-English questions, validates setups deterministically, meshes and solves with CalculiX on Modal, and returns engineering verdicts (stress, safety factor, deflection, modal frequencies) with rendered plots and an interactive 3D viewer.1Apache 2.0
- AlicenseAqualityAmaintenanceEnables users to look up Chinese GB standard steel section properties and calculate theoretical weights for hot-rolled H-beams, I-beams, channels, angles, C/Z purlins, hollow sections, welded I/box sections, plates, bars, pipes, and tubes. It also provides category listing, designation search, exact lookup, and material density tools.701MIT
- AlicenseNot gradedqualityBmaintenanceExperimental load-path analysis for 3D-printed STL parts, with stress and movement comparisons across CAD revisions, PNG captures, visual reviews, and persistent human-guided design sessions. Runs locally through a stdio MCP server.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.