Skip to content
NestSolver Docs
Browse the docs

Start

Overview

What the NestSolver API and MCP server do, where they live, and how a call works. Start here.

NestSolver plans cutting and loading for shops: parts cut to length from bars and pipe, rectangles cut from sheets, irregular parts nested on sheets, and cargo loaded onto pallets and trucks. The API and the MCP server give your own tools the same planner the web has, under the same tiers and limits.

Two ways in

Where For
REST API https://api.nestsolver.com/v1 Scripts, ERPs, CAM pipelines, warehouse systems. JSON in, JSON out.
MCP server https://mcp.nestsolver.com/ AI assistants such as Claude Code and Cursor. The same calls, as tools the assistant fills in.

Both take the same keys under the same tiers; each counts its per-minute budgets on its own. Connect an assistant covers MCP; the rest of these guides describe the API. Each MCP tool is one of the API's calls, with the same arguments, though exports and the OpenAPI document have no tool.

How a call works

  1. Make a key on the portal's API keys page and send it as Authorization: Bearer <key>. Authentication.
  2. Send a cut list or a load as JSON. Linear and sheet cut lists solve in one call. Nests and loads start as jobs. Quickstart.
  3. For a job, poll its status until it is done, then read the plan and download its exports. Jobs and plans, Exports.
  4. Every call runs under the tier of the key's workspace: job caps, calls a minute, and a monthly pool of search time for nests and loads (5 loads a month on Free). Plans and limits.
curl https://api.nestsolver.com/v1/linear/validate \
  -H "Authorization: Bearer $NESTSOLVER_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "unit": "mm", "kerf": "3", "target": "waste", "strict": false,
        "stocks": [{ "length": "6000", "qty": "", "minimum_drop": "300", "zones": [] }],
        "parts": [{ "length": "1250", "quantity": "4", "label": "Rail" }] }'

The calls

Call Does
POST /v1/linear/validate, POST /v1/linear/solves Check or solve a linear cut list
POST /v1/sheet/validate, POST /v1/sheet/solves Check or solve a sheet cut list
POST /v1/nests Start a true-shape nest
POST /v1/loads Start a load plan
GET /v1/jobs/{id} Check where a nest or load stands
GET /v1/plans/{id} Read a finished plan
GET /v1/plans/{id}/exports/{format} Download a plan's file
GET /v1/usage Read the month's search time
GET /v1/openapi.json The OpenAPI document

The API reference has every field of every call.

Conventions

  • JSON everywhere, UTF-8. Send Content-Type: application/json.
  • Numbers are strings in requests, typed as on the web form: "1250", "3", "0.125". Answers carry numbers.
  • Ids are opaque strings (UUIDs, like 0192f0c4-7d1e-7c3a-9b2e-5d6f7a8b9c0d). Keep them as they come. Links in answers are full URLs.
  • Times are ISO 8601 in UTC, like 2026-03-14T09:12:44Z.
  • Errors share one shape, a list of problems each naming its field. Errors.
  • Retries are safe with an Idempotency-Key. Idempotency and retries.
  • Versioning: every path starts with /v1. Fields are added, never removed or renamed, within a version. The changelog lists what changed.

Client libraries

There are no official libraries yet. The API is plain HTTPS and JSON, so any HTTP client works, and the OpenAPI document feeds the usual generators (OpenAPI Generator, Kiota, openapi-typescript) when you want typed clients. The API reference shows each call in curl, Python, JavaScript and more.