Use it from your AI assistant

Ask your AI assistant to do the cutting list

Plug this optimiser into ChatGPT, Claude or any assistant that takes connectors, and then describe the job in your own words. The assistant works it out with our real optimiser — the same engine this page and our workshop use — instead of guessing.

Why it matters: left to itself an assistant estimates boards by dividing areas. That answer is always too low, because offcuts are the wrong shape. Connected to this, it packs the actual rectangles with the saw kerf and the grain direction, and gives you a number you can order against.

Connect it

Anything that asks for a connector URL (ChatGPT custom connectors, Claude web and mobile, most MCP clients) — paste this and leave the key blank:

https://cut.uniboards.co.uk/v2/mcp

Claude Code — one command:

claude mcp add --transport http uniboards-cut https://cut.uniboards.co.uk/v2/mcp

Claude Desktop — it speaks stdio, so it reaches an HTTP server through the mcp-remote bridge. In claude_desktop_config.json:

{
  "mcpServers": {
    "uniboards-cut": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://cut.uniboards.co.uk/v2/mcp"
      ]
    }
  }
}

Then quit Claude Desktop and open it again — the file is read at start.

Check it works

Ask your assistant: "list the tools from uniboards-cut". You should get twelve — six about the cut list: optimise_cut_list, read_cut_list, list_materials, export_cut_plan, price_cut_plan, sheet_sizes; and six about the machine: make_machine_program, make_sheet_program, read_machine_program, shaker_door, shape_from_cut, list_machines.

Or from a terminal, with nothing installed:

curl -sS -X POST https://cut.uniboards.co.uk/v2/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Then just ask
You sayWhat you get
I need 6 shelves 800 x 300, 2 sides 1800 x 300 and a back 1800 x 800. How many 8x4 sheets of 18mm MDF?The real board count, from packing the actual rectangles — not an area estimate, which is always too low.
Here are my sizes: 6 shelves 800 x 300, 2 sides 1800 x 300. Work out the boards.The layout and the board count, from the real engine. Reading a PHOTO of a list needs an account and happens on the page, not from here.
Which boards do Uniboards cut in 18mm white, and what size are the sheets?The real catalogue, so you are not planning around a board we do not stock.
What is 2440 mm in feet, and is an Egger board really not 8x4?Sheet facts from us rather than from the model’s memory. (It is 2800 x 2070 mm.)

Attach the photo in your assistant the way you normally would; it passes the file to our reader.

What it will not do
  • No prices. It will not quote, and it will say so. A price comes from a person who knows what the edging and the cutting cost on your job.
  • No orders. It cannot place one, change one or look one up.
  • Nothing about you. It cannot see your past projects, anyone else's, our customers or our stock. Not by policy — there is no path from these tools to any of it.
  • Nothing kept. Your cut list is used to answer and then dropped. A file you send is deleted after it is read.
If something does not work
The assistant says it cannot find the serverCheck the URL ends in /mcp and that you used the HTTP/connector option, not a command.
It asks for an API keyThere is none. Leave it blank. If the field will not accept blank, the client is not ready for keyless servers yet.
Claude Desktop shows nothing after editing the configQuit and reopen it — the config is read at start. And use the mcp-remote form above: Desktop speaks stdio, not HTTP.
It answers about boards without calling the toolSay "use the uniboards-cut tools". Models sometimes answer from memory; the tool call is visible in the transcript.
read_cut_list says it needs an accountIt does, and MCP has no way to sign in. Read the sizes off the sheet yourself and call optimise_cut_list, or open the optimiser page and use the reader there.
"Too many parts"The free door takes 200 parts a go. Bigger lists we run for you — send them over.
For developers

An MCP server over streamable HTTP. Stateless, unauthenticated, POST only. Twelve tools — the cut list, and the machine:

optimise_cut_listParts and a board size in; board count, occupancy and the position of every part out.
read_cut_listAn image, PDF or CSV in; the parts it read, and the questions it could not answer. Needs an account, which MCP cannot sign into — use the reader on the optimiser page instead.
list_materialsSearch the boards we cut to size: sheet size, grain, options, and the ex-VAT price of each.
export_cut_planTurns a plan it has just worked out into the file a workshop uses: a PDF to print or a DXF for a CNC router. Comes back as base64 to hand over as an attachment; the engine is not run again, so the file matches the numbers.
price_cut_planWhat the plan costs: per board, subtotal, VAT and total in GBP. A board that is not a catalogue product comes back with no price rather than a guess. The geometry is not recalculated, so the number belongs to the plan you are showing.
sheet_sizesStandard UK sheet sizes, and mm to feet and back.
make_machine_programOne part and what has to be done to it — hinge cups, a groove, a pocket, a row of holes, holes in the edge, a milled path — out comes the program a CNC runs: BPP for a Biesse, MPR for a Homag woodWOP. Geometry that is wrong still builds and comes back with warnings, because a workshop fixes such files at the machine; read the warnings out. No file from here has been run on a machine yet — dry-run it.
make_sheet_programThe same for a WHOLE nested sheet: cut every part out of the board and machine each of them, in board coordinates.
read_machine_programThe other direction: a BPP, MPR, CIX or DXF in; the part back — size, outline, and every operation, so an old job can be re-costed or nested again. A machine file is poorer than an editor: a groove reads back as cutter passes.
shaker_doorA Shaker front described once — frame width, how many panels, where the rail sits — answered as ready pockets for make_machine_program.
shape_from_cutOne straight cut across a part, turned into the part's own outline. Answers with BOTH halves and their areas; which one is the part is your call, not ours.
list_machinesWhich machines get their own native program and which get a DXF with their own layer names.

Server description: /mcp/info · facts for a model that will not run JavaScript: llms.txt · plain JSON, no MCP: POST https://cut.uniboards.co.uk/v2/api/optimise · limits: 200 parts per call, a few file readings per caller per day.