NestingCalc Calculators
What this MCP does
Provides woodworking, cutting, material, manufacturing, construction, and shipping calculations, including optimization and costing tools.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['run_mm', 'baluster_width_mm'], 'properties': {'run_mm': {'type': 'number', 'description': 'Total run length between posts', 'exclusiveMinimum': 0}, 'max_gap_mm': {'type': 'number', 'default': 100, 'minimum': 0, 'description': 'Maximum allowed gap (100 mm = sphere rule, 102 mm = 4 in)'}, 'baluster_width_mm': {'type': 'number', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['boards'], 'properties': {'unit': {'enum': ['in', 'ft', 'mm', 'cm', 'm'], 'type': 'string', 'default': 'in', 'description': 'Unit for board dimensions'}, 'price': {'type': 'number', 'minimum': 0, 'description': 'Optional price per price_unit'}, 'boards': {'type': 'array', 'items': {'type': 'object', 'required': ['thickness', 'width', 'length'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'label': {'type': 'string'}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'length': {'type': 'number', 'exclusiveMinimum': 0}, 'thickness': {'type': 'number', 'exclusiveMinimum': 0}}}, 'minItems': 1, 'description': 'Boards (dimensions in the chosen unit)'}, 'price_unit': {'enum': ['bf', 'mbf'], 'type': 'string', 'default': 'bf', 'description': 'Unit the price is quoted in: single board foot or MBF (1,000 bf)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['qty', 'unit_cost'], 'properties': {'qty': {'type': 'number', 'description': 'Net quantity per product', 'exclusiveMinimum': 0}, 'name': {'type': 'string'}, 'unit': {'type': 'string', 'description': 'Unit label (m3, m2, pcs...)'}, 'unit_cost': {'type': 'number', 'description': 'Cost per unit', 'exclusiveMinimum': 0}, 'waste_pct': {'type': 'number', 'default': 0, 'maximum': 200, 'minimum': 0, 'description': 'Waste allowance %'}}}, 'minItems': 1}, 'products': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'Products this BOM covers', 'exclusiveMinimum': 0}, 'margin_pct': {'type': 'number', 'maximum': 90, 'minimum': 0, 'description': 'Target margin on selling price, %'}, 'labor_per_product': {'type': 'number', 'minimum': 0, 'description': 'Direct labour per product'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['length_cm', 'width_cm', 'height_cm', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'width_cm': {'type': 'number', 'exclusiveMinimum': 0}, 'height_cm': {'type': 'number', 'exclusiveMinimum': 0}, 'length_cm': {'type': 'number', 'exclusiveMinimum': 0}, 'weight_kg': {'type': 'number', 'minimum': 0, 'description': 'Gross weight per carton, kg'}}}, 'minItems': 1, 'description': 'Carton lines'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['unit', 'tool_diameter', 'chip_load', 'cutting_speed'], 'properties': {'unit': {'enum': ['metric', 'imperial'], 'type': 'string'}, 'flutes': {'type': 'integer', 'default': 2, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'machine': {'enum': ['router', 'mill'], 'type': 'string', 'default': 'router'}, 'chip_load': {'type': 'number', 'description': 'Chip load per tooth (mm or inch)', 'exclusiveMinimum': 0}, 'cutting_speed': {'type': 'number', 'description': 'Cutting speed Vc (m/min or ft/min)', 'exclusiveMinimum': 0}, 'tool_diameter': {'type': 'number', 'description': 'Cutter diameter (mm or inch)', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['kg_per_piece'], 'properties': {'container': {'enum': ['20gp', '40gp', '40hc', 'custom'], 'type': 'string', 'default': '40hc'}, 'piece_h_m': {'type': 'number', 'minimum': 0, 'description': 'Carton height (m)'}, 'piece_l_m': {'type': 'number', 'minimum': 0, 'description': 'Carton length (m)'}, 'piece_w_m': {'type': 'number', 'minimum': 0, 'description': 'Carton width (m)'}, 'payload_kg': {'type': 'number', 'minimum': 0, 'description': 'Override max payload (kg); route limits are often lower than the container maximum'}, 'usable_cbm': {'type': 'number', 'minimum': 0, 'description': 'Override usable/stowable volume (CBM)'}, 'planned_qty': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Planned number of cartons (returns containers needed)', 'exclusiveMinimum': 0}, 'kg_per_piece': {'type': 'number', 'description': 'Mass per carton (kg)', 'exclusiveMinimum': 0}, 'cbm_per_piece': {'type': 'number', 'minimum': 0, 'description': 'Volume per carton in CBM (alternative to dimensions)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['diameter', 'rpm'], 'properties': {'rpm': {'type': 'number', 'description': 'Spindle speed in revolutions per minute', 'exclusiveMinimum': 0}, 'unit': {'enum': ['metric', 'imperial'], 'type': 'string', 'default': 'metric', 'description': 'Unit system'}, 'diameter': {'type': 'number', 'description': 'Tool/workpiece diameter (metric: mm, imperial: inch)', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['file_base64', 'scale_percent'], 'properties': {'file_base64': {'type': 'string', 'minLength': 4, 'description': 'Base64-encoded PES or DST file'}, 'scale_percent': {'type': 'number', 'description': 'Target scale in percent, e.g. 80 for -20%', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['value', 'from'], 'properties': {'from': {'enum': ['stere', 'cord', 'loose', 'ft3'], 'type': 'string', 'description': 'Input unit: stere = 1 stacked m3, cord = 128 ft3, loose = bulk m3'}, 'value': {'type': 'number', 'exclusiveMinimum': 0}, 'species': {'enum': ['pine', 'spruce', 'fir', 'cedar', 'poplar', 'oak-red', 'oak-white', 'maple-hard', 'birch', 'ash', 'beech', 'walnut', 'cherry', 'mahogany', 'teak', 'mdf', 'plywood', 'oak-engineered'], 'type': 'string', 'description': 'Optional species key for weight'}, 'moisture': {'enum': ['dry', 'fresh'], 'type': 'string', 'default': 'dry', 'description': 'fresh = 1.5x weight'}, 'loose_factor': {'type': 'number', 'default': 1.4, 'description': 'Loose m3 per stacked m3 (1.35-1.55 typical)', 'exclusiveMinimum': 1}, 'solid_factor': {'type': 'number', 'default': 0.7, 'maximum': 1, 'description': 'Solid m3 per stacked m3 (Festmeter/Raummeter, 0.65-0.75 typical) - the weight runs off this', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['room_width_m', 'room_length_m', 'plank_width_mm', 'plank_length_mm'], 'properties': {'layout': {'enum': ['straight', 'staggered', 'herringbone', 'diagonal'], 'type': 'string', 'default': 'staggered'}, 'direction': {'enum': ['length', 'width'], 'type': 'string', 'default': 'length', 'description': 'Plank direction'}, 'expansion_mm': {'type': 'number', 'default': 10, 'minimum': 0}, 'price_per_m2': {'type': 'number', 'minimum': 0}, 'room_width_m': {'type': 'number', 'exclusiveMinimum': 0}, 'min_offcut_mm': {'type': 'number', 'default': 300, 'minimum': 0, 'description': 'Offcuts shorter than this are not reused'}, 'price_per_box': {'type': 'number', 'minimum': 0}, 'room_length_m': {'type': 'number', 'exclusiveMinimum': 0}, 'waste_percent': {'type': 'number', 'minimum': 0, 'description': 'Overrides the layout default'}, 'plank_width_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'planks_per_box': {'type': 'integer', 'default': 8, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'plank_length_mm': {'type': 'number', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['width_mm', 'height_mm', 'thickness_mm', 'price_per_m2'], 'properties': {'quantity': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'Number of identical panes', 'exclusiveMinimum': 0}, 'width_mm': {'type': 'number', 'description': 'Pane width in mm', 'exclusiveMinimum': 0}, 'height_mm': {'type': 'number', 'description': 'Pane height in mm', 'exclusiveMinimum': 0}, 'waste_pct': {'type': 'number', 'default': 0, 'maximum': 50, 'minimum': 0, 'description': 'Cutting-waste allowance added on top of net area (%)'}, 'price_per_m2': {'type': 'number', 'description': 'Glass price per square metre', 'exclusiveMinimum': 0}, 'thickness_mm': {'type': 'number', 'description': 'Glass thickness in mm (2-25)', 'exclusiveMinimum': 0}, 'edge_price_per_m': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Polished-edge work price per running metre'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['spread_gsm'], 'properties': {'faces': {'enum': ['1', '2'], 'type': 'string', 'default': '1', 'description': '1 = single-face, 2 = both mating faces'}, 'face_lam': {'type': 'object', 'required': ['length_mm', 'width_mm', 'layers'], 'properties': {'sets': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'layers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 2}, 'width_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'length_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Face lamination lay-up instead of a direct area'}, 'waste_pct': {'type': 'number', 'default': 5, 'maximum': 100, 'minimum': 0, 'description': 'Application/squeeze-out waste, %'}, 'edge_panel': {'type': 'object', 'required': ['panel_length_mm', 'panel_width_mm', 'board_width_mm', 'panel_thickness_mm'], 'properties': {'panels': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'board_width_mm': {'type': 'number', 'description': 'Sawn lamella width - joint count = ceil(width/board)-1', 'exclusiveMinimum': 0}, 'panel_width_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'panel_length_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'panel_thickness_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Edge-glued panel dimensions instead of a direct area'}, 'spread_gsm': {'type': 'number', 'description': 'Spread rate g/m2 (PVAc D3 one face ~175, EGP ~250, finger PUR ~530)', 'exclusiveMinimum': 0}, 'bond_area_m2': {'type': 'number', 'minimum': 0, 'description': 'Total bond-line area, m2'}, 'density_gcm3': {'type': 'number', 'minimum': 0, 'description': 'Glue density g/cm3 to get litres (PVAc ~1.08)'}, 'price_per_kg': {'type': 'number', 'minimum': 0, 'description': 'Glue price per kg'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['volume_m3'], 'properties': {'mc_pct': {'type': 'number', 'minimum': 0, 'description': "Moisture content % oven-dry basis; defaults to the species' freshly-felled MC (~73% acacia, ~75% rubberwood)"}, 'species': {'type': 'string', 'description': 'Species key, e.g. acacia-mangium, rubberwood, white-oak, teak'}, 'volume_m3': {'type': 'number', 'description': 'Roundwood volume in m3 (Hoppus true, Huber or JAS volume)', 'exclusiveMinimum': 0}, 'basic_density_kg_m3': {'type': 'number', 'minimum': 0, 'description': 'Custom basic density (oven-dry kg per green m3); overrides the species preset'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['circumference', 'length'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'unit': {'enum': ['imperial', 'metric'], 'type': 'string', 'default': 'imperial', 'description': 'imperial: circumference in inches, length in feet; metric: cm and m'}, 'length': {'type': 'number', 'description': 'Log length (ft or m)', 'exclusiveMinimum': 0}, 'circumference': {'type': 'number', 'description': 'Circumference at mid-length (in or cm)', 'exclusiveMinimum': 0}, 'price_per_hoppus_unit': {'type': 'number', 'minimum': 0, 'description': 'Optional value per Hoppus ft3/m3'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['diameter_small_cm', 'length_m'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'length_m': {'type': 'number', 'description': 'Log length in meters', 'exclusiveMinimum': 0}, 'oval_adjust': {'type': 'boolean', 'default': False, 'description': 'Add the +2 cm ovality adjustment'}, 'diameter_long_cm': {'type': 'number', 'minimum': 0, 'description': 'Long-axis diameter for oval logs (cm)'}, 'diameter_small_cm': {'type': 'number', 'description': 'Short-axis diameter in cm', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['length_m', 'width_m', 'height_m', 'board_thickness_mm', 'sticker_thickness_mm'], 'properties': {'width_m': {'type': 'number', 'description': 'Stack width, m', 'exclusiveMinimum': 0}, 'height_m': {'type': 'number', 'description': 'Stack height, m', 'exclusiveMinimum': 0}, 'length_m': {'type': 'number', 'description': 'Stack length, m', 'exclusiveMinimum': 0}, 'fill_factor': {'type': 'number', 'minimum': 0, 'description': 'Stack fill factor 0â\x80\x931, default 0.9'}, 'board_thickness_mm': {'type': 'number', 'description': 'Average board thickness, mm', 'exclusiveMinimum': 0}, 'sticker_thickness_mm': {'type': 'number', 'description': 'Sticker thickness, mm (default 19)', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['unit', 'stock_length', 'parts'], 'properties': {'kerf': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Saw blade width consumed by each cut'}, 'trim': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Unusable trim at bar ends'}, 'unit': {'enum': ['mm', 'cm', 'm', 'in', 'ft'], 'type': 'string', 'description': 'Unit for all lengths'}, 'parts': {'type': 'array', 'items': {'type': 'object', 'required': ['length'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'How many of this part', 'exclusiveMinimum': 0}, 'label': {'type': 'string', 'description': 'Optional part name'}, 'length': {'type': 'number', 'description': 'Cut length', 'exclusiveMinimum': 0}}}, 'minItems': 1, 'description': 'Parts to cut'}, 'stock_count': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'How many stock bars are available', 'exclusiveMinimum': 0}, 'stock_length': {'type': 'number', 'description': 'Length of one stock bar', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['length'], 'properties': {'unit': {'enum': ['metric', 'imperial'], 'type': 'string', 'default': 'metric', 'description': 'metric: diameters in cm, length in m; imperial: in and ft'}, 'length': {'type': 'number', 'exclusiveMinimum': 0}, 'method': {'enum': ['huber', 'smalian', 'newton'], 'type': 'string', 'default': 'huber'}, 'diameter_mid': {'type': 'number', 'minimum': 0, 'description': 'Mid-length diameter (huber/newton)'}, 'diameter_large': {'type': 'number', 'minimum': 0, 'description': 'Large-end diameter (smalian/newton)'}, 'diameter_small': {'type': 'number', 'minimum': 0, 'description': 'Small-end diameter (smalian/newton)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['species', 'thickness_mm', 'width_mm', 'length_m'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'species': {'enum': ['pine', 'spruce', 'fir', 'cedar', 'poplar', 'oak-red', 'oak-white', 'maple-hard', 'birch', 'ash', 'beech', 'walnut', 'cherry', 'mahogany', 'teak', 'mdf', 'plywood', 'oak-engineered'], 'type': 'string', 'description': 'Wood species key'}, 'length_m': {'type': 'number', 'exclusiveMinimum': 0}, 'moisture': {'enum': ['dry', 'fresh'], 'type': 'string', 'default': 'dry', 'description': 'fresh (green) wood uses 1.5x density (+50% weight)'}, 'width_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'thickness_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'custom_density_kg_m3': {'type': 'number', 'minimum': 0, 'description': 'Overrides species density'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['stages'], 'properties': {'stages': {'type': 'array', 'items': {'type': 'object', 'required': ['yield_pct'], 'properties': {'label': {'type': 'string', 'description': 'Optional stage name'}, 'yield_pct': {'type': 'number', 'description': 'Share of stage input that becomes usable output, %', 'exclusiveMinimum': 0}}}, 'minItems': 1, 'description': 'Production stages in process order'}, 'target_output_m3': {'type': 'number', 'minimum': 0, 'description': 'Finished volume wanted, m3 (reverse mode)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['profile', 'material', 'length_m'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'od_mm': {'type': 'number', 'minimum': 0, 'description': 'pipe/round-bar: outer diameter'}, 'web_mm': {'type': 'number', 'minimum': 0, 'description': 'beam: web thickness'}, 'profile': {'enum': ['pipe', 'round-bar', 'square-tube', 'rect-tube', 'flat-bar', 'angle', 'beam'], 'type': 'string'}, 'wall_mm': {'type': 'number', 'minimum': 0, 'description': 'pipe/tubes: wall thickness'}, 'length_m': {'type': 'number', 'description': 'Length in meters', 'exclusiveMinimum': 0}, 'material': {'enum': ['steel', 'stainless', 'aluminum', 'copper', 'brass'], 'type': 'string'}, 'width_mm': {'type': 'number', 'minimum': 0, 'description': 'rect-tube/flat-bar/angle/beam: width'}, 'height_mm': {'type': 'number', 'minimum': 0, 'description': 'rect-tube/beam: height'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mode'], 'properties': {'mode': {'enum': ['corner', 'sides', 'crown'], 'type': 'string', 'description': 'Calculation mode'}, 'sides': {'type': 'integer', 'maximum': 120, 'minimum': 3, 'description': 'sides mode: number of sides of the frame/polygon'}, 'corner_angle_deg': {'type': 'number', 'description': 'corner mode: interior corner angle, e.g. 90 or 135', 'exclusiveMaximum': 180, 'exclusiveMinimum': 0}, 'spring_angle_deg': {'type': 'number', 'description': 'crown mode: spring angle, typically 38 or 45', 'exclusiveMaximum': 90, 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'mode': {'enum': ['sample', 'drying', 'max'], 'type': 'string', 'default': 'sample'}, 'basis': {'enum': ['od', 'wb'], 'type': 'string', 'default': 'od'}, 'dry_mass': {'type': 'number', 'minimum': 0, 'description': 'Oven-dry mass of sample (sample mode)'}, 'wet_mass': {'type': 'number', 'minimum': 0, 'description': 'Wet mass of sample (sample mode)'}, 'end_mc_pct': {'type': 'number', 'minimum': 0, 'description': 'Target MC after drying, %'}, 'start_mass': {'type': 'number', 'minimum': 0, 'description': 'Mass at start of drying (drying mode)'}, 'start_mc_pct': {'type': 'number', 'minimum': 0, 'description': 'MC at start of drying, %'}, 'basic_density_kg_m3': {'type': 'number', 'minimum': 0, 'description': 'Basic density kg/m³ for MCmax/MCsink (max mode)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['area_m2', 'coats'], 'properties': {'coats': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Number of coats'}, 'area_m2': {'type': 'number', 'description': 'Surface to coat, m2 (flat projected area)', 'exclusiveMinimum': 0}, 'solids_pct': {'type': 'number', 'minimum': 0, 'description': 'Volume solids % (mode B)'}, 'dft_microns': {'type': 'number', 'minimum': 0, 'description': 'Target dry film thickness um (mode B)'}, 'price_per_l': {'type': 'number', 'minimum': 0, 'description': 'Coating price per litre'}, 'shape_extra_pct': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': 0, 'description': 'Extra % for 3D surfaces'}, 'transfer_eff_pct': {'type': 'number', 'minimum': 0, 'description': 'Transfer efficiency % (mode B; HVLP ~70)'}, 'coverage_m2_per_l': {'type': 'number', 'minimum': 0, 'description': 'Data-sheet coverage m2/L (mode A)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['diameter_mm', 'length_m'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'length_m': {'type': 'number', 'exclusiveMinimum': 0}, 'diameter_mm': {'type': 'number', 'description': 'Bar diameter, e.g. 12 or 15.875 (#5)', 'exclusiveMinimum': 0}}}, 'minItems': 1, 'description': 'Rebar lines'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['finished_mc_pct', 'sawn_mc_pct', 'direction'], 'properties': {'mode': {'enum': ['forward', 'reverse'], 'type': 'string', 'default': 'forward'}, 'kerf_mm': {'type': 'number', 'minimum': 0, 'description': 'Saw kerf, mm (default 2.2 band)'}, 'species': {'type': 'string', 'description': "Species key for shrinkage (e.g. 'white-oak')"}, 'rough_mm': {'type': 'number', 'minimum': 0, 'description': 'Rough-sawn dimension mm (reverse mode)'}, 'direction': {'enum': ['tangential', 'radial'], 'type': 'string'}, 'planing_mm': {'type': 'number', 'minimum': 0, 'description': 'Planing allowance per face, mm (default 2.5)'}, 'finished_mm': {'type': 'number', 'minimum': 0, 'description': 'Finished dimension mm (forward mode)'}, 'sawn_mc_pct': {'type': 'number', 'description': 'MC at which the wood is sawn, %', 'exclusiveMinimum': 0}, 'custom_fsp_pct': {'type': 'number', 'minimum': 0, 'description': 'Custom FSP %, default 30'}, 'finished_mc_pct': {'type': 'number', 'description': 'Target finished MC, %', 'exclusiveMinimum': 0}, 'custom_shrink_od_pct': {'type': 'number', 'minimum': 0, 'description': 'Custom S_od % (used if no species)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['diameter', 'cutting_speed'], 'properties': {'unit': {'enum': ['metric', 'imperial'], 'type': 'string', 'default': 'metric', 'description': 'Unit system'}, 'diameter': {'type': 'number', 'description': 'Tool/workpiece diameter (metric: mm, imperial: inch)', 'exclusiveMinimum': 0}, 'cutting_speed': {'type': 'number', 'description': 'Cutting speed (metric: m/min, imperial: SFM)', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['input_volume_m3', 'output_volume_m3'], 'properties': {'actual_bf': {'type': 'number', 'minimum': 0, 'description': 'Optional: board feet actually sawn â\x80\x94 enables the overrun calculation'}, 'log_rule_bf': {'type': 'number', 'minimum': 0, 'description': 'Optional: board feet predicted by the log rule (Doyle/Scribner/International)'}, 'input_volume_m3': {'type': 'number', 'description': 'Roundwood volume in (m3)', 'exclusiveMinimum': 0}, 'output_volume_m3': {'type': 'number', 'description': 'Sawn lumber volume out (m3)', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['unit', 'stock_width', 'stock_height', 'pieces'], 'properties': {'kerf': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Blade/saw width consumed by each cut'}, 'unit': {'enum': ['mm', 'cm', 'm', 'in', 'ft'], 'type': 'string', 'description': 'Unit for all dimensions'}, 'pieces': {'type': 'array', 'items': {'type': 'object', 'required': ['width', 'height'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'How many of this piece', 'exclusiveMinimum': 0}, 'label': {'type': 'string', 'description': 'Optional piece name'}, 'width': {'type': 'number', 'description': 'Piece width', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'description': 'Piece height', 'exclusiveMinimum': 0}, 'rotatable': {'type': 'boolean', 'default': True, 'description': 'Allow 90-degree rotation (false = grain lock)'}}}, 'minItems': 1, 'description': 'Pieces to cut'}, 'stocks': {'type': 'array', 'items': {'type': 'object', 'required': ['width', 'height', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Sheets available of this size', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'description': 'Sheet width', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'description': 'Sheet height', 'exclusiveMinimum': 0}}}, 'maxItems': 6, 'description': 'Optional mixed stock sizes; replaces stock_width/stock_height/stock_count when given'}, 'trim_x': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Symmetric trim removed from left/right sheet edges (damaged edges)'}, 'trim_y': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Symmetric trim removed from top/bottom sheet edges'}, 'stock_count': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'How many sheets are available', 'exclusiveMinimum': 0}, 'stock_width': {'type': 'number', 'description': 'Sheet width', 'exclusiveMinimum': 0}, 'stock_height': {'type': 'number', 'description': 'Sheet height', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'mode': {'enum': ['gauge', 'mm'], 'type': 'string', 'default': 'gauge', 'description': 'gauge: from gauge number; mm: from thickness'}, 'gauge': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'gauge mode: gauge number, e.g. 16', 'exclusiveMinimum': 0}, 'material': {'enum': ['steel', 'stainless', 'aluminum', 'galvanized'], 'type': 'string', 'default': 'steel'}, 'width_mm': {'type': 'number', 'default': 1000, 'minimum': 0}, 'length_mm': {'type': 'number', 'default': 2000, 'minimum': 0}, 'thickness_mm': {'type': 'number', 'minimum': 0, 'description': 'mm mode: thickness in mm'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['volume_m3', 'tonnes'], 'properties': {'tonnes': {'type': 'number', 'description': 'Total cargo mass in metric tonnes', 'exclusiveMinimum': 0}, 'volume_m3': {'type': 'number', 'description': 'Total cargo volume in cubic metres', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['room_width_m', 'room_length_m', 'tile_width_mm', 'tile_length_mm'], 'properties': {'layout': {'enum': ['straight', 'offset', 'diagonal', 'herringbone', 'large-format', 'natural-stone'], 'type': 'string', 'default': 'straight', 'description': 'Layout pattern (sets default waste factor)'}, 'box_size': {'type': 'integer', 'default': 10, 'maximum': 9007199254740991, 'description': 'Tiles per box', 'exclusiveMinimum': 0}, 'grout_mm': {'type': 'number', 'default': 3, 'minimum': 0}, 'price_per_m2': {'type': 'number', 'minimum': 0}, 'room_width_m': {'type': 'number', 'exclusiveMinimum': 0}, 'price_per_box': {'type': 'number', 'minimum': 0}, 'room_length_m': {'type': 'number', 'exclusiveMinimum': 0}, 'tile_width_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'waste_percent': {'type': 'number', 'minimum': 0, 'description': 'Overrides the layout default'}, 'tile_length_mm': {'type': 'number', 'exclusiveMinimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['span_mm', 'width_mm', 'height_mm', 'grade'], 'properties': {'grade': {'enum': ['C16', 'C18', 'C24', 'C30', 'C35', 'C40', 'D24', 'D30', 'D40'], 'type': 'string', 'description': 'Timber grade (EN 338)'}, 'span_mm': {'type': 'number', 'description': 'Clear span between supports in mm', 'exclusiveMinimum': 0}, 'width_mm': {'type': 'number', 'description': 'Beam width b in mm', 'exclusiveMinimum': 0}, 'height_mm': {'type': 'number', 'description': 'Beam depth h in mm (strong axis)', 'exclusiveMinimum': 0}, 'load_type': {'enum': ['udl', 'point'], 'type': 'string', 'default': 'udl', 'description': 'Load type of interest'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['value', 'from'], 'properties': {'qty': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'description': 'Multiplier (number of lots)', 'exclusiveMinimum': 0}, 'from': {'enum': ['m3', 'ft3', 'bf', 'mbf', 'hft3', 'hm3', 'ht'], 'type': 'string', 'description': 'Source unit'}, 'price': {'type': 'number', 'minimum': 0, 'description': 'Optional price per price_per unit'}, 'value': {'type': 'number', 'description': 'Quantity in the source unit', 'exclusiveMinimum': 0}, 'price_per': {'enum': ['m3', 'ft3', 'bf', 'mbf', 'hft3', 'hm3', 'ht'], 'type': 'string', 'default': 'mbf'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['wall_width_m', 'wall_height_m'], 'properties': {'openings_m2': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Area of doors/windows to subtract'}, 'roll_preset': {'enum': ['us-single', 'us-double', 'eu', 'commercial54'], 'type': 'string'}, 'roll_width_m': {'type': 'number', 'minimum': 0, 'description': 'Custom roll width (overrides preset)'}, 'wall_width_m': {'type': 'number', 'exclusiveMinimum': 0}, 'roll_length_m': {'type': 'number', 'minimum': 0, 'description': 'Custom roll length (overrides preset)'}, 'wall_height_m': {'type': 'number', 'exclusiveMinimum': 0}, 'pattern_repeat_m': {'type': 'number', 'default': 0, 'minimum': 0, 'description': 'Pattern repeat length'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['temp_c'], 'properties': {'mode': {'enum': ['emc', 'reverse'], 'type': 'string', 'default': 'emc'}, 'branch': {'enum': ['desorption', 'adsorption'], 'type': 'string', 'default': 'desorption'}, 'rh_pct': {'type': 'number', 'minimum': 0, 'description': 'Relative humidity, 0â\x80\x93100 (emc mode)'}, 'temp_c': {'type': 'number', 'description': 'Air temperature, °C', 'exclusiveMinimum': 0}, 'target_mc_pct': {'type': 'number', 'minimum': 0, 'description': 'Target MC % (reverse mode)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['start_mc_pct', 'end_mc_pct', 'dimension_mm', 'direction'], 'properties': {'species': {'type': 'string', 'description': "Species key, e.g. 'white-oak', 'rubberwood'"}, 'direction': {'enum': ['tangential', 'radial', 'volumetric'], 'type': 'string'}, 'end_mc_pct': {'type': 'number', 'description': 'Target MC, %, must be â\x89¤ start_mc_pct', 'exclusiveMinimum': 0}, 'dimension_mm': {'type': 'number', 'description': 'Original dimension in mm (width, thickness, or volume)', 'exclusiveMinimum': 0}, 'start_mc_pct': {'type': 'number', 'description': 'Starting MC, %', 'exclusiveMinimum': 0}, 'custom_fsp_pct': {'type': 'number', 'minimum': 0, 'description': 'Custom FSP %, default 30 (22 for teak)'}, 'custom_shrink_od_pct': {'type': 'number', 'minimum': 0, 'description': 'Custom greenâ\x86\x92OD shrinkage %, used if no species'}}}
Recent tool changes
Similar MCP servers
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
Calcgrid
Runs general-purpose calculators for loans, dates, lunar and solar terms, time zones, units, and a larger catalog of specialized …
Local MCP
Connects AI assistants to Mac email, calendars, reminders, notes, tasks, files, Microsoft 365, Todoist, spreadsheets, and daily b…
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
hopi
Provides read-only calculators, converters, validators, text utilities, encoders, and generators for everyday and technical tasks.
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
mu
Supports personal and collaborative tasks including web browsing, app creation, blogs, bookmarks, discussions, and contact manage…
John's Essentials
Analyzes and converts documents, images, audio, video, archives, data files, and other media formats, with PDF chat and file insp…