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