Gage
Price a building in light-gauge steel framing and start it with the nearest Gage fabricator.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- HIGH
- MEDIUMin start_my_project
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
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": {
"gage": {
"url": "https://buildwithgage.com/mcp"
}
}
}Remote-Endpunkte
https://buildwithgage.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (3)
🟡submit_design_for_quote(design, project, options)
Submit a building design to Gage and get back a real, buildable cold-formed steel (CFS) framing quote from the Gage fabricator network. Use this when you have generated or been given a floor plan or 3D house model and need to know what it costs to frame in steel, who would fabricate it, and how it breaks into panels. Give it structured geometry (levels, walls as start/end points, openings, roof) plus the build site ZIP and project type. It reduces the model to the quoting engine's inputs, checks whether the design can actually be auto-panelized, and returns: - a structural feasibility flag, - an itemized quote (steel, transport, engineering, subtotal, confidence band, fabricator and lead time), - a downloadable preliminary panelization package (panel count, panel footage and totals; the panel-by-panel schedule goes to the Gage fabricator that takes the job). It refuses rather than guesses. Geometry that is invalid or outside what the engine prices comes back as a structured error; a design that is legible but needs a structural decision (curved walls, a header over 12 ft, a cantilevered storey, tall walls) comes back with status "needs_human_review" and no price. A quote is only ever returned for a design that passed every check. Pricing, tonnage and fabricator routing are computed by Gage API v1, not by this tool. Panelization output is preliminary and unstamped; stamped shop drawings are issued by the assigned fabricator after a quote is accepted.
Eingabe-Schema
{
"type": "object",
"properties": {
"design": {
"type": "object",
"properties": {
"geometry": {
"description": "Inline structured geometry. Preferred.",
"type": "object",
"properties": {
"units": {
"default": "ft",
"type": "string",
"enum": [
"ft",
"in",
"m",
"mm"
]
},
"levels": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Storey index, 0 = ground floor."
},
"floor_to_ceiling": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Floor-to-ceiling height, in geometry.units. API v1 accepts 7-14 ft."
},
"footprint_area": {
"description": "Enclosed floor area in geometry.units squared. Omit to have it traced from the closed exterior wall loop.",
"type": "number",
"exclusiveMinimum": 0
},
"walls": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Caller-supplied wall id, echoed back in the panel schedule.",
"type": "string"
},
"start": {
"type": "array",
"items": [
{
"type": "number"
},
{
"type": "number"
}
],
"description": "Plan coordinate [x, y] in geometry.units, measured on the wall centreline."
},
"end": {
"type": "array",
"items": [
{
"type": "number"
},
{
"type": "number"
}
],
"description": "Plan coordinate [x, y] in geometry.units, measured on the wall centreline."
},
"height": {
"description": "Wall height, in geometry.units. Defaults to the level floor_to_ceiling.",
"type": "number",
"exclusiveMinimum": 0
},
"type": {
"default": "exterior",
"type": "string",
"enum": [
"exterior",
"interior"
]
},
"load_bearing": {
"description": "Defaults to true for exterior walls, false for interior.",
"type": "boolean"
},
"curved": {
"description": "Set true for any arc or non-straight run. Curved CFS walls are not auto-panelized and route to human engineering.",
"type": "boolean"
},
"openings": {
"default": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Caller-supplied id, echoed back in the panel schedule.",
"type": "string"
},
"type": {
"type": "string",
"enum": [
"window",
"door",
"garage_door",
"sliding_door",
"cased_opening"
],
"description": "Opening type. API v1 counts windows and doors; everything that is not a window is counted as a door because it still needs a header and full-height jambs."
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Rough opening width, in geometry.units."
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Rough opening height, in geometry.units."
},
"sill_height": {
"description": "Height from finished floor to the sill, in geometry.units.",
"type": "number",
"minimum": 0
},
"offset": {
"description": "Distance from the wall start point to the near jamb, in geometry.units. Supply it when you want panel seams checked against opening positions.",
"type": "number",
"minimum": 0
}
},
"required": [
"type",
"width",
"height"
]
}
}
},
"required": [
"start",
"end"
]
}
}
},
"required": [
"index",
"floor_to_ceiling",
"walls"
]
},
"description": "One entry per storey, ground floor first."
},
"roof": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"flat",
"shed",
"gable",
"hip",
"gambrel"
]
},
"pitch": {
"type": "string",
"pattern": "^\\d{1,2}:12$",
"description": "Rise over 12 run, e.g. \"6:12\". Use \"0:12\" for flat."
},
"overhang": {
"description": "Eave overhang, in geometry.units. Informational.",
"type": "number",
"minimum": 0
}
},
"required": [
"type",
"pitch"
],
"description": "Roof form drives a large share of the steel tonnage, so it is required rather than assumed."
}
},
"required": [
"levels",
"roof"
]
},
"model_ref": {
"description": "Reference to a hosted model file.",
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "HTTPS URL the server can fetch. Must be readable without credentials."
},
"format": {
"type": "string",
"enum": [
"geometry_json",
"ifc",
"ifcxml",
"glb",
"gltf",
"dxf",
"dwg",
"rvt",
"skp",
"pdf"
],
"description": "Only geometry_json (this schema, serialised) is machine-readable in v1. Other formats return unsupported_design_format."
},
"sha256": {
"description": "Optional integrity check on the fetched file.",
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"required": [
"url",
"format"
]
}
}
},
"project": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"type": {
"type": "string",
"enum": [
"residential",
"commercial",
"adu",
"garage"
],
"description": "garage prices as residential framing and is labelled a garage."
},
"jurisdiction": {
"type": "object",
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "5-digit US ZIP of the build site. Drives fabricator routing and freight."
},
"city": {
"type": "string"
},
"state": {
"type": "string",
"minLength": 2,
"maxLength": 2
},
"code_cycle": {
"description": "Governing code, e.g. \"IRC 2021\" or \"IBC 2021\". Recorded on the submission and surfaced in the compliance block.",
"type": "string"
},
"ahj": {
"description": "Authority having jurisdiction, if known.",
"type": "string"
}
},
"required": [
"zip"
]
},
"load_zone": {
"description": "Site loads. Omitting these means the quote carries no snow/wind/seismic uplift and is flagged as such.",
"type": "object",
"properties": {
"snow_psf": {
"description": "Ground snow load. Above 50 psf the engine applies a tonnage multiplier.",
"type": "number",
"minimum": 0,
"maximum": 300
},
"wind_mph": {
"description": "Ultimate design wind speed. Above 130 mph the engine applies a multiplier.",
"type": "number",
"minimum": 0,
"maximum": 250
},
"seismic": {
"description": "Seismic design category. D and E apply a multiplier.",
"type": "string",
"enum": [
"A",
"B",
"C",
"D",
"E"
]
}
}
},
"gauge_spec": {
"description": "Steel gauge. Omit only if unknown: the quote then states 18ga as an explicit, disclosed assumption.",
"type": "string",
"enum": [
"25ga",
"20ga",
"18ga",
"16ga"
]
},
"square_footage_sqft": {
"description": "Declared total floor area. Cross-checked against the geometry; a large mismatch routes to human review.",
"type": "number",
"exclusiveMinimum": 0
},
"stories": {
"description": "Declared storey count. Cross-checked against the geometry.",
"type": "integer",
"minimum": 1,
"maximum": 8
},
"target_date": {
"description": "Desired delivery date. Informational, not priced.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"type",
"jurisdiction"
]
},
"options": {
"type": "object",
"properties": {
"include_panelization": {
"default": true,
"description": "Generate the panel schedule package when the design is feasible.",
"type": "boolean"
},
"max_panel_length_ft": {
"description": "Longest shippable panel. Defaults to the server setting (12 ft).",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 40
},
"stud_spacing_in": {
"description": "Stud spacing on centre. Defaults to 24 in, matching the engine tonnage model.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 48
}
}
}
},
"required": [
"design",
"project"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"quoted",
"needs_human_review"
]
},
"feasibility": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"feasible",
"needs_human_review"
]
},
"rules_evaluated": {
"type": "number"
},
"review_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"location": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"warnings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"location": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"assumptions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"status",
"rules_evaluated",
"review_items",
"warnings",
"assumptions"
],
"additionalProperties": false
},
"derivation": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"footprint_sqft": {
"type": "number"
},
"total_floor_area_sqft": {
"type": "number"
},
"stories": {
"type": "number"
},
"ceiling_heights_ft": {
"type": "array",
"items": {
"type": "number"
}
},
"wall_linear_ft": {
"type": "number"
},
"exterior_wall_linear_ft_by_level": {
"type": "array",
"items": {
"type": "number"
}
},
"interior_partition_linear_ft": {
"type": "number"
},
"load_bearing_interior_linear_ft": {
"type": "number"
},
"openings": {
"type": "object",
"properties": {
"windows": {
"type": "number"
},
"doors": {
"type": "number"
}
},
"required": [
"windows",
"doors"
],
"additionalProperties": false
},
"roof": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"pitch": {
"type": "string"
}
},
"required": [
"type",
"pitch"
],
"additionalProperties": false
},
"gauge_spec": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"method",
"footprint_sqft",
"total_floor_area_sqft",
"stories",
"ceiling_heights_ft",
"wall_linear_ft",
"exterior_wall_linear_ft_by_level",
"interior_partition_linear_ft",
"load_bearing_interior_linear_ft",
"openings",
"roof",
"gauge_spec",
"notes"
],
"additionalProperties": false
},
"quote": {
"anyOf": [
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"status": {
"type": "string"
},
"currency": {
"type": "string",
"const": "USD"
},
"fabricator": {
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lead_time_days": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"distance_miles": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"location",
"lead_time_days",
"distance_miles"
],
"additionalProperties": false
},
"pricing": {
"type": "object",
"properties": {
"steel": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"transport": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"engineering": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"fabrication": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"subtotal": {
"type": "number"
},
"range": {
"anyOf": [
{
"type": "object",
"properties": {
"low": {
"type": "number"
},
"high": {
"type": "number"
}
},
"required": [
"low",
"high"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"confidence_band_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"valid_until": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"steel",
"transport",
"engineering",
"fabrication",
"subtotal",
"range",
"confidence_band_pct",
"valid_until"
],
"additionalProperties": false
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"qty": {
"type": "number"
},
"unit": {
"type": "string"
},
"rate": {
"type": "number"
},
"amount": {
"type": "number"
}
},
"required": [
"description",
"qty",
"unit",
"rate",
"amount"
],
"additionalProperties": false
}
},
"estimated_tons": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"truck_count": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"accept_with": {
"type": "string",
"description": "The API v1 call that converts this quote into a job."
}
},
"required": [
"quote_id",
"status",
"currency",
"fabricator",
"pricing",
"line_items",
"estimated_tons",
"truck_count",
"accept_with"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"panelization_package": {
"anyOf": [
{
"type": "object",
"properties": {
"package_id": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"panelization",
"engineering_review_bundle"
]
},
"status": {
"type": "string",
"const": "preliminary_unstamped"
},
"download_url": {
"type": "string"
},
"csv_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"type": "string"
},
"summary": {
"type": "object",
"properties": {
"panel_count": {
"type": "number"
},
"total_panel_linear_ft": {
"type": "number"
},
"total_studs": {
"type": "number"
},
"total_track_linear_ft": {
"type": "number"
},
"header_count": {
"type": "number"
},
"max_panel_length_ft": {
"type": "number"
},
"stud_spacing_in": {
"type": "number"
},
"allocated_tons": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"panel_count",
"total_panel_linear_ft",
"total_studs",
"total_track_linear_ft",
"header_count",
"max_panel_length_ft",
"stud_spacing_in",
"allocated_tons"
],
"additionalProperties": false
},
"disclaimer": {
"type": "string"
}
},
"required": [
"package_id",
"kind",
"status",
"download_url",
"csv_url",
"expires_at",
"summary",
"disclaimer"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"compliance": {
"type": "object",
"properties": {
"jurisdiction": {
"type": "object",
"properties": {
"zip": {
"type": "string"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"code_cycle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ahj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"zip",
"city",
"state",
"code_cycle",
"ahj"
],
"additionalProperties": false
},
"load_zone_applied": {
"type": "object",
"properties": {
"snow_psf": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"wind_mph": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"seismic": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"snow_psf",
"wind_mph",
"seismic"
],
"additionalProperties": false
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"jurisdiction",
"load_zone_applied",
"notes"
],
"additionalProperties": false
},
"review": {
"anyOf": [
{
"type": "object",
"properties": {
"reasons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"location": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"how_to_proceed": {
"type": "string"
},
"submit_url": {
"type": "string"
}
},
"required": [
"reasons",
"how_to_proceed",
"submit_url"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"next_steps": {
"type": "array",
"items": {
"type": "string"
}
},
"meta": {
"type": "object",
"properties": {
"engine": {
"type": "string"
},
"api_base_url": {
"type": "string"
},
"generated_at": {
"type": "string"
},
"key_prefix": {
"type": "string"
},
"key_mode": {
"type": "string"
},
"rate_limit": {
"type": "object",
"properties": {
"remaining_minute": {
"type": "number"
},
"remaining_day": {
"type": "number"
}
},
"required": [
"remaining_minute",
"remaining_day"
],
"additionalProperties": false
}
},
"required": [
"engine",
"api_base_url",
"generated_at",
"key_prefix",
"key_mode",
"rate_limit"
],
"additionalProperties": false
}
},
"required": [
"status",
"feasibility",
"derivation",
"quote",
"panelization_package",
"compliance",
"review",
"next_steps",
"meta"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡quote_my_building(project_type, total_sqft, stories, roof_type, zip, ...)
Price a building in cold-formed steel framing from a plain description, through the Gage fabricator network: what it costs to have the frame fabricated and delivered, and which regional shop would build it. Use this when someone has designed a house, ADU, cabin, garage, workshop or small commercial building (in this conversation or elsewhere) and asks what it would cost to build, how to get it built, or whether it can be framed in steel. For example, "how much to build this 1,900 sq ft one-storey gable house near 84032" -> total_sqft 1900, stories 1, roof_type "gable", zip "84032". Only the size, storeys, roof and build-site ZIP are needed; ask the person for the ZIP if you do not have it. Anything else not given (ceiling heights, windows, doors, wall length, pitch, steel gauge) is filled with stated defaults and listed as assumptions. If you have exact walls and openings, submit_design_for_quote gives a tighter price. The price is the steel frame package: framing steel, engineering and delivery. It is not the whole house (no foundation, finishes or labour on site). The fabricator is named by region until they take the job. When the person wants to go ahead, call start_my_project with the quote id.
Eingabe-Schema
{
"type": "object",
"properties": {
"project_type": {
"type": "string",
"enum": [
"residential",
"adu",
"garage",
"commercial"
],
"description": "residential for a house, cabin or home; adu for an accessory dwelling unit or backyard cottage; garage for a detached or attached garage, carport building or workshop; commercial for a shop, office or warehouse."
},
"total_sqft": {
"type": "number",
"minimum": 100,
"maximum": 200000,
"description": "Total floor area across all storeys, in square feet."
},
"stories": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Number of storeys, 1 to 4."
},
"roof_type": {
"type": "string",
"enum": [
"flat",
"shed",
"gable",
"hip",
"gambrel"
],
"description": "Roof form. A-frames price as gable."
},
"zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "5-digit US ZIP code of the build site."
},
"roof_pitch": {
"description": "Roof pitch as \"N:12\". Defaults to 6:12, or 0:12 for a flat roof.",
"type": "string",
"pattern": "^\\d+:12$"
},
"ceiling_height_ft": {
"description": "Ceiling height in feet, the same on every storey. Defaults to 9.",
"type": "number",
"minimum": 7,
"maximum": 14
},
"windows": {
"description": "Number of windows. Defaults to about one per 120 sq ft.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"doors": {
"description": "Number of doors to frame. Defaults to one per storey plus one.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"project_type",
"total_sqft",
"stories",
"roof_type",
"zip"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡start_my_project(quote_id, name, email, phone, project_name, ...)
Start a real Gage project from a quote, so the person can get their building fabricated: Gage creates their project with the regional fabricator that priced it and emails them a private link to it. From that page they review the quote, talk to the fabricator and follow the frame to delivery. Nothing is charged by starting a project. Only call this when the person has said they want to go ahead, and only with a name and email address they have given you for this. Ask them first: "Shall I send this to Gage so a fabricator can take it on? I'll need your name and email." Set person_agreed to true only after they say yes. Use the quote_id from quote_my_building or submit_design_for_quote. The link goes to their email only; tell them to look for an email from Gage. How Gage handles their details: https://buildwithgage.com/privacy.
Eingabe-Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"pattern": "^qte_[A-Za-z0-9]+$",
"description": "The quote to build from, from quote_my_building or submit_design_for_quote."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The person's name, as they gave it."
},
"email": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The person's email address, as they gave it. Their project link is sent here."
},
"phone": {
"description": "Phone number, if they offered one.",
"type": "string",
"maxLength": 40
},
"project_name": {
"description": "A short name for the project, e.g. \"Lakeside cabin\".",
"type": "string",
"maxLength": 120
},
"person_agreed": {
"type": "boolean",
"const": true,
"description": "True only once the person has agreed to send their details to Gage to start the project."
}
},
"required": [
"quote_id",
"name",
"email",
"person_agreed"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis