steel-tools

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
98%
Qualität der Benennung
80%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,851Tokens (Tool-Definitionen)
~3.2 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.79% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "steel-tools": {
      "url": "https://www.structupath.ai/api/mcp"
    }
  }
}

Remote-Endpunkte

https://www.structupath.ai/api/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (14)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
⚪steel_gauge_thickness(gauge, material)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "gauge": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Sheet steel gauge number, 3 through 28"
    },
    "material": {
      "default": "steel",
      "description": "Gauge series — the same number is a different thickness each",
      "type": "string",
      "enum": [
        "steel",
        "galvanized",
        "stainless"
      ]
    }
  },
  "required": [
    "gauge"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢steel_plate_weight(thickness_in, width_in, length_in, price_per_lb)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "thickness_in": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 16
        },
        {
          "type": "number"
        }
      ],
      "description": "Plate thickness in inches — decimal or fraction (\"3/4\", \"1-1/8\")"
    },
    "width_in": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 2000,
      "description": "Plate width in INCHES (a 4x8 ft plate is 48 x 96 in)"
    },
    "length_in": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 2000,
      "description": "Plate length in INCHES"
    },
    "price_per_lb": {
      "description": "Optional material price in $/lb, to include a cost estimate",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000
    }
  },
  "required": [
    "thickness_in",
    "width_in",
    "length_in"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪steel_shape_weight(designation, length_ft, qty)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "designation": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "AISC designation, e.g. \"W21X50\", \"HSS6X6X3/8\", \"L4X4X3/8\""
    },
    "length_ft": {
      "description": "Optional piece length in feet, for a piece weight",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "qty": {
      "description": "Optional piece count",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10000
    }
  },
  "required": [
    "designation"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢steel_connection_reference(name_or_slug)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name_or_slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Connection name, alias or slug (e.g. \"clip angle\", \"base-plate\") or a bolt grade (e.g. \"A490\")"
    }
  },
  "required": [
    "name_or_slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪steel_bolt_pretension(dia, length_in)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "dia": {
      "type": "string",
      "minLength": 1,
      "maxLength": 8,
      "description": "Bolt diameter in inches — fraction (\"3/4\") or decimal (0.75)"
    },
    "length_in": {
      "description": "Optional bolt length in inches, for the turn-of-the-nut rotation",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 60
    }
  },
  "required": [
    "dia"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢steel_pipe_schedule(nps, schedule)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "nps": {
      "type": "string",
      "minLength": 1,
      "maxLength": 8,
      "description": "Nominal pipe size, e.g. \"2\", \"1/2\", \"1-1/4\""
    },
    "schedule": {
      "description": "Optional schedule: \"40\", \"80\", \"160\", \"STD\", \"XS\", \"XXS\", \"5\", \"10\"",
      "type": "string",
      "minLength": 1,
      "maxLength": 8
    }
  },
  "required": [
    "nps"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪steel_section_weight(section, dim1_in, dim2_in, length_ft, material)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "section": {
      "type": "string",
      "enum": [
        "round-bar",
        "square-bar",
        "flat-bar",
        "round-tube"
      ],
      "description": "Cross-section type"
    },
    "dim1_in": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 120,
      "description": "First dimension in inches: diameter (round bar), side (square bar), width (flat bar) or OD (round tube)"
    },
    "dim2_in": {
      "description": "Second dimension in inches: thickness (flat bar) or wall (round tube); unused for round and square bar",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 60
    },
    "length_ft": {
      "description": "Optional length in feet for a piece weight",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 10000
    },
    "material": {
      "description": "Default carbon steel; stainless is +2%, aluminum ×0.35",
      "type": "string",
      "enum": [
        "carbon",
        "stainless",
        "aluminum"
      ]
    }
  },
  "required": [
    "section",
    "dim1_in"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢steel_mtr_check(grade, yield_ksi, tensile_ksi)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "grade": {
      "type": "string",
      "minLength": 2,
      "maxLength": 24,
      "description": "Steel grade: \"A992\", \"A572 Gr. 50\" or \"A36\""
    },
    "yield_ksi": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 200,
      "description": "Reported yield, ksi"
    },
    "tensile_ksi": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 200,
      "description": "Reported tensile, ksi"
    }
  },
  "required": [
    "grade",
    "yield_ksi",
    "tensile_ksi"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢steel_takeoff_weight(members)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "members": {
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "designation": {
            "type": "string",
            "maxLength": 32,
            "description": "AISC designation, e.g. W21X50, L4X4X1/2, HSS6X6X3/8"
          },
          "length_ft": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 10000,
            "description": "Piece length, feet"
          },
          "qty": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 100000,
            "description": "Piece count"
          }
        },
        "required": [
          "designation",
          "length_ft",
          "qty"
        ]
      },
      "description": "The member list to roll up, one line per mark/size"
    }
  },
  "required": [
    "members"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪steel_coating_area(designation, length_ft, qty, include_inside_faces, coverage_sqft_per_gal)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "designation": {
      "type": "string",
      "maxLength": 32,
      "description": "AISC designation, e.g. W21X50, HSS6X6X3/8, Pipe4STD"
    },
    "length_ft": {
      "description": "Optional length in feet for a piece/lot area",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 10000
    },
    "qty": {
      "description": "Optional piece count (default 1) when a length is given",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "include_inside_faces": {
      "description": "Tubes only: add interior surface, as hot-dip galvanizing coats vented HSS/pipe interiors. Default false (outside only).",
      "type": "boolean"
    },
    "coverage_sqft_per_gal": {
      "description": "Optional practical coverage rate from the coating datasheet, to estimate gallons",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 2000
    }
  },
  "required": [
    "designation"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡steel_rfq_generate(company_name, company_location, project_name, project_location, date_issued, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "company_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Buyer company on the RFQ header and terms — required"
    },
    "company_location": {
      "description": "City, state under the company name, e.g. \"Denver, CO\"",
      "type": "string",
      "maxLength": 120
    },
    "project_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Project name for the header and filename"
    },
    "project_location": {
      "type": "string",
      "maxLength": 160
    },
    "date_issued": {
      "description": "Free-form issue date; a blank line is used if omitted",
      "type": "string",
      "maxLength": 60
    },
    "line_items": {
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item": {
            "type": "string",
            "maxLength": 40,
            "description": "Estimate item number, e.g. \"A-01\""
          },
          "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"
          },
          "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\""
          },
          "qty": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000,
            "description": "Piece or stick count; a zero-qty row is excluded"
          },
          "stock_length": {
            "type": "string",
            "maxLength": 80,
            "description": "How it is purchased, e.g. \"3 sticks × 30′\""
          },
          "purchase_wt_lbs": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "Estimated purchase weight in pounds"
          },
          "notes": {
            "type": "string",
            "maxLength": 300
          },
          "material_type": {
            "type": "string",
            "enum": [
              "w-shape",
              "plate",
              "flat-bar"
            ],
            "description": "Grouping key: w-shape, plate, or flat-bar"
          },
          "is_stock_purchase": {
            "description": "True for consolidated stock items that supersede piece-level plate/flat-bar rows",
            "type": "boolean"
          }
        },
        "required": [
          "item",
          "category",
          "description",
          "size",
          "grade",
          "qty",
          "stock_length",
          "purchase_wt_lbs",
          "material_type"
        ]
      },
      "description": "Parsed takeoff line items — the calling agent reads the estimate"
    },
    "nesting_rows": {
      "description": "Optional fabricator-facing nesting/drop reference rows",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "material": {
            "type": "string",
            "maxLength": 120
          },
          "nesting_plan": {
            "type": "string",
            "maxLength": 200
          },
          "drop_notes": {
            "type": "string",
            "maxLength": 300
          }
        },
        "required": [
          "material",
          "nesting_plan",
          "drop_notes"
        ]
      }
    },
    "terms": {
      "description": "Override the eight default terms; omit for the standard set",
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      }
    }
  },
  "required": [
    "company_name",
    "project_name",
    "line_items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡steel_pdf_markup(pdf_url, pdf_base64, markups, scale, page_scales, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "pdf_url": {
      "description": "HTTPS URL of the source drawing PDF (fetched server-side, SSRF-guarded)",
      "type": "string",
      "maxLength": 2000,
      "format": "uri"
    },
    "pdf_base64": {
      "description": "Base64 PDF for small files (~3 MB max decoded); prefer pdf_url for drawing sets",
      "type": "string",
      "maxLength": 4800000
    },
    "markups": {
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5000,
            "description": "1-based page number"
          },
          "tool": {
            "description": "A steel takeoff preset key, e.g. hss-ea, w-beam-lf, rfi-cloud",
            "type": "string",
            "maxLength": 60
          },
          "type": {
            "description": "Annotation type when not using a preset tool",
            "type": "string",
            "maxLength": 40
          },
          "at": {
            "anyOf": [
              {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              {
                "maxItems": 2000,
                "type": "array",
                "items": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            ]
          },
          "points": {
            "maxItems": 2000,
            "type": "array",
            "items": {
              "type": "array",
              "prefixItems": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          "rect": {
            "description": "[x, y, w, h] in the markup's coordinate space",
            "type": "array",
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              },
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ]
          },
          "arrow": {
            "type": "boolean"
          },
          "arrow_at": {
            "type": "array",
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ]
          },
          "size": {
            "type": "number",
            "maximum": 1000
          },
          "bump": {
            "type": "number",
            "maximum": 200
          },
          "box_w": {
            "type": "number",
            "maximum": 10000
          },
          "box_h": {
            "type": "number",
            "maximum": 10000
          },
          "subject": {
            "type": "string",
            "maxLength": 120
          },
          "label": {
            "type": "string",
            "maxLength": 200
          },
          "contents": {
            "type": "string",
            "maxLength": 2000
          },
          "author": {
            "type": "string",
            "maxLength": 120
          },
          "color": {
            "description": "Hex color, e.g. #FF0000",
            "type": "string",
            "maxLength": 9
          },
          "fill": {
            "type": "string",
            "maxLength": 9
          },
          "fill_opacity": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "opacity": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "width": {
            "type": "number",
            "maximum": 100
          },
          "font_size": {
            "type": "number",
            "maximum": 200
          },
          "scale": {
            "description": "Per-markup scale, e.g. \"1/4 in = 1 ft\"",
            "type": "string",
            "maxLength": 40
          },
          "coordinate_space": {
            "type": "string",
            "enum": [
              "ratio",
              "pdf"
            ]
          },
          "data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "column_data": {
            "maxItems": 50,
            "type": "array",
            "items": {}
          }
        },
        "required": [
          "page"
        ]
      },
      "description": "Markups to place — geometry in ratio (0–1 from top-left) or pdf coordinates"
    },
    "scale": {
      "description": "Document scale for measurements, e.g. \"1/4 in = 1 ft\" or \"1:100\"",
      "type": "string",
      "maxLength": 40
    },
    "page_scales": {
      "description": "Per-page scale overrides, keyed by page number string",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "coordinate_space": {
      "type": "string",
      "enum": [
        "ratio",
        "pdf"
      ]
    },
    "author": {
      "description": "Markups List author column",
      "type": "string",
      "maxLength": 120
    }
  },
  "required": [
    "markups"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡steel_rfi_generate(company_name, company_location, rfi_number, date, project_name, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "company_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Contractor issuing the RFI — appears in the header"
    },
    "company_location": {
      "type": "string",
      "maxLength": 120
    },
    "rfi_number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "RFI number from the project register, e.g. \"RFI-017\""
    },
    "date": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Submission date"
    },
    "project_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "project_number": {
      "type": "string",
      "maxLength": 60
    },
    "submitted_to": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "The party who must respond — engineer, architect, GC"
    },
    "submitted_by": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Name — company"
    },
    "reason": {
      "description": "Category: Design Omission, Design Error, Constructability Issue, Scope Clarification, Site Condition, Missing Information, Coordination Conflict — or free text",
      "type": "string",
      "maxLength": 60
    },
    "drawing_refs": {
      "description": "Exact drawing numbers with revisions",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80
      }
    },
    "spec_refs": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80
      }
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "One-line subject — one issue per RFI"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "The issue: specific references, what is missing or conflicting, why it matters. Newlines respected."
    },
    "proposed_solution": {
      "description": "Suggested path forward, framed as a proposal",
      "type": "string",
      "maxLength": 2000
    },
    "response_needed_by": {
      "type": "string",
      "maxLength": 60
    },
    "attachments": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 160
      }
    }
  },
  "required": [
    "company_name",
    "rfi_number",
    "date",
    "project_name",
    "submitted_to",
    "submitted_by",
    "subject",
    "description"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡steel_ncr_generate(company_name, company_location, ncr_number, date, project_name, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "company_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Contractor raising the NCR — appears in the header"
    },
    "company_location": {
      "type": "string",
      "maxLength": 120
    },
    "ncr_number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "NCR number from the project register, e.g. \"NCR-008\""
    },
    "date": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Date raised"
    },
    "project_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "project_number": {
      "type": "string",
      "maxLength": 60
    },
    "raised_by": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Name — role"
    },
    "trade_or_supplier": {
      "type": "string",
      "maxLength": 160
    },
    "location": {
      "description": "Area, level, grid, or piece mark",
      "type": "string",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "What was found, measured against what was required"
    },
    "requirement_violated": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "The cited requirement — spec section, drawing/detail, or code clause. An NCR without a cited requirement is dispute fuel."
    },
    "containment": {
      "description": "What was done on the spot — quarantine, stop work, tag",
      "type": "string",
      "maxLength": 1000
    },
    "root_cause": {
      "type": "string",
      "maxLength": 2000
    },
    "root_cause_whys": {
      "description": "5-Whys chain, first why to root; overrides root_cause",
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 300
      }
    },
    "resolution": {
      "type": "string",
      "enum": [
        "accept-as-is",
        "repair",
        "rework",
        "reject"
      ],
      "description": "Disposition: accept-as-is (no physical work), repair, rework, or reject"
    },
    "resolution_justification": {
      "description": "Required in practice for accept-as-is — the concession basis",
      "type": "string",
      "maxLength": 1000
    },
    "corrective_action": {
      "description": "Bringing this instance into compliance",
      "type": "string",
      "maxLength": 2000
    },
    "preventive_action": {
      "description": "Stopping recurrence — procedure, inspection, supplier",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "company_name",
    "ncr_number",
    "date",
    "project_name",
    "raised_by",
    "description",
    "requirement_violated",
    "resolution"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet14 Tools
verifiziertVersion nicht aufgezeichnet14 Tools