Serveur MCP

steel-tools

ai.structupath/steel-tools
Entreprise et opérations Science et ingénierie Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Provides steel takeoff, weight, and gauge calculations along with RFQ, RFI, NCR, and Bluebeam markup document generation.

steel_bolt_pretension
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dia'], 'properties': {'dia': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Bolt diameter in inches â\x80\x94 fraction ("3/4") or decimal (0.75)'}, 'length_in': {'type': 'number', 'maximum': 60, 'description': 'Optional bolt length in inches, for the turn-of-the-nut rotation', 'exclusiveMinimum': 0}}}
steel_coating_area
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['designation'], 'properties': {'qty': {'type': 'integer', 'maximum': 100000, 'description': 'Optional piece count (default 1) when a length is given', 'exclusiveMinimum': 0}, 'length_ft': {'type': 'number', 'maximum': 10000, 'description': 'Optional length in feet for a piece/lot area', 'exclusiveMinimum': 0}, 'designation': {'type': 'string', 'maxLength': 32, 'description': 'AISC designation, e.g. W21X50, HSS6X6X3/8, Pipe4STD'}, 'include_inside_faces': {'type': 'boolean', 'description': 'Tubes only: add interior surface, as hot-dip galvanizing coats vented HSS/pipe interiors. Default false (outside only).'}, 'coverage_sqft_per_gal': {'type': 'number', 'maximum': 2000, 'description': 'Optional practical coverage rate from the coating datasheet, to estimate gallons', 'exclusiveMinimum': 0}}}
steel_connection_reference
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name_or_slug'], 'properties': {'name_or_slug': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Connection name, alias or slug (e.g. "clip angle", "base-plate") or a bolt grade (e.g. "A490")'}}}
steel_gauge_thickness
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['gauge'], 'properties': {'gauge': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Sheet steel gauge number, 3 through 28'}, 'material': {'enum': ['steel', 'galvanized', 'stainless'], 'type': 'string', 'default': 'steel', 'description': 'Gauge series â\x80\x94 the same number is a different thickness each'}}}
steel_mtr_check
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['grade', 'yield_ksi', 'tensile_ksi'], 'properties': {'grade': {'type': 'string', 'maxLength': 24, 'minLength': 2, 'description': 'Steel grade: "A992", "A572 Gr. 50" or "A36"'}, 'yield_ksi': {'type': 'number', 'maximum': 200, 'description': 'Reported yield, ksi', 'exclusiveMinimum': 0}, 'tensile_ksi': {'type': 'number', 'maximum': 200, 'description': 'Reported tensile, ksi', 'exclusiveMinimum': 0}}}
steel_ncr_generate
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['company_name', 'ncr_number', 'date', 'project_name', 'raised_by', 'description', 'requirement_violated', 'resolution'], 'properties': {'date': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Date raised'}, 'location': {'type': 'string', 'maxLength': 200, 'description': 'Area, level, grid, or piece mark'}, 'raised_by': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Name â\x80\x94 role'}, 'ncr_number': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'NCR number from the project register, e.g. "NCR-008"'}, 'resolution': {'enum': ['accept-as-is', 'repair', 'rework', 'reject'], 'type': 'string', 'description': 'Disposition: accept-as-is (no physical work), repair, rework, or reject'}, 'root_cause': {'type': 'string', 'maxLength': 2000}, 'containment': {'type': 'string', 'maxLength': 1000, 'description': 'What was done on the spot â\x80\x94 quarantine, stop work, tag'}, 'description': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'What was found, measured against what was required'}, 'company_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Contractor raising the NCR â\x80\x94 appears in the header'}, 'project_name': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'project_number': {'type': 'string', 'maxLength': 60}, 'root_cause_whys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 300}, 'maxItems': 5, 'description': '5-Whys chain, first why to root; overrides root_cause'}, 'company_location': {'type': 'string', 'maxLength': 120}, 'corrective_action': {'type': 'string', 'maxLength': 2000, 'description': 'Bringing this instance into compliance'}, 'preventive_action': {'type': 'string', 'maxLength': 2000, 'description': 'Stopping recurrence â\x80\x94 procedure, inspection, supplier'}, 'trade_or_supplier': {'type': 'string', 'maxLength': 160}, 'requirement_violated': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'The cited requirement â\x80\x94 spec section, drawing/detail, or code clause. An NCR without a cited requirement is dispute fuel.'}, 'resolution_justification': {'type': 'string', 'maxLength': 1000, 'description': 'Required in practice for accept-as-is â\x80\x94 the concession basis'}}}
steel_pdf_markup
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['markups'], 'properties': {'scale': {'type': 'string', 'maxLength': 40, 'description': 'Document scale for measurements, e.g. "1/4 in = 1 ft" or "1:100"'}, 'author': {'type': 'string', 'maxLength': 120, 'description': 'Markups List author column'}, 'markups': {'type': 'array', 'items': {'type': 'object', 'required': ['page'], 'properties': {'at': {'anyOf': [{'type': 'array', 'prefixItems': [{'type': 'number'}, {'type': 'number'}]}, {'type': 'array', 'items': {'type': 'array', 'prefixItems': [{'type': 'number'}, {'type': 'number'}]}, 'maxItems': 2000}]}, 'bump': {'type': 'number', 'maximum': 200}, 'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'fill': {'type': 'string', 'maxLength': 9}, 'page': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'description': '1-based page number'}, 'rect': {'type': 'array', 'description': "[x, y, w, h] in the markup's coordinate space", 'prefixItems': [{'type': 'number'}, {'type': 'number'}, {'type': 'number'}, {'type': 'number'}]}, 'size': {'type': 'number', 'maximum': 1000}, 'tool': {'type': 'string', 'maxLength': 60, 'description': 'A steel takeoff preset key, e.g. hss-ea, w-beam-lf, rfi-cloud'}, 'type': {'type': 'string', 'maxLength': 40, 'description': 'Annotation type when not using a preset tool'}, 'arrow': {'type': 'boolean'}, 'box_h': {'type': 'number', 'maximum': 10000}, 'box_w': {'type': 'number', 'maximum': 10000}, 'color': {'type': 'string', 'maxLength': 9, 'description': 'Hex color, e.g. #FF0000'}, 'label': {'type': 'string', 'maxLength': 200}, 'scale': {'type': 'string', 'maxLength': 40, 'description': 'Per-markup scale, e.g. "1/4 in = 1 ft"'}, 'width': {'type': 'number', 'maximum': 100}, 'author': {'type': 'string', 'maxLength': 120}, 'points': {'type': 'array', 'items': {'type': 'array', 'prefixItems': [{'type': 'number'}, {'type': 'number'}]}, 'maxItems': 2000}, 'opacity': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'subject': {'type': 'string', 'maxLength': 120}, 'arrow_at': {'type': 'array', 'prefixItems': [{'type': 'number'}, {'type': 'number'}]}, 'contents': {'type': 'string', 'maxLength': 2000}, 'font_size': {'type': 'number', 'maximum': 200}, 'column_data': {'type': 'array', 'items': {}, 'maxItems': 50}, 'fill_opacity': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'coordinate_space': {'enum': ['ratio', 'pdf'], 'type': 'string'}}}, 'maxItems': 500, 'minItems': 1, 'description': 'Markups to place â\x80\x94 geometry in ratio (0â\x80\x931 from top-left) or pdf coordinates'}, 'pdf_url': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'HTTPS URL of the source drawing PDF (fetched server-side, SSRF-guarded)'}, 'pdf_base64': {'type': 'string', 'maxLength': 4800000, 'description': 'Base64 PDF for small files (~3 MB max decoded); prefer pdf_url for drawing sets'}, 'page_scales': {'type': 'object', 'description': 'Per-page scale overrides, keyed by page number string', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'coordinate_space': {'enum': ['ratio', 'pdf'], 'type': 'string'}}}
steel_pipe_schedule
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['nps'], 'properties': {'nps': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Nominal pipe size, e.g. "2", "1/2", "1-1/4"'}, 'schedule': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Optional schedule: "40", "80", "160", "STD", "XS", "XXS", "5", "10"'}}}
steel_plate_weight
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['thickness_in', 'width_in', 'length_in'], 'properties': {'width_in': {'type': 'number', 'maximum': 2000, 'description': 'Plate width in INCHES (a 4x8 ft plate is 48 x 96 in)', 'exclusiveMinimum': 0}, 'length_in': {'type': 'number', 'maximum': 2000, 'description': 'Plate length in INCHES', 'exclusiveMinimum': 0}, 'price_per_lb': {'type': 'number', 'maximum': 1000, 'description': 'Optional material price in $/lb, to include a cost estimate', 'exclusiveMinimum': 0}, 'thickness_in': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'number'}], 'description': 'Plate thickness in inches â\x80\x94 decimal or fraction ("3/4", "1-1/8")'}}}
steel_rfi_generate
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['company_name', 'rfi_number', 'date', 'project_name', 'submitted_to', 'submitted_by', 'subject', 'description'], 'properties': {'date': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Submission date'}, 'reason': {'type': 'string', 'maxLength': 60, 'description': 'Category: Design Omission, Design Error, Constructability Issue, Scope Clarification, Site Condition, Missing Information, Coordination Conflict â\x80\x94 or free text'}, 'subject': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'One-line subject â\x80\x94 one issue per RFI'}, 'spec_refs': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80}, 'maxItems': 20}, 'rfi_number': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'RFI number from the project register, e.g. "RFI-017"'}, 'attachments': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160}, 'maxItems': 20}, 'description': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'The issue: specific references, what is missing or conflicting, why it matters. Newlines respected.'}, 'company_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Contractor issuing the RFI â\x80\x94 appears in the header'}, 'drawing_refs': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80}, 'maxItems': 20, 'description': 'Exact drawing numbers with revisions'}, 'project_name': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'submitted_by': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Name â\x80\x94 company'}, 'submitted_to': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'The party who must respond â\x80\x94 engineer, architect, GC'}, 'project_number': {'type': 'string', 'maxLength': 60}, 'company_location': {'type': 'string', 'maxLength': 120}, 'proposed_solution': {'type': 'string', 'maxLength': 2000, 'description': 'Suggested path forward, framed as a proposal'}, 'response_needed_by': {'type': 'string', 'maxLength': 60}}}
steel_rfq_generate
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['company_name', 'project_name', 'line_items'], 'properties': {'terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500}, 'maxItems': 30, 'description': 'Override the eight default terms; omit for the standard set'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['item', 'category', 'description', 'size', 'grade', 'qty', 'stock_length', 'purchase_wt_lbs', 'material_type'], 'properties': {'qty': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Piece or stick count; a zero-qty row is excluded'}, 'item': {'type': 'string', 'maxLength': 40, 'description': 'Estimate item number, e.g. "A-01"'}, 'size': {'type': 'string', 'maxLength': 80, 'description': 'AISC designation or plate/bar dimensions'}, 'grade': {'type': 'string', 'maxLength': 40, 'description': 'Material grade, e.g. "A992 Gr.50", "A36"'}, 'notes': {'type': 'string', 'maxLength': 300}, 'category': {'type': 'string', 'maxLength': 60, 'description': 'Shop category, e.g. "Columns", "Plate", "Flat Bar"'}, 'description': {'type': 'string', 'maxLength': 300, 'description': 'Full description; a row containing "BY OTHERS" is excluded'}, 'stock_length': {'type': 'string', 'maxLength': 80, 'description': 'How it is purchased, e.g. "3 sticks Ã\x97 30â\x80²"'}, 'material_type': {'enum': ['w-shape', 'plate', 'flat-bar'], 'type': 'string', 'description': 'Grouping key: w-shape, plate, or flat-bar'}, 'purchase_wt_lbs': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Estimated purchase weight in pounds'}, 'is_stock_purchase': {'type': 'boolean', 'description': 'True for consolidated stock items that supersede piece-level plate/flat-bar rows'}}}, 'maxItems': 500, 'minItems': 1, 'description': 'Parsed takeoff line items â\x80\x94 the calling agent reads the estimate'}, 'date_issued': {'type': 'string', 'maxLength': 60, 'description': 'Free-form issue date; a blank line is used if omitted'}, 'company_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Buyer company on the RFQ header and terms â\x80\x94 required'}, 'nesting_rows': {'type': 'array', 'items': {'type': 'object', 'required': ['material', 'nesting_plan', 'drop_notes'], 'properties': {'material': {'type': 'string', 'maxLength': 120}, 'drop_notes': {'type': 'string', 'maxLength': 300}, 'nesting_plan': {'type': 'string', 'maxLength': 200}}}, 'maxItems': 100, 'description': 'Optional fabricator-facing nesting/drop reference rows'}, 'project_name': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Project name for the header and filename'}, 'company_location': {'type': 'string', 'maxLength': 120, 'description': 'City, state under the company name, e.g. "Denver, CO"'}, 'project_location': {'type': 'string', 'maxLength': 160}}}
steel_section_weight
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['section', 'dim1_in'], 'properties': {'dim1_in': {'type': 'number', 'maximum': 120, 'description': 'First dimension in inches: diameter (round bar), side (square bar), width (flat bar) or OD (round tube)', 'exclusiveMinimum': 0}, 'dim2_in': {'type': 'number', 'maximum': 60, 'description': 'Second dimension in inches: thickness (flat bar) or wall (round tube); unused for round and square bar', 'exclusiveMinimum': 0}, 'section': {'enum': ['round-bar', 'square-bar', 'flat-bar', 'round-tube'], 'type': 'string', 'description': 'Cross-section type'}, 'material': {'enum': ['carbon', 'stainless', 'aluminum'], 'type': 'string', 'description': 'Default carbon steel; stainless is +2%, aluminum Ã\x970.35'}, 'length_ft': {'type': 'number', 'maximum': 10000, 'description': 'Optional length in feet for a piece weight', 'exclusiveMinimum': 0}}}
steel_shape_weight
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['designation'], 'properties': {'qty': {'type': 'integer', 'maximum': 10000, 'description': 'Optional piece count', 'exclusiveMinimum': 0}, 'length_ft': {'type': 'number', 'maximum': 500, 'description': 'Optional piece length in feet, for a piece weight', 'exclusiveMinimum': 0}, 'designation': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'AISC designation, e.g. "W21X50", "HSS6X6X3/8", "L4X4X3/8"'}}}
steel_takeoff_weight
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['members'], 'properties': {'members': {'type': 'array', 'items': {'type': 'object', 'required': ['designation', 'length_ft', 'qty'], 'properties': {'qty': {'type': 'integer', 'maximum': 100000, 'description': 'Piece count', 'exclusiveMinimum': 0}, 'length_ft': {'type': 'number', 'maximum': 10000, 'description': 'Piece length, feet', 'exclusiveMinimum': 0}, 'designation': {'type': 'string', 'maxLength': 32, 'description': 'AISC designation, e.g. W21X50, L4X4X1/2, HSS6X6X3/8'}}}, 'maxItems': 500, 'minItems': 1, 'description': 'The member list to roll up, one line per mark/size'}}}
Ajouté
steel_ncr_generate
17 September 2026 07:57
Ajouté
steel_rfi_generate
17 September 2026 07:57
Ajouté
steel_pdf_markup
17 September 2026 07:57
Ajouté
steel_rfq_generate
17 September 2026 07:57
Ajouté
steel_coating_area
17 September 2026 07:57
Ajouté
steel_takeoff_weight
17 September 2026 07:57
Ajouté
steel_mtr_check
17 September 2026 07:57
Ajouté
steel_section_weight
17 September 2026 07:57
Ajouté
steel_pipe_schedule
17 September 2026 07:57
Ajouté
steel_bolt_pretension
17 September 2026 07:57
Ajouté
steel_connection_reference
17 September 2026 07:57
Ajouté
steel_shape_weight
17 September 2026 07:57
Ajouté
steel_plate_weight
17 September 2026 07:57
Ajouté
steel_gauge_thickness
17 September 2026 07:57