# ai.structupath/steel-tools (remote · www.structupath.ai)

Steel takeoff, weight and gauge calculators plus RFQ, RFI, NCR and Bluebeam markup generators.

- Trust score: 66/100 (medium)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-20

## Components

- remote · `www.structupath.ai`: 66/100 (this document), [markdown](https://verifymcp.io/servers/ai-structupath-steel-tools/api-mcp.md), [page](https://verifymcp.io/servers/ai-structupath-steel-tools/api-mcp)

## Channel facts

- Endpoint: `https://www.structupath.ai/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.7.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-20.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 14 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2470 tokens (~176/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 83% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### Claude

```bash
claude mcp add --transport http ai-structupath-steel-tools https://www.structupath.ai/api/mcp
```

### Codex

```toml
[mcp_servers.ai-structupath-steel-tools]
url = "https://www.structupath.ai/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-structupath-steel-tools": {
      "type": "remote",
      "url": "https://www.structupath.ai/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-structupath-steel-tools --url https://www.structupath.ai/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-structupath-steel-tools:
    url: "https://www.structupath.ai/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-structupath-steel-tools": {
      "type": "http",
      "url": "https://www.structupath.ai/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-19 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-17 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-15 (score 64, −1)

- [functional regression] Tool coverage: 95% → 83%
- [functional regression] Schema quality: 145 → 176
- [functional] Server version: 1.5.0 → 1.7.0
- [functional] New tool “steel_coating_area”
- [functional] New tool “steel_ncr_generate”
- [functional] New tool “steel_rfi_generate”
- [functional] New tool “steel_takeoff_weight”

### 2026-08-13 (score 65, −1)

- [functional regression] Tool coverage: 100% → 95%
- [functional regression] Schema quality: 123 → 145
- [functional] Schema quality: excellent → good
- [functional] Server version: 1.3.0 → 1.5.0
- [functional] New tool “steel_pdf_markup”
- [functional] New tool “steel_rfq_generate”

### 2026-08-12 (score 66, 0)

- [functional regression] Schema quality: 807 → 990
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.2.0 → 1.3.0
- [functional] New tool “steel_section_weight”

### 2026-08-11 (score 66)

First indexed and scored.

## MCP tools (14)

### `steel_gauge_thickness` (~90 tokens)

Steel Gauge Thickness

Look up sheet steel gauge thickness (gauges 3-28) in inches and mm with lb/ft², for plain, galvanized or stainless series. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `gauge` (integer, required): Sheet steel gauge number, 3 through 28
- `material` (string): Gauge series — the same number is a different thickness each

### `steel_plate_weight` (~139 tokens)

Steel Plate Weight

Compute carbon steel plate weight from thickness (decimal or fraction) and width/length in inches, with optional material cost via price_per_lb. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `length_in` (number, required): Plate length in INCHES
- `price_per_lb` (number): Optional material price in $/lb, to include a cost estimate
- `thickness_in` (required): Plate thickness in inches — decimal or fraction ("3/4", "1-1/8")
- `width_in` (number, required): Plate width in INCHES (a 4x8 ft plate is 48 x 96 in)

### `steel_shape_weight` (~132 tokens)

Structural Shape Weight

Look up an AISC shape designation (W, C, MC, L, HSS, PIPE) for lb/ft, depth and area, with optional piece weight. 14th-Edition-era data. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `designation` (string, required): AISC designation, e.g. "W21X50", "HSS6X6X3/8", "L4X4X3/8"
- `length_ft` (number): Optional piece length in feet, for a piece weight
- `qty` (integer): Optional piece count

### `steel_connection_reference` (~100 tokens)

Steel Connection Reference

Describe a structural steel connection type (behaviour, use, what goes wrong) by name, alias or slug — or look up a structural bolt grade (A325, A490, A307). Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `name_or_slug` (string, required): Connection name, alias or slug (e.g. "clip angle", "base-plate") or a bolt grade (e.g. "A490")

### `steel_bolt_pretension` (~100 tokens)

Bolt Pretension & Turn-of-the-Nut

RCSC minimum pretension for A325/A490 structural bolts by diameter, with the turn-of-the-nut rotation when a bolt length is given. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `dia` (string, required): Bolt diameter in inches — fraction ("3/4") or decimal (0.75)
- `length_in` (number): Optional bolt length in inches, for the turn-of-the-nut rotation

### `steel_pipe_schedule` (~137 tokens)

Pipe Schedule Lookup

Steel pipe dimensions by NPS and schedule: OD, wall, inside diameter and lb/ft for schedules 5, 10, 40/STD, 80/XS, 160 and XXS. Omit the schedule to list them all. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `nps` (string, required): Nominal pipe size, e.g. "2", "1/2", "1-1/4"
- `schedule` (string): Optional schedule: "40", "80", "160", "STD", "XS", "XXS", "5", "10"

### `steel_section_weight` (~183 tokens)

Bar & Tube Section Weight

Weight of round bar, square bar, flat bar or round tube from dimensions in inches — lb/ft and optional piece weight, in carbon, stainless or aluminum. For AISC designations use steel_shape_weight; for plate use steel_plate_weight. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `dim1_in` (number, required): First dimension in inches: diameter (round bar), side (square bar), width (flat bar) or OD (round tube)
- `dim2_in` (number): Second dimension in inches: thickness (flat bar) or wall (round tube); unused for round and square bar
- `length_ft` (number): Optional length in feet for a piece weight
- `material` (string): Default carbon steel; stainless is +2%, aluminum ×0.35
- `section` (string, required): Cross-section type

### `steel_mtr_check` (~109 tokens)

Mill Test Report Mechanicals Screen

Screen a mill cert's yield and tensile against the specified limits for A992, A572 Gr. 50 or A36 — a screening aid, not acceptance. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `grade` (string, required): Steel grade: "A992", "A572 Gr. 50" or "A36"
- `tensile_ksi` (number, required): Reported tensile, ksi
- `yield_ksi` (number, required): Reported yield, ksi

### `steel_takeoff_weight` (~101 tokens)

Takeoff Weight Roll-Up

Roll a member list (AISC designation, length in feet, piece count — up to 500 lines) into a bill-of-steel ledger: weight per line, total pounds and tons, piece and lineal-foot counts. Net weight only; unmatched designations are listed, not guessed. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `members` (array, required): The member list to roll up, one line per mark/size

### `steel_coating_area` (~197 tokens)

Coating / Surface Area

Surface area to coat for an AISC shape: ft² per foot from the cross-section perimeter, piece/lot area with length and qty, optional interior faces for galvanized tubes and gallons at a supplied coverage rate. Published nominal values for estimating and orientation, not design guidance.

Input parameters:

- `coverage_sqft_per_gal` (number): Optional practical coverage rate from the coating datasheet, to estimate gallons
- `designation` (string, required): AISC designation, e.g. W21X50, HSS6X6X3/8, Pipe4STD
- `include_inside_faces` (boolean): Tubes only: add interior surface, as hot-dip galvanizing coats vented HSS/pipe interiors. Default false (outside only).
- `length_ft` (number): Optional length in feet for a piece/lot area
- `qty` (integer): Optional piece count (default 1) when a length is given

### `steel_rfq_generate` (~209 tokens)

RFQ Workbook Generator

Generate a vendor-ready Request for Quotation (.xlsx) from structured takeoff line items — grouped by material, with vendor pricing columns, totals and standard terms. You pass parsed line items and a company name; returns a download link that expires within ~48 hours. Nothing you submit is stored.

Input parameters:

- `company_location` (string): City, state under the company name, e.g. "Denver, CO"
- `company_name` (string, required): Buyer company on the RFQ header and terms — required
- `date_issued` (string): Free-form issue date; a blank line is used if omitted
- `line_items` (array, required): Parsed takeoff line items — the calling agent reads the estimate
- `nesting_rows` (array): Optional fabricator-facing nesting/drop reference rows
- `project_location` (string)
- `project_name` (string, required): Project name for the header and filename
- `terms` (array): Override the eight default terms; omit for the standard set

### `steel_pdf_markup` (~252 tokens)

Bluebeam PDF Markup Writer

Add real Bluebeam-compatible annotation objects to a drawing PDF — counts, length/area measurements with live scales, RFI clouds, callouts — from a markups JSON you supply plus placement coordinates. Pass the PDF as an https URL or small base64; returns a marked PDF download link that expires within ~48 hours. Markups appear in Bluebeam Revu's Markups List. You decide placement; the tool guarantees the format. Nothing you submit is stored.

Input parameters:

- `author` (string): Markups List author column
- `coordinate_space` (string)
- `markups` (array, required): Markups to place — geometry in ratio (0–1 from top-left) or pdf coordinates
- `page_scales` (object): Per-page scale overrides, keyed by page number string
- `pdf_base64` (string): Base64 PDF for small files (~3 MB max decoded); prefer pdf_url for drawing sets
- `pdf_url` (string): HTTPS URL of the source drawing PDF (fetched server-side, SSRF-guarded)
- `scale` (string): Document scale for measurements, e.g. "1/4 in = 1 ft" or "1:100"

### `steel_rfi_generate` (~325 tokens)

RFI Document Generator

Generate a formal Request for Information PDF from structured fields — header, meta grid, subject, description, proposed solution, attachments, and a blank response block for the design team. You do the judgement (one issue per RFI, exact drawing references, a proposed path forward); the tool guarantees the format. Returns a download link that expires within ~48 hours. Nothing you submit is stored.

Input parameters:

- `attachments` (array)
- `company_location` (string)
- `company_name` (string, required): Contractor issuing the RFI — appears in the header
- `date` (string, required): Submission date
- `description` (string, required): The issue: specific references, what is missing or conflicting, why it matters. Newlines respected.
- `drawing_refs` (array): Exact drawing numbers with revisions
- `project_name` (string, required)
- `project_number` (string)
- `proposed_solution` (string): Suggested path forward, framed as a proposal
- `reason` (string): Category: Design Omission, Design Error, Constructability Issue, Scope Clarification, Site Condition, Missing Information, Coordination Conflict — or free text
- `response_needed_by` (string)
- `rfi_number` (string, required): RFI number from the project register, e.g. "RFI-017"
- `spec_refs` (array)
- `subject` (string, required): One-line subject — one issue per RFI
- `submitted_by` (string, required): Name — company
- `submitted_to` (string, required): The party who must respond — engineer, architect, GC

### `steel_ncr_generate` (~396 tokens)

NCR Document Generator

Generate a formal Nonconformance Report PDF: identification, description, the violated requirement, containment, root cause (prose or 5-Whys chain), disposition (accept-as-is/repair/rework/reject) with actions, and blank quality-review and sign-off blocks. Flags accept-as-is dispositions whose corrective action describes physical work. The disposition decision belongs to the responsible quality authority. Returns a download link that expires within ~48 hours. Nothing you submit is stored.

Input parameters:

- `company_location` (string)
- `company_name` (string, required): Contractor raising the NCR — appears in the header
- `containment` (string): What was done on the spot — quarantine, stop work, tag
- `corrective_action` (string): Bringing this instance into compliance
- `date` (string, required): Date raised
- `description` (string, required): What was found, measured against what was required
- `location` (string): Area, level, grid, or piece mark
- `ncr_number` (string, required): NCR number from the project register, e.g. "NCR-008"
- `preventive_action` (string): Stopping recurrence — procedure, inspection, supplier
- `project_name` (string, required)
- `project_number` (string)
- `raised_by` (string, required): Name — role
- `requirement_violated` (string, required): The cited requirement — spec section, drawing/detail, or code clause. An NCR without a cited requirement is dispute fuel.
- `resolution` (string, required): Disposition: accept-as-is (no physical work), repair, rework, or reject
- `resolution_justification` (string): Required in practice for accept-as-is — the concession basis
- `root_cause` (string)
- `root_cause_whys` (array): 5-Whys chain, first why to root; overrides root_cause
- `trade_or_supplier` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-structupath-steel-tools/api-mcp#diagnostics

## Score history

- 2026-08-20: 66
- 2026-08-19: 66
- 2026-08-18: 65
- 2026-08-17: 65
- 2026-08-16: 64
- 2026-08-15: 64
- 2026-08-14: 65
- 2026-08-13: 65
- 2026-08-12: 66
- 2026-08-11: 66

## Links

- Remote endpoint: https://www.structupath.ai/api/mcp
- Website: https://www.structupath.ai/tools
- Changelog RSS feed: https://verifymcp.io/servers/ai-structupath-steel-tools/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-structupath-steel-tools/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-structupath-steel-tools/api-mcp
