Nesting for AI agents: Nestbolt, OpenNest, pyFit, Sparrow and Deepnest compared
Reading the tools' repositories, four MCP directories and GitHub search on 2026-10-20, we found three open-source nesting tools that an AI agent can call over MCP: Nestbolt (5 tools, SVG and DXF in), OpenNest by ajisaacs (19 tools, DXF in, built from source) and pyFit (4 tools, a JSON job of polygons or single-loop DXF outlines, installed from source), plus one hosted, paid MCP service, SmartCut. All three open-source ones also have command lines, as do Sparrow and CLI-nesting (JSON polygons in) and sheetnest (DXF in), while Deepnest and SVGnest have none. In our run, three fresh Nestbolt v0.1.0 MCP servers nested the example job from its v0.1.0 source six times on one sheet (32 of 32 parts, checked by its validator) in 3.1 to 3.9 seconds per nest, and all six layouts were byte-identical (method and data below).
We make Nestbolt. We ran only Nestbolt. Everything on this page about the other tools comes from their own repositories, documentation and release pages, read on 2026-10-20 at the commits linked below, and is marked "from its docs". Hosted services were read from their public pages only. Last checked: 2026-10-20.
How an agent can drive each nesting tool
| Tool | How an agent drives it | Parts in, results out | Sheets | Getting it | Licence | Latest |
|---|---|---|---|---|---|---|
| Nestbolt (ours) | MCP server (stdio, 5 tools), CLI, browser app | SVG, DXF; one SVG and one DXF per sheet, JSON layout and report | Fixed sheets, several sizes; small parts inside holes of larger ones | Release archives for Windows x64, Linux x64, macOS Apple silicon; Windows MCPB; Claude Code plugin | MIT | v0.1.0, 2026-10-14 (preview v0.2.0-alpha.1, 2026-10-16) |
| OpenNest (ajisaacs) | MCP server (stdio, 19 tools), CLI, .NET API, Windows desktop app | Desktop: DXF, DWG, Excel BOMs in; DXF, G-code, .nest out. Over MCP: DXF in, .nest out; the console adds G-code through post-processors |
Fixed plates, several sizes; parts inside other parts' cutouts | The release zip is the Windows desktop app; the MCP server and CLI are built from source with the .NET 8 SDK (its console and API also build on Linux and macOS) | MIT | v0.5.0 pre-release, 2026-10-20 |
| pyFit | MCP server (stdio, 4 tools), CLI | A JSON job whose parts are polygons or DXF files of one closed loop of LINE entities (no arcs or holes); one DXF per sheet, JSON report, PNG previews | Several fixed rectangular sheets, reusing scrap on earlier ones; every placement re-checked for overlap and containment; no spacing setting; aimed at convex and simple shapes | From source: the PyPI name in its README returned 404 | MIT | 0.1.0; last commit 2026-07-29 |
| SmartCut (hosted) | MCP over HTTP and a REST API | JSON outlines; PDF, CSV, DXF, SVG and saw-machine formats | Fixed stock sheets; holes are cut but not filled with other parts | API key and a paid subscription (price not shown as text) | Service terms (API spec and examples repo MIT) | Hosted service |
| Sparrow and spyrrow | CLI and Rust library; spyrrow is a Python wrapper | Instance JSON (or Python point lists); SVG and JSON | Strip packing only: one strip of fixed width, length minimised; parts with holes are rejected | Build with cargo (no release binaries); spyrrow 0.9.0 on PyPI | MIT | v0.3.0, 2026-10-01 |
| CLI-nesting | CLI (C++20) | JSON polygons; JSON, DXF and SVG | Fixed sheets (rectangles or polygon stock); smaller parts placed inside other parts' holes | Release archives for Windows x64, Linux x64 and ARM64, macOS universal | MIT | v1.02, 2026-10-16 |
| sheetnest | CLI (nest, validate), Rust library, Python and JavaScript bindings |
DXF; DXF and SVG | Rectangular stock, or a coil strip of unbounded length; parts with holes (not yet filled with other parts) | Build from source: the cargo, pip and npm names in its README returned 404 | MIT or Apache-2.0 | Last commit 2026-09-06 |
| libnest2d and pynest2d | C++ header-only library; Python bindings | Polygons built in code; transformed polygons | Fixed bins, several | Build from source; pynest2d ships through Conan for Cura, not PyPI | LGPL-3.0 | libnest2d last commit 2022-11-16; pynest2d 2026-06-25 |
| Packaide | Python library with a C++ (CGAL) engine | SVG; SVG | Fixed sheets, several | Build from source with CMake, Boost and CGAL; not on PyPI | GPL-3.0 | Last commit 2021-09-15 |
| Deepnest (deepnest-next) | Desktop app only; no CLI | SVG natively; PS, EPS, DXF and DWG through an online converter; SVG, DXF (converter), PLT, JSON | Fixed sheets, several | Release downloads for Windows, macOS and Linux | MIT, with a GPL-3.0 core file | v1.5.6, 2025-05-19; last commit 2026-10-18 |
| SVGnest | JavaScript library inside a web page (needs a DOM and web workers); no CLI | SVG; SVG | One bin outline, repeated as needed; optional part-in-part (off by default) | Load it in a page | MIT | Last commit 2019-04-11 |
| DeepNestPort | Windows desktop app; an undocumented console program with a fixed 10-second search | SVG, DXF, CSV points; SVG, DXF | Fixed sheets | Alpha release zip (whether it holds the console program: not checked) | MIT | v0.1.2-alpha-core, 2024-07-22; last commit 2026-01-05 |
Nestbolt's row is from its README and agent interface, and its MCP behaviour is measured below. LightBurn project nesting in Nestbolt is a preview feature (v0.2.0-alpha.1). The hosted browser app runs a preview build from main.
Nestbolt over MCP, measured
We downloaded nestbolt-v0.1.0-x86_64-pc-windows-msvc.zip from the v0.1.0 release (SHA-256 f3ba7548…167398, matching its SHA256SUMS) and drove nestbolt-mcp.exe over stdio with a small JSON-RPC client, the way an agent's MCP client does. Each of three runs started a fresh server in a new, empty workspace holding only examples/parts.svg from the v0.1.0 tag's source, with that tag's examples/nest-request.json (4 part shapes, 32 parts, one 600 × 400 mm sheet, 1 mm spacing). The release archive itself holds the two programs, licences, README and llms.txt, but no examples. The PC was an AMD Ryzen 9 7950X3D (16 cores) on Windows 11. The v0.1.0 server's own instructions already mention LightBurn input; Nestbolt's README documents LightBurn project nesting as a v0.2.0-alpha.1 preview feature.
| Call | What came back | Time per call |
|---|---|---|
initialize, tools/list |
Server nestbolt 0.1.0, protocol 2025-06-18, with instructions that give the three-step workflow; 5 tools (import_parts, nest, validate_layout, export_layout, estimate_sheets) in a 20,752-byte reply |
0.001 s or less |
import_parts |
4 part ids with areas, bounds and an import report | 0.001 s |
nest, time_budget_s 10, seed 0 |
32 of 32 parts on 1 sheet, 8 of them inside holes; the validator's report attached; "repeatable": true; 3 progress notifications; a 1,647-byte reply, with geometry left in files |
3.1 to 3.2 s |
The same nest again |
A byte-identical layout.json (SHA-256 7fc2ed62…) in all six nests across the three servers |
3.6 to 3.9 s |
validate_layout, export_layout, estimate_sheets |
Valid; the exported sheet-0.svg byte-identical to the one nest wrote; a lower bound of 1 sheet |
0.012 s or less |
| Three mistakes an agent can make | A ../ path outside the workspace, an output folder that already holds files, and an unknown part id were each refused with a message saying what to use instead |
0.001 s or less |
The command line gives the same result: nestbolt import parts.svg --output lib.json then nestbolt nest --library lib.json --request nest-request.json --out-dir run --seconds 10 --repeatable wrote the same 7fc2ed62… layout.json bytes as the MCP server in three runs. Each tool call's arguments and reply, the tools/list reply, the progress notifications, the timings and the output hashes are in the data: run 1, run 2, run 3 and the CLI runs. Why a 10-second budget finished in about 3 to 4 seconds: Nestbolt's search contract spends half of time_budget_s (here 5 seconds) as deterministic work, estimated in seconds on one core of its reference CPU, the model this PC has. On this job that work took 3.1 to 3.9 real seconds, so the work model's estimate runs high here; the full budget (at most 300 seconds) stays a hard real-time limit. A slower PC takes longer for the same layout, and if it hits the limit the reply says "repeatable": false.
Material use
We did not benchmark material use for this page. Nestbolt's README reports its frozen v1 benchmark (build 75cbb32, not the v0.1.0 binary measured above): 8.5% less material at the median than the best of Deepnest, SVGnest and Sparrow at equal 60-second budgets, with Sparrow winning 8 of 56 jobs. The Deepnest alternative guide explains that run and the results page has every number. OpenNest, pyFit, CLI-nesting, sheetnest and the other tools here besides Deepnest, SVGnest and Sparrow were not in that benchmark, so nothing here says which of them uses less material.
The other tools, from their docs
OpenNest
A Windows desktop app for CNC nesting on material plates that imports DXF and DWG and exports DXF or G-code through post-processors. Its OpenNest.Mcp project is a stdio MCP server with 19 tools, among them import_dxf, create_plate, autonest_job, check_overlaps, plan_cutting and save_nest; over MCP an agent brings DXF in and saves .nest files, and the console adds post-processed CNC output. Its README says the desktop, console, MCP and API nesting share an independent validation pipeline. The v0.5.0 pre-release zip, published 2026-10-20, contains the desktop app; the console and MCP server are built with the .NET 8 SDK, and its README says the console and API also build on Linux and macOS (from its docs, not run by us). A different project, petrasvestartas/OpenNest, shares the name.
pyFit
A Python package with a pyfit CLI and a pyfit-mcp stdio server whose four tools (design_nest, preview_nest, get_nest_report, export_nest) share one schema: sheet width and height, parts, and a rotation step. It fills several rectangular sheets, going back to scrap on earlier sheets before opening a new one, re-checks every candidate placement for overlap and containment, can return preview images into the conversation, and sends progress notifications. It has no spacing or kerf setting in its code, its DXF reader takes one closed loop of LINE entities per file, and its README says the package targets convex and simple shapes. Its README installs from PyPI, but that name returned 404 on 2026-10-20, so it installs from source (from its docs, not run by us).
SmartCut
A hosted cut-list and nesting service with a REST API and an MCP endpoint at api.smartcut.dev/mcp. Both need an API key and an active subscription; its pricing page renders prices with scripts, so we could not read them as text. Its nesting mode takes part outlines with holes, which are cut but not filled with other parts (from its docs, not run by us). Almacam's Nesting Component (PowerNest WS) is another hosted option: an HTTP JSON API for true-shape nesting with holes, several sheets or a strip, and part spacing, by evaluation on request with no public price (from its docs, not run by us).
Sparrow and spyrrow
Sparrow is a Rust command line and library for 2D irregular strip packing (arXiv 2509.13329): -i input.json -t seconds writes the final layout as SVG and JSON. It solves one strip of fixed width (Sparrow calls it the strip height), not several fixed sheets, and its engine rejects parts with holes. spyrrow wraps it for Python with point lists in and placements out, and no SVG or DXF input. Nestbolt builds on Sparrow and its engine, jagua-rs (from their docs, not run by us for this page).
CLI-nesting
A C++20 command line that reads one JSON file of polygon parts and sheets, with holes, per-part orientations and separate clearances, and writes JSON, DXF and SVG; its README documents placing smaller parts inside other parts' holes. Release archives cover Windows, Linux and macOS; optional OpenCL acceleration is off by default. It reads polygons, not SVG or DXF drawings, so an agent converts the drawing first (from its docs, not run by us).
libnest2d, pynest2d and Packaide
libnest2d is a C++ nesting library that began in PrusaSlicer; pynest2d is Ultimaker's Python binding of its fork, packaged for Cura and shipped through Conan rather than PyPI. Both take polygons built in code and are LGPL-3.0; libnest2d's README says it works well for rectangles and convex polygons, without considering holes and concavities. Packaide is a GPL-3.0 Python library with a CGAL engine that nests SVG shapes onto SVG sheets; its last commit is from 2021 and it is built from source (from their docs, not run by us).
Deepnest, SVGnest and DeepNestPort
Deepnest is a desktop app. Asked in issue #150 about running it from a command line, its maintainer replied in July 2025 that there is no official support. It reads SVG natively and sends PS, EPS, DXF and DWG files to an online converter, converter.deepnest.app, by default. SVGnest is a browser app whose JavaScript API (parsesvg, setbin, start) runs inside a page and searches until it is stopped. DeepNestPort, a C# port, ships a desktop app; its source also holds an undocumented console program with a fixed 10-second search (from their docs, not run by us).
sheetnest and ironnest
sheetnest is a Rust library with Python and JavaScript bindings and a CLI whose nest command reads DXF parts, writes DXF and SVG with arcs kept as arcs, and can leave optional micro-joints (uncut tabs), and whose validate command checks overlaps, margins and gaps. It packs rectangular stock or a coil strip of unbounded length, and does not yet place parts inside other parts' holes; the package names in its README returned 404 on 2026-10-20, so it builds from source. ironnest 0.6.2 is an MPL-2.0 fork of jagua-rs on PyPI that packs polygons across several sheets from Python (from their docs, not run by us).
MCP servers for rectangular cut lists, such as nestingcalc (its MCP endpoint and sheet calculator), pack rectangles only and are left out (from its docs, read 2026-10-20, not run by us).
When to use the other tool
- OpenNest if you cut plate on a CNC machine and want DXF or DWG in and machine G-code out of the same tool, with the cut sequencing, generated lead-ins and G-code post-processors that Nestbolt does not have. Nestbolt writes SVG and DXF cut files (and LightBurn projects in the v0.2.0-alpha.1 preview).
- Sparrow if your job is a roll or strip of fixed width and your parts have no holes. Nestbolt's README calls it the state of the art for that problem, and Nestbolt runs unmodified Sparrow itself on one-sheet jobs of hole-free parts without defects.
- CLI-nesting if your parts already exist as polygons in your own pipeline and you want a single JSON-in, files-out command with prebuilt binaries. sheetnest if you want a DXF-in, DXF-out command for rectangular stock or coils and can build it.
- pyFit if your agent works in Python, your parts are convex or simple single-outline shapes on rectangular sheets, and you want an MCP server that shows layout previews in the conversation, in one small codebase.
- SmartCut if you need a hosted service with saw-machine exports and labels, and an API key and subscription are fine; Almacam's API if you want hosted true-shape nesting and can arrange an evaluation.
- libnest2d or pynest2d if you are already inside C++ or a slicer and only need to arrange polygons on a bed.
- Deepnest if a person, not an agent, nests the job in a desktop window and wants its common-line merging.
How we checked
- The searches. We ran seven searches an agent might make, including "Deepnest alternative" and "nesting MCP server for AI agents SVG DXF laser cutting". Nestbolt appeared in none of them; most results were directories and aggregators, and the search tool's summaries said twice that no nesting MCP server turned up, though Glama and a GitHub repository search found OpenNest, pyFit and SmartCut. The queries and results.
- The other tools. Read from their repositories at the commits or pages linked above, plus release pages, package registries, the official MCP registry, Glama, mcp.so and Smithery, on 2026-10-20. Nothing of theirs was installed, built or run.
- Nestbolt. The v0.1.0 release binary was run as described above. Its feature claims come from its README and docs; the material numbers come from its published benchmark, which we did not re-run.
- Refresh. This page is re-checked every 30 days.