API & MCP

Everything a person can do on Finger-Joint Box Generator (laser & CNC), a program or AI agent can do with the same inputs and get the identical result.

HTTP API

Finger-Joint Box Generator (laser & CNC)

Generate a finger-joint (box-joint) box from inside or outside dimensions and the material thickness: closed lid, open tray or sliding lid, a grid of cross-halved dividers, kerf compensation for lasers and dog-bone reliefs for CNC routers. Every joint gets an odd number of equal fingers; the parts are nested onto your laser bed or stock sheet and exported as layered SVG, DXF R12, a 1:1 PDF with a scale bar and, for routers, G-code.

Inputs of Finger-Joint Box Generator (laser & CNC)
FieldTypeDefaultDescription
widthnumber160Width (mm)
depthnumber100Depth (mm)
heightnumber60Height (mm)
dimsselect (inner, outer)"inner"Dimensions are
thicknessnumber3Material thickness (mm). Measure your sheet with calipers: 3 mm plywood is often 2.8–3.2 mm.
fingernumber10Finger width (target, mm). Each joint is divided into an odd number of equal fingers close to this width.
kerfnumber0.15Kerf compensation (mm, 0 = off). The width of material the laser burns away. Find it with the kerf test coupon.
fitnumber0.2Fit clearance for slots and sliding lid (mm)
lidselect (closed, open, sliding)"closed"Lid
columnsinteger1Compartments across the width
rowsinteger1Compartments across the depth
dogbonenumber0Dog-bone reliefs for a router bit of diameter (mm, 0 = off)
sheetWidthnumber0Sheet or laser bed width (mm, 0 = no sheet). With a sheet size the parts are nested onto as many sheets as needed; 0 lays every part out in one drawing.
sheetHeightnumber0Sheet or laser bed height (mm, 0 = no sheet)
spacingnumber4Gap between parts (mm). For CNC routing use at least the cutter diameter.
labelsbooleantruePart names on a separate label layer
paperselect (fit, a3, a4, a5, a6, b5, letter, legal, tabloid, halfletter)"fit"PDF pages
cncselect (none, grbl, linuxcnc, fanuc)"none"CNC G-code
toolDiameternumber3.175Cutter diameter (mm)
feednumber1200Feed (mm/min)
plungenumber300Plunge (mm/min)
stepdownnumber1.5Depth per pass (mm)

Example request

Box with lid, 160 × 100 × 60 mm inside, 3 mm plywood

curl -X POST https://kerfwisefingerjointbox.usefulweb.app/api/v1/calculate -H 'content-type: application/json' -d '{"width":160,"depth":100,"height":60,"thickness":3,"finger":10,"kerf":0.15,"lid":"closed"}'

Every result contains

inputs (normalised, defaults applied), summary, result (validated against the published schema), units, assumptions, sources, warnings, computedAt and links.

MCP (Model Context Protocol)

{
  "mcpServers": {
    "kerfwise-finger-joint-box": { "type": "http", "url": "https://kerfwisefingerjointbox.usefulweb.app/mcp" }
  }
}