Server definition
- Hash
- sha256:00d6075d9d21ce146fb8b969c5848cc3617c70a64ebf22f9bbc13b150d2f01b7
- What it is
- What a remote MCP server returned when asked what it offers: 37 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Equal baluster/spindle spacing for a run: number of balusters, exact gap and positions. Enforces a maximum gap (e.g. the 4-inch / 100 mm sphere code rule).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"baluster_width_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"max_gap_mm": {
"default": 100,
"description": "Maximum allowed gap (100 mm = sphere rule, 102 mm = 4 in)",
"minimum": 0,
"type": "number"
},
"run_mm": {
"description": "Total run length between posts",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"run_mm",
"baluster_width_mm"
],
"type": "object"
},
"name": "baluster_spacing_calculator",
"outputSchema": null
},
{
"description": "Calculate board feet and lumber cost (thickness x width x length / 144 in inches). Accepts multiple boards and an optional price quoted per board foot or per MBF (thousand board feet).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"boards": {
"description": "Boards (dimensions in the chosen unit)",
"items": {
"properties": {
"label": {
"type": "string"
},
"length": {
"exclusiveMinimum": 0,
"type": "number"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"thickness": {
"exclusiveMinimum": 0,
"type": "number"
},
"width": {
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"thickness",
"width",
"length"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"price": {
"description": "Optional price per price_unit",
"minimum": 0,
"type": "number"
},
"price_unit": {
"default": "bf",
"description": "Unit the price is quoted in: single board foot or MBF (1,000 bf)",
"enum": [
"bf",
"mbf"
],
"type": "string"
},
"unit": {
"default": "in",
"description": "Unit for board dimensions",
"enum": [
"in",
"ft",
"mm",
"cm",
"m"
],
"type": "string"
}
},
"required": [
"boards"
],
"type": "object"
},
"name": "board_feet_calculator",
"outputSchema": null
},
{
"description": "Bill-of-materials cost roll-up for furniture: buy quantity = net qty x (1 + waste%, verified presets: S4S lumber 18%, rough 28%, nested panels 10%, hardware 3%), line and total costs, cost per product and a selling price from a target margin (price = cost / (1 - margin)).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"labor_per_product": {
"description": "Direct labour per product",
"minimum": 0,
"type": "number"
},
"lines": {
"items": {
"properties": {
"name": {
"type": "string"
},
"qty": {
"description": "Net quantity per product",
"exclusiveMinimum": 0,
"type": "number"
},
"unit": {
"description": "Unit label (m3, m2, pcs...)",
"type": "string"
},
"unit_cost": {
"description": "Cost per unit",
"exclusiveMinimum": 0,
"type": "number"
},
"waste_pct": {
"default": 0,
"description": "Waste allowance %",
"maximum": 200,
"minimum": 0,
"type": "number"
}
},
"required": [
"qty",
"unit_cost"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"margin_pct": {
"description": "Target margin on selling price, %",
"maximum": 90,
"minimum": 0,
"type": "number"
},
"products": {
"default": 1,
"description": "Products this BOM covers",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"lines"
],
"type": "object"
},
"name": "bom_costing",
"outputSchema": null
},
{
"description": "Packing CBM for cartons: per-line and lot volume (m3), total weight and lot density, with a cube-out / weigh-out verdict against the 40HC balanced density (390 kg/m3 - same presets as container loading).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lines": {
"description": "Carton lines",
"items": {
"properties": {
"count": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"height_cm": {
"exclusiveMinimum": 0,
"type": "number"
},
"length_cm": {
"exclusiveMinimum": 0,
"type": "number"
},
"weight_kg": {
"description": "Gross weight per carton, kg",
"minimum": 0,
"type": "number"
},
"width_cm": {
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"length_cm",
"width_cm",
"height_cm",
"count"
],
"type": "object"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"lines"
],
"type": "object"
},
"name": "cbm_shipment",
"outputSchema": null
},
{
"description": "CNC spindle RPM and feed rate from tool diameter, flute count, chip load and cutting speed. Works for routers and mills, metric and imperial.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"chip_load": {
"description": "Chip load per tooth (mm or inch)",
"exclusiveMinimum": 0,
"type": "number"
},
"cutting_speed": {
"description": "Cutting speed Vc (m/min or ft/min)",
"exclusiveMinimum": 0,
"type": "number"
},
"flutes": {
"default": 2,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"machine": {
"default": "router",
"enum": [
"router",
"mill"
],
"type": "string"
},
"tool_diameter": {
"description": "Cutter diameter (mm or inch)",
"exclusiveMinimum": 0,
"type": "number"
},
"unit": {
"enum": [
"metric",
"imperial"
],
"type": "string"
}
},
"required": [
"unit",
"tool_diameter",
"chip_load",
"cutting_speed"
],
"type": "object"
},
"name": "cnc_feeds_speeds",
"outputSchema": null
},
{
"description": "How many uniform cartons fit in a shipping container before cube-out or weigh-out. Presets: 20GP (33.2 CBM nominal, 28,200 kg payload), 40GP (67.7 CBM, 26,700 kg), 40HC (76.4 CBM, 68 usable, 26,500 kg) — all editable. Returns max pieces by volume vs weight, the binding limit, balanced density (kg/m3) and containers needed for a planned quantity.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cbm_per_piece": {
"description": "Volume per carton in CBM (alternative to dimensions)",
"minimum": 0,
"type": "number"
},
"container": {
"default": "40hc",
"enum": [
"20gp",
"40gp",
"40hc",
"custom"
],
"type": "string"
},
"kg_per_piece": {
"description": "Mass per carton (kg)",
"exclusiveMinimum": 0,
"type": "number"
},
"payload_kg": {
"description": "Override max payload (kg); route limits are often lower than the container maximum",
"minimum": 0,
"type": "number"
},
"piece_h_m": {
"description": "Carton height (m)",
"minimum": 0,
"type": "number"
},
"piece_l_m": {
"description": "Carton length (m)",
"minimum": 0,
"type": "number"
},
"piece_w_m": {
"description": "Carton width (m)",
"minimum": 0,
"type": "number"
},
"planned_qty": {
"description": "Planned number of cartons (returns containers needed)",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"usable_cbm": {
"description": "Override usable/stowable volume (CBM)",
"minimum": 0,
"type": "number"
}
},
"required": [
"kg_per_piece"
],
"type": "object"
},
"name": "container_loading",
"outputSchema": null
},
{
"description": "Cutting speed from spindle speed: Vc = pi*D*n/1000 metric (m/min), SFM = pi*D*n/12 imperial. Always also returns the same speed converted to the other unit system. Includes a web_url with the calculation prefilled.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"diameter": {
"description": "Tool/workpiece diameter (metric: mm, imperial: inch)",
"exclusiveMinimum": 0,
"type": "number"
},
"rpm": {
"description": "Spindle speed in revolutions per minute",
"exclusiveMinimum": 0,
"type": "number"
},
"unit": {
"default": "metric",
"description": "Unit system",
"enum": [
"metric",
"imperial"
],
"type": "string"
}
},
"required": [
"diameter",
"rpm"
],
"type": "object"
},
"name": "cutting_speed_calculator",
"outputSchema": null
},
{
"description": "Resize an embroidery design file (PES or DST) by a scale percentage. Returns stitch stats before/after, a density safety verdict (safe within +/-15%) and the resized file as base64.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"file_base64": {
"description": "Base64-encoded PES or DST file",
"minLength": 4,
"type": "string"
},
"scale_percent": {
"description": "Target scale in percent, e.g. 80 for -20%",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"file_base64",
"scale_percent"
],
"type": "object"
},
"name": "embroidery_resize",
"outputSchema": null
},
{
"description": "Convert firewood volume between cord (128 ft3), stere/Raummeter (stacked m3), solid m3 (Festmeter), loose m3 and ft3, with optional weight estimate by wood species (dry/fresh).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"from": {
"description": "Input unit: stere = 1 stacked m3, cord = 128 ft3, loose = bulk m3",
"enum": [
"stere",
"cord",
"loose",
"ft3"
],
"type": "string"
},
"loose_factor": {
"default": 1.4,
"description": "Loose m3 per stacked m3 (1.35-1.55 typical)",
"exclusiveMinimum": 1,
"type": "number"
},
"moisture": {
"default": "dry",
"description": "fresh = 1.5x weight",
"enum": [
"dry",
"fresh"
],
"type": "string"
},
"solid_factor": {
"default": 0.7,
"description": "Solid m3 per stacked m3 (Festmeter/Raummeter, 0.65-0.75 typical) - the weight runs off this",
"exclusiveMinimum": 0,
"maximum": 1,
"type": "number"
},
"species": {
"description": "Optional species key for weight",
"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"
},
"value": {
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"value",
"from"
],
"type": "object"
},
"name": "firewood_calculator",
"outputSchema": null
},
{
"description": "Laminate/vinyl plank takeoff: planks, boxes and cost with offcut reuse between rows (best-fit), expansion gap, layout waste presets and direction.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"direction": {
"default": "length",
"description": "Plank direction",
"enum": [
"length",
"width"
],
"type": "string"
},
"expansion_mm": {
"default": 10,
"minimum": 0,
"type": "number"
},
"layout": {
"default": "staggered",
"enum": [
"straight",
"staggered",
"herringbone",
"diagonal"
],
"type": "string"
},
"min_offcut_mm": {
"default": 300,
"description": "Offcuts shorter than this are not reused",
"minimum": 0,
"type": "number"
},
"plank_length_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"plank_width_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"planks_per_box": {
"default": 8,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"price_per_box": {
"minimum": 0,
"type": "number"
},
"price_per_m2": {
"minimum": 0,
"type": "number"
},
"room_length_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"room_width_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"waste_percent": {
"description": "Overrides the layout default",
"minimum": 0,
"type": "number"
}
},
"required": [
"room_width_m",
"room_length_m",
"plank_width_mm",
"plank_length_mm"
],
"type": "object"
},
"name": "flooring_calculator",
"outputSchema": null
},
{
"description": "Cut-to-size glass cost and weight estimate: net area with optional waste allowance, weight (2.5 kg/m2 per mm of thickness), material cost from your price per m2, optional polished-edge work per running metre, total and per-piece cost. Includes a web_url with the quote prefilled.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"edge_price_per_m": {
"default": 0,
"description": "Polished-edge work price per running metre",
"minimum": 0,
"type": "number"
},
"height_mm": {
"description": "Pane height in mm",
"exclusiveMinimum": 0,
"type": "number"
},
"price_per_m2": {
"description": "Glass price per square metre",
"exclusiveMinimum": 0,
"type": "number"
},
"quantity": {
"default": 1,
"description": "Number of identical panes",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"thickness_mm": {
"description": "Glass thickness in mm (2-25)",
"exclusiveMinimum": 0,
"type": "number"
},
"waste_pct": {
"default": 0,
"description": "Cutting-waste allowance added on top of net area (%)",
"maximum": 50,
"minimum": 0,
"type": "number"
},
"width_mm": {
"description": "Pane width in mm",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"width_mm",
"height_mm",
"thickness_mm",
"price_per_m2"
],
"type": "object"
},
"name": "glass_price_calculator",
"outputSchema": null
},
{
"description": "Wood adhesive quantity: bond area x spread (g/m2, TDS presets like PVAc D3 175, EGP 250, finger-joint PUR 530) x application faces x waste allowance. Also computes bond area for edge-glued panels (joints from board width) and face lamination lay-ups.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"bond_area_m2": {
"description": "Total bond-line area, m2",
"minimum": 0,
"type": "number"
},
"density_gcm3": {
"description": "Glue density g/cm3 to get litres (PVAc ~1.08)",
"minimum": 0,
"type": "number"
},
"edge_panel": {
"description": "Edge-glued panel dimensions instead of a direct area",
"properties": {
"board_width_mm": {
"description": "Sawn lamella width - joint count = ceil(width/board)-1",
"exclusiveMinimum": 0,
"type": "number"
},
"panel_length_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"panel_thickness_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"panel_width_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"panels": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"panel_length_mm",
"panel_width_mm",
"board_width_mm",
"panel_thickness_mm"
],
"type": "object"
},
"face_lam": {
"description": "Face lamination lay-up instead of a direct area",
"properties": {
"layers": {
"maximum": 9007199254740991,
"minimum": 2,
"type": "integer"
},
"length_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"sets": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"width_mm": {
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"length_mm",
"width_mm",
"layers"
],
"type": "object"
},
"faces": {
"default": "1",
"description": "1 = single-face, 2 = both mating faces",
"enum": [
"1",
"2"
],
"type": "string"
},
"price_per_kg": {
"description": "Glue price per kg",
"minimum": 0,
"type": "number"
},
"spread_gsm": {
"description": "Spread rate g/m2 (PVAc D3 one face ~175, EGP ~250, finger PUR ~530)",
"exclusiveMinimum": 0,
"type": "number"
},
"waste_pct": {
"default": 5,
"description": "Application/squeeze-out waste, %",
"maximum": 100,
"minimum": 0,
"type": "number"
}
},
"required": [
"spread_gsm"
],
"type": "object"
},
"name": "glue_consumption",
"outputSchema": null
},
{
"description": "Weight of a roundwood/log batch at any moisture content: W = volume x basic density x (1 + MC/100), per USDA Wood Handbook 2021 Ch.4. Presets for 14 verified species (acacia, rubberwood, eucalyptus, oak, teak, spruce...) or a custom basic density. Returns oven-dry mass, water mass and tonnes.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"basic_density_kg_m3": {
"description": "Custom basic density (oven-dry kg per green m3); overrides the species preset",
"minimum": 0,
"type": "number"
},
"mc_pct": {
"description": "Moisture content % oven-dry basis; defaults to the species' freshly-felled MC (~73% acacia, ~75% rubberwood)",
"minimum": 0,
"type": "number"
},
"species": {
"description": "Species key, e.g. acacia-mangium, rubberwood, white-oak, teak",
"type": "string"
},
"volume_m3": {
"description": "Roundwood volume in m3 (Hoppus true, Huber or JAS volume)",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"volume_m3"
],
"type": "object"
},
"name": "green_log_weight",
"outputSchema": null
},
{
"description": "Hoppus (quarter-girth) volume of round logs from mid-length circumference and length: (C/4)^2 x L. Returns Hoppus volume, true volume (x 4/pi), Hoppus tons (50 h ft3) and a board-feet approximation, with optional quantity and value per Hoppus unit.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"circumference": {
"description": "Circumference at mid-length (in or cm)",
"exclusiveMinimum": 0,
"type": "number"
},
"length": {
"description": "Log length (ft or m)",
"exclusiveMinimum": 0,
"type": "number"
},
"price_per_hoppus_unit": {
"description": "Optional value per Hoppus ft3/m3",
"minimum": 0,
"type": "number"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"unit": {
"default": "imperial",
"description": "imperial: circumference in inches, length in feet; metric: cm and m",
"enum": [
"imperial",
"metric"
],
"type": "string"
}
},
"required": [
"circumference",
"length"
],
"type": "object"
},
"name": "hoppus_volume",
"outputSchema": null
},
{
"description": "Japanese Agricultural Standard (JAS) log scale: official diameter rounding (floor to 1 cm below 14 cm, even 2 cm at 14 cm and above), oval-log averaging, optional +2 cm ovality adjustment and the length allowance for logs over 6 m. Volume per log and totals in m3.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"diameter_long_cm": {
"description": "Long-axis diameter for oval logs (cm)",
"minimum": 0,
"type": "number"
},
"diameter_small_cm": {
"description": "Short-axis diameter in cm",
"exclusiveMinimum": 0,
"type": "number"
},
"length_m": {
"description": "Log length in meters",
"exclusiveMinimum": 0,
"type": "number"
},
"oval_adjust": {
"default": false,
"description": "Add the +2 cm ovality adjustment",
"type": "boolean"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"diameter_small_cm",
"length_m"
],
"type": "object"
},
"name": "jas_log_scale",
"outputSchema": null
},
{
"description": "Kiln charge capacity: wood volume per batch (AH-188 / TechDrying). V_wood = D×R×C × t/(t+s) × f where t=board thickness, s=sticker thickness, f=fill factor (0.85–0.95). Returns wood volume in m³ and board feet (1 m³ = 423.77 BF).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"board_thickness_mm": {
"description": "Average board thickness, mm",
"exclusiveMinimum": 0,
"type": "number"
},
"fill_factor": {
"description": "Stack fill factor 0–1, default 0.9",
"minimum": 0,
"type": "number"
},
"height_m": {
"description": "Stack height, m",
"exclusiveMinimum": 0,
"type": "number"
},
"length_m": {
"description": "Stack length, m",
"exclusiveMinimum": 0,
"type": "number"
},
"sticker_thickness_mm": {
"description": "Sticker thickness, mm (default 19)",
"exclusiveMinimum": 0,
"type": "number"
},
"width_m": {
"description": "Stack width, m",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"length_m",
"width_m",
"height_m",
"board_thickness_mm",
"sticker_thickness_mm"
],
"type": "object"
},
"name": "kiln_capacity",
"outputSchema": null
},
{
"description": "Optimize 1D cutting plans for bars, pipes and profiles (linear cutting stock problem, best-fit decreasing heuristic). Returns bars used, per-bar cut lists with positions, total waste and unplaced parts. A web_url with the plan prefilled is included for a visual SVG diagram.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kerf": {
"default": 0,
"description": "Saw blade width consumed by each cut",
"minimum": 0,
"type": "number"
},
"parts": {
"description": "Parts to cut",
"items": {
"properties": {
"label": {
"description": "Optional part name",
"type": "string"
},
"length": {
"description": "Cut length",
"exclusiveMinimum": 0,
"type": "number"
},
"qty": {
"default": 1,
"description": "How many of this part",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"length"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"stock_count": {
"default": 1,
"description": "How many stock bars are available",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"stock_length": {
"description": "Length of one stock bar",
"exclusiveMinimum": 0,
"type": "number"
},
"trim": {
"default": 0,
"description": "Unusable trim at bar ends",
"minimum": 0,
"type": "number"
},
"unit": {
"description": "Unit for all lengths",
"enum": [
"mm",
"cm",
"m",
"in",
"ft"
],
"type": "string"
}
},
"required": [
"unit",
"stock_length",
"parts"
],
"type": "object"
},
"name": "linear_cutting_optimizer",
"outputSchema": null
},
{
"description": "Cubic volume of a log by classical formula: Huber (mid diameter only), Smalian (both end diameters) or Newton (all three, most accurate). Metric (cm, m) or imperial (in, ft); returns volume in m3 and ft3.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"diameter_large": {
"description": "Large-end diameter (smalian/newton)",
"minimum": 0,
"type": "number"
},
"diameter_mid": {
"description": "Mid-length diameter (huber/newton)",
"minimum": 0,
"type": "number"
},
"diameter_small": {
"description": "Small-end diameter (smalian/newton)",
"minimum": 0,
"type": "number"
},
"length": {
"exclusiveMinimum": 0,
"type": "number"
},
"method": {
"default": "huber",
"enum": [
"huber",
"smalian",
"newton"
],
"type": "string"
},
"unit": {
"default": "metric",
"description": "metric: diameters in cm, length in m; imperial: in and ft",
"enum": [
"metric",
"imperial"
],
"type": "string"
}
},
"required": [
"length"
],
"type": "object"
},
"name": "log_volume",
"outputSchema": null
},
{
"description": "Weight of lumber by species, dimensions, quantity and moisture (dry/fresh), using species density tables. Optional custom density in kg/m3.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"custom_density_kg_m3": {
"description": "Overrides species density",
"minimum": 0,
"type": "number"
},
"length_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"moisture": {
"default": "dry",
"description": "fresh (green) wood uses 1.5x density (+50% weight)",
"enum": [
"dry",
"fresh"
],
"type": "string"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"species": {
"description": "Wood species key",
"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"
},
"thickness_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"width_mm": {
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"species",
"thickness_mm",
"width_mm",
"length_m"
],
"type": "object"
},
"name": "lumber_weight_calculator",
"outputSchema": null
},
{
"description": "Cumulative yield through a wood production chain (sawing -> drying -> machining -> finishing). Multiplies stage yields, shows per-stage loss and computes the roundwood volume needed for a target finished volume.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"stages": {
"description": "Production stages in process order",
"items": {
"properties": {
"label": {
"description": "Optional stage name",
"type": "string"
},
"yield_pct": {
"description": "Share of stage input that becomes usable output, %",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"yield_pct"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"target_output_m3": {
"description": "Finished volume wanted, m3 (reverse mode)",
"minimum": 0,
"type": "number"
}
},
"required": [
"stages"
],
"type": "object"
},
"name": "manufacturing_yield",
"outputSchema": null
},
{
"description": "Weight of metal stock per profile: pipe/tube (OD + wall), round bar, square/rectangular tube, flat bar, angle, beam/I-beam. Materials: steel, stainless, aluminum, copper, brass.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"height_mm": {
"description": "rect-tube/beam: height",
"minimum": 0,
"type": "number"
},
"length_m": {
"description": "Length in meters",
"exclusiveMinimum": 0,
"type": "number"
},
"material": {
"enum": [
"steel",
"stainless",
"aluminum",
"copper",
"brass"
],
"type": "string"
},
"od_mm": {
"description": "pipe/round-bar: outer diameter",
"minimum": 0,
"type": "number"
},
"profile": {
"enum": [
"pipe",
"round-bar",
"square-tube",
"rect-tube",
"flat-bar",
"angle",
"beam"
],
"type": "string"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"wall_mm": {
"description": "pipe/tubes: wall thickness",
"minimum": 0,
"type": "number"
},
"web_mm": {
"description": "beam: web thickness",
"minimum": 0,
"type": "number"
},
"width_mm": {
"description": "rect-tube/flat-bar/angle/beam: width",
"minimum": 0,
"type": "number"
}
},
"required": [
"profile",
"material",
"length_m"
],
"type": "object"
},
"name": "metal_weight_calculator",
"outputSchema": null
},
{
"description": "Miter angles three ways: corner mode (any corner angle between two pieces), sides mode (regular polygon with N sides), crown mode (miter + bevel for crown molding at a spring angle).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"corner_angle_deg": {
"description": "corner mode: interior corner angle, e.g. 90 or 135",
"exclusiveMaximum": 180,
"exclusiveMinimum": 0,
"type": "number"
},
"mode": {
"description": "Calculation mode",
"enum": [
"corner",
"sides",
"crown"
],
"type": "string"
},
"sides": {
"description": "sides mode: number of sides of the frame/polygon",
"maximum": 120,
"minimum": 3,
"type": "integer"
},
"spring_angle_deg": {
"description": "crown mode: spring angle, typically 38 or 45",
"exclusiveMaximum": 90,
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"mode"
],
"type": "object"
},
"name": "miter_angle_calculator",
"outputSchema": null
},
{
"description": "Wood moisture content (WH-2021 Ch.4 Eq. 4-1..4-4). Two modes: (1) sample-based MC_od/MC_wb from wet+dry masses; (2) drying outcome — mass + water lost when going from start MC to target MC. Optional Gb (kg/m³) returns MCmax and MCsink. Basis 'od' (oven-dry, industry default) or 'wb' (wet).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"basic_density_kg_m3": {
"description": "Basic density kg/m³ for MCmax/MCsink (max mode)",
"minimum": 0,
"type": "number"
},
"basis": {
"default": "od",
"enum": [
"od",
"wb"
],
"type": "string"
},
"dry_mass": {
"description": "Oven-dry mass of sample (sample mode)",
"minimum": 0,
"type": "number"
},
"end_mc_pct": {
"description": "Target MC after drying, %",
"minimum": 0,
"type": "number"
},
"mode": {
"default": "sample",
"enum": [
"sample",
"drying",
"max"
],
"type": "string"
},
"start_mass": {
"description": "Mass at start of drying (drying mode)",
"minimum": 0,
"type": "number"
},
"start_mc_pct": {
"description": "MC at start of drying, %",
"minimum": 0,
"type": "number"
},
"wet_mass": {
"description": "Wet mass of sample (sample mode)",
"minimum": 0,
"type": "number"
}
},
"type": "object"
},
"name": "moisture_content",
"outputSchema": null
},
{
"description": "Wood finishing paint quantity. Technical route: theoretical coverage = 10 x %volume solids / DFT(um), multiplied by transfer efficiency (conventional spray 30-35%, airless ~50%, HVLP ~65-90%, brush/roller ~90%); or a data-sheet coverage in m2/L. Adds an optional extra % for carved/3D surfaces.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"area_m2": {
"description": "Surface to coat, m2 (flat projected area)",
"exclusiveMinimum": 0,
"type": "number"
},
"coats": {
"description": "Number of coats",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"coverage_m2_per_l": {
"description": "Data-sheet coverage m2/L (mode A)",
"minimum": 0,
"type": "number"
},
"dft_microns": {
"description": "Target dry film thickness um (mode B)",
"minimum": 0,
"type": "number"
},
"price_per_l": {
"description": "Coating price per litre",
"minimum": 0,
"type": "number"
},
"shape_extra_pct": {
"default": 0,
"description": "Extra % for 3D surfaces",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"solids_pct": {
"description": "Volume solids % (mode B)",
"minimum": 0,
"type": "number"
},
"transfer_eff_pct": {
"description": "Transfer efficiency % (mode B; HVLP ~70)",
"minimum": 0,
"type": "number"
}
},
"required": [
"area_m2",
"coats"
],
"type": "object"
},
"name": "paint_coverage",
"outputSchema": null
},
{
"description": "Rebar weight takeoff (d2/162 rule): total length, weight in kg and bars per tonne for a list of rebar lines. Supports metric mm bars and US # sizes as diameters.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lines": {
"description": "Rebar lines",
"items": {
"properties": {
"diameter_mm": {
"description": "Bar diameter, e.g. 12 or 15.875 (#5)",
"exclusiveMinimum": 0,
"type": "number"
},
"length_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": [
"diameter_mm",
"length_m"
],
"type": "object"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"lines"
],
"type": "object"
},
"name": "rebar_takeoff",
"outputSchema": null
},
{
"description": "Rough sizing — convert between finished (planed, kiln-dried) and rough-sawn dimensions before drying and planing. Adds planing allowance (default 2.5 mm/face) + saw kerf (default 2.2 mm band) and applies WH-2021 Eq. 4-9 shrinkage. Direction: tangential (board width) or radial (board thickness).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"custom_fsp_pct": {
"description": "Custom FSP %, default 30",
"minimum": 0,
"type": "number"
},
"custom_shrink_od_pct": {
"description": "Custom S_od % (used if no species)",
"minimum": 0,
"type": "number"
},
"direction": {
"enum": [
"tangential",
"radial"
],
"type": "string"
},
"finished_mc_pct": {
"description": "Target finished MC, %",
"exclusiveMinimum": 0,
"type": "number"
},
"finished_mm": {
"description": "Finished dimension mm (forward mode)",
"minimum": 0,
"type": "number"
},
"kerf_mm": {
"description": "Saw kerf, mm (default 2.2 band)",
"minimum": 0,
"type": "number"
},
"mode": {
"default": "forward",
"enum": [
"forward",
"reverse"
],
"type": "string"
},
"planing_mm": {
"description": "Planing allowance per face, mm (default 2.5)",
"minimum": 0,
"type": "number"
},
"rough_mm": {
"description": "Rough-sawn dimension mm (reverse mode)",
"minimum": 0,
"type": "number"
},
"sawn_mc_pct": {
"description": "MC at which the wood is sawn, %",
"exclusiveMinimum": 0,
"type": "number"
},
"species": {
"description": "Species key for shrinkage (e.g. 'white-oak')",
"type": "string"
}
},
"required": [
"finished_mc_pct",
"sawn_mc_pct",
"direction"
],
"type": "object"
},
"name": "rough_sizing",
"outputSchema": null
},
{
"description": "Spindle speed (RPM) from cutting speed: n = Vc*1000/(pi*D) metric, n = Vc*12/(pi*D) imperial. Metric takes diameter in mm and Vc in m/min; imperial takes diameter in inches and Vc in SFM. Includes a web_url with the calculation prefilled.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cutting_speed": {
"description": "Cutting speed (metric: m/min, imperial: SFM)",
"exclusiveMinimum": 0,
"type": "number"
},
"diameter": {
"description": "Tool/workpiece diameter (metric: mm, imperial: inch)",
"exclusiveMinimum": 0,
"type": "number"
},
"unit": {
"default": "metric",
"description": "Unit system",
"enum": [
"metric",
"imperial"
],
"type": "string"
}
},
"required": [
"diameter",
"cutting_speed"
],
"type": "object"
},
"name": "rpm_calculator",
"outputSchema": null
},
{
"description": "Sawmill recovery rate (lumber recovery factor): sawn volume out / roundwood volume in, benchmarked against FAO/EU/SE-Asia reference ranges. Also computes log-rule overrun/underrun: (actual BF - rule BF) / rule BF — Doyle underestimates small logs, so overrun is usually positive.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"actual_bf": {
"description": "Optional: board feet actually sawn — enables the overrun calculation",
"minimum": 0,
"type": "number"
},
"input_volume_m3": {
"description": "Roundwood volume in (m3)",
"exclusiveMinimum": 0,
"type": "number"
},
"log_rule_bf": {
"description": "Optional: board feet predicted by the log rule (Doyle/Scribner/International)",
"minimum": 0,
"type": "number"
},
"output_volume_m3": {
"description": "Sawn lumber volume out (m3)",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"input_volume_m3",
"output_volume_m3"
],
"type": "object"
},
"name": "sawmill_recovery",
"outputSchema": null
},
{
"description": "Optimize 2D guillotine cutting plans for plywood, MDF, glass, sheet metal (2D nesting with kerf, per-part rotation lock for grain direction, optional sheet trim and multiple stock sizes). Returns sheets used, piece positions, utilization, estimated cut length/count and unplaced pieces. Includes a web_url with the plan prefilled for a visual layout diagram.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kerf": {
"default": 0,
"description": "Blade/saw width consumed by each cut",
"minimum": 0,
"type": "number"
},
"pieces": {
"description": "Pieces to cut",
"items": {
"properties": {
"height": {
"description": "Piece height",
"exclusiveMinimum": 0,
"type": "number"
},
"label": {
"description": "Optional piece name",
"type": "string"
},
"qty": {
"default": 1,
"description": "How many of this piece",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"rotatable": {
"default": true,
"description": "Allow 90-degree rotation (false = grain lock)",
"type": "boolean"
},
"width": {
"description": "Piece width",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"stock_count": {
"default": 1,
"description": "How many sheets are available",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"stock_height": {
"description": "Sheet height",
"exclusiveMinimum": 0,
"type": "number"
},
"stock_width": {
"description": "Sheet width",
"exclusiveMinimum": 0,
"type": "number"
},
"stocks": {
"description": "Optional mixed stock sizes; replaces stock_width/stock_height/stock_count when given",
"items": {
"properties": {
"count": {
"description": "Sheets available of this size",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"height": {
"description": "Sheet height",
"exclusiveMinimum": 0,
"type": "number"
},
"width": {
"description": "Sheet width",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"width",
"height",
"count"
],
"type": "object"
},
"maxItems": 6,
"type": "array"
},
"trim_x": {
"default": 0,
"description": "Symmetric trim removed from left/right sheet edges (damaged edges)",
"minimum": 0,
"type": "number"
},
"trim_y": {
"default": 0,
"description": "Symmetric trim removed from top/bottom sheet edges",
"minimum": 0,
"type": "number"
},
"unit": {
"description": "Unit for all dimensions",
"enum": [
"mm",
"cm",
"m",
"in",
"ft"
],
"type": "string"
}
},
"required": [
"unit",
"stock_width",
"stock_height",
"pieces"
],
"type": "object"
},
"name": "sheet_cutting_optimizer",
"outputSchema": null
},
{
"description": "Convert sheet metal gauge to thickness (mm) or thickness to gauge, and compute sheet weight for steel, stainless, aluminum or galvanized steel.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"gauge": {
"description": "gauge mode: gauge number, e.g. 16",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"length_mm": {
"default": 2000,
"minimum": 0,
"type": "number"
},
"material": {
"default": "steel",
"enum": [
"steel",
"stainless",
"aluminum",
"galvanized"
],
"type": "string"
},
"mode": {
"default": "gauge",
"description": "gauge: from gauge number; mm: from thickness",
"enum": [
"gauge",
"mm"
],
"type": "string"
},
"qty": {
"default": 1,
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"thickness_mm": {
"description": "mm mode: thickness in mm",
"minimum": 0,
"type": "number"
},
"width_mm": {
"default": 1000,
"minimum": 0,
"type": "number"
}
},
"type": "object"
},
"name": "sheet_metal_gauge",
"outputSchema": null
},
{
"description": "Stowage factor SF = cargo volume (m3) / cargo mass (tonnes), with classification against the IMO CSS Code Table 4.1 reference ranges for wood cargoes (sawn timber, tropical logs, plywood...).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tonnes": {
"description": "Total cargo mass in metric tonnes",
"exclusiveMinimum": 0,
"type": "number"
},
"volume_m3": {
"description": "Total cargo volume in cubic metres",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"volume_m3",
"tonnes"
],
"type": "object"
},
"name": "stowage_factor",
"outputSchema": null
},
{
"description": "Tiles, boxes and cost for a room: room and tile dimensions, grout width, waste factor by layout pattern (straight, offset, diagonal, herringbone...), optional box size and prices.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"box_size": {
"default": 10,
"description": "Tiles per box",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"grout_mm": {
"default": 3,
"minimum": 0,
"type": "number"
},
"layout": {
"default": "straight",
"description": "Layout pattern (sets default waste factor)",
"enum": [
"straight",
"offset",
"diagonal",
"herringbone",
"large-format",
"natural-stone"
],
"type": "string"
},
"price_per_box": {
"minimum": 0,
"type": "number"
},
"price_per_m2": {
"minimum": 0,
"type": "number"
},
"room_length_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"room_width_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"tile_length_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"tile_width_mm": {
"exclusiveMinimum": 0,
"type": "number"
},
"waste_percent": {
"description": "Overrides the layout default",
"minimum": 0,
"type": "number"
}
},
"required": [
"room_width_m",
"room_length_m",
"tile_width_mm",
"tile_length_mm"
],
"type": "object"
},
"name": "tile_calculator",
"outputSchema": null
},
{
"description": "Allowable load on a simply supported rectangular timber beam (planning estimate, Eurocode 5 conventions, EN 338 grades C16-D40/D24-D40). Returns allowable UDL and center point load (gross and net of self-weight), governing mode (bending vs deflection at L/300), utilization, section properties. NOT a structural design - verify with an engineer. Includes a web_url with the beam prefilled.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"grade": {
"description": "Timber grade (EN 338)",
"enum": [
"C16",
"C18",
"C24",
"C30",
"C35",
"C40",
"D24",
"D30",
"D40"
],
"type": "string"
},
"height_mm": {
"description": "Beam depth h in mm (strong axis)",
"exclusiveMinimum": 0,
"type": "number"
},
"load_type": {
"default": "udl",
"description": "Load type of interest",
"enum": [
"udl",
"point"
],
"type": "string"
},
"span_mm": {
"description": "Clear span between supports in mm",
"exclusiveMinimum": 0,
"type": "number"
},
"width_mm": {
"description": "Beam width b in mm",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"span_mm",
"width_mm",
"height_mm",
"grade"
],
"type": "object"
},
"name": "timber_beam_capacity",
"outputSchema": null
},
{
"description": "Convert timber quantities between m3, ft3, board feet, MBF, Hoppus ft3, Hoppus m3 and Hoppus tons, and translate a price quoted in any unit into $/m3 and $/MBF (1 MBF = 2.3597 m3).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"from": {
"description": "Source unit",
"enum": [
"m3",
"ft3",
"bf",
"mbf",
"hft3",
"hm3",
"ht"
],
"type": "string"
},
"price": {
"description": "Optional price per price_per unit",
"minimum": 0,
"type": "number"
},
"price_per": {
"default": "mbf",
"enum": [
"m3",
"ft3",
"bf",
"mbf",
"hft3",
"hm3",
"ht"
],
"type": "string"
},
"qty": {
"default": 1,
"description": "Multiplier (number of lots)",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"value": {
"description": "Quantity in the source unit",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"value",
"from"
],
"type": "object"
},
"name": "timber_unit_converter",
"outputSchema": null
},
{
"description": "Wallpaper rolls needed for a wall, accounting for pattern repeat and openings. Use a standard roll preset (eu, us-single, us-double, commercial54) or custom roll dimensions.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"openings_m2": {
"default": 0,
"description": "Area of doors/windows to subtract",
"minimum": 0,
"type": "number"
},
"pattern_repeat_m": {
"default": 0,
"description": "Pattern repeat length",
"minimum": 0,
"type": "number"
},
"roll_length_m": {
"description": "Custom roll length (overrides preset)",
"minimum": 0,
"type": "number"
},
"roll_preset": {
"enum": [
"us-single",
"us-double",
"eu",
"commercial54"
],
"type": "string"
},
"roll_width_m": {
"description": "Custom roll width (overrides preset)",
"minimum": 0,
"type": "number"
},
"wall_height_m": {
"exclusiveMinimum": 0,
"type": "number"
},
"wall_width_m": {
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"wall_width_m",
"wall_height_m"
],
"type": "object"
},
"name": "wallpaper_calculator",
"outputSchema": null
},
{
"description": "Equilibrium moisture content (EMC) from temperature and RH using the Hailwood–Horrobin sorption model (Simpson 1973 coefficients, desorption branch — WH-2021 Ch.4 Table 4-2). Optional reverse mode: target MC → required RH at the given temperature.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"branch": {
"default": "desorption",
"enum": [
"desorption",
"adsorption"
],
"type": "string"
},
"mode": {
"default": "emc",
"enum": [
"emc",
"reverse"
],
"type": "string"
},
"rh_pct": {
"description": "Relative humidity, 0–100 (emc mode)",
"minimum": 0,
"type": "number"
},
"target_mc_pct": {
"description": "Target MC % (reverse mode)",
"minimum": 0,
"type": "number"
},
"temp_c": {
"description": "Air temperature, °C",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"temp_c"
],
"type": "object"
},
"name": "wood_emc",
"outputSchema": null
},
{
"description": "Wood shrinkage from a start MC to an end MC (WH-2021 Eq. 4-9: S_x = S_od × (1 − x/FSP)). Direction: tangential (board width) or radial (board thickness) or volumetric. Picks a species from the wood-species table (16 verified species) or accepts custom S_od + FSP. MC is clamped to FSP — above FSP wood doesn't change dimension.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"custom_fsp_pct": {
"description": "Custom FSP %, default 30 (22 for teak)",
"minimum": 0,
"type": "number"
},
"custom_shrink_od_pct": {
"description": "Custom green→OD shrinkage %, used if no species",
"minimum": 0,
"type": "number"
},
"dimension_mm": {
"description": "Original dimension in mm (width, thickness, or volume)",
"exclusiveMinimum": 0,
"type": "number"
},
"direction": {
"enum": [
"tangential",
"radial",
"volumetric"
],
"type": "string"
},
"end_mc_pct": {
"description": "Target MC, %, must be ≤ start_mc_pct",
"exclusiveMinimum": 0,
"type": "number"
},
"species": {
"description": "Species key, e.g. 'white-oak', 'rubberwood'",
"type": "string"
},
"start_mc_pct": {
"description": "Starting MC, %",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"start_mc_pct",
"end_mc_pct",
"dimension_mm",
"direction"
],
"type": "object"
},
"name": "wood_shrinkage",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:00d6075d9d21ce146fb8b969c5848cc3617c70a64ebf22f9bbc13b150d2f01b7 | sha256sum