MCP server for TSD (Tekla Structural Designer) model analysis and reporting
18 tools with consistent naming (verb_noun pattern) and basic descriptions, but critical gaps in schema completeness and parameter documentation. 12 tools have empty input schemas (no parameters defined), violating the constrained-input pattern. 6 tools with parameters lack descriptions for those parameters. No output schemas documented anywhere. Error handling is minimal, runBridge() returns generic {error: message} without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Descriptions average ~100 chars, acceptable but lack WHEN/WHY context. This is a typical community server with functional tools but incomplete agent-readiness.
Get a summary of design check statuses in the open TSD model
Get total member count grouped by inferred member type
Get all members in the open TSD model with utilization ratio greater than or equal to 1.0
Get the sections contributing the most total steel weight in the open TSD model
Get every available TSD design check for a specific member, including governing check, utilization, status-driven failures, warnings, unknown checks, and checks that are not required
Get section, material, and design check details for a specific TSD member
12 of 18 tools have empty input schemas (type: object, properties: {}). No parameters are defined, violating constrained-input pattern. LLMs cannot infer what these tools accept or require.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Responses are opaque, agents must guess what data is returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Get all members in the open TSD model matching a specific section size
Get all members in the open TSD model matching a specific member type
Get members in the open TSD model with utilization ratio between 0.90 and 1.0
Estimate total steel material cost using calculated model tonnage and a user-provided cost per ton
Get an overview of the open TSD model including total members, member types, sections, and materials
Get steel material takeoff with total length and calculated weight grouped by section and member type
Get steel takeoff summary grouped by member type with total length and weight
Get steel takeoff summary grouped by section type with total length and weight
Get the top utilized members in the open TSD model sorted by utilization ratio descending
Get validation errors and warnings from the open TSD model
List all members in the open TSD model with their names and inferred types
List all members in the open TSD model with names, types, and section sizes
Error handling is minimal. runBridge() returns {error: message} without recovery guidance, categorization (retryable vs fatal), or actionable next steps. LLMs cannot self-correct.
No tool annotations present. Tools lack readOnlyHint, destructiveHint, or idempotentHint. Agents cannot determine safety/retry semantics. All tools are read-only but this is not declared.
Descriptions lack WHEN/WHY context. E.g. 'Get steel takeoff summary grouped by member type' does not explain when to call this vs get_tsd_steel_takeoff or get_tsd_takeoff_by_section_type. LLMs conflate similar tools.