# NativeCAD 0.20.0 "de la Parra" — Metal 3D printing: DMP Flex 350 build prep and quoting in one call

**177 tools: the 172 from 0.19.0, plus `cad_am_prep`, `cad_picogk`, `cad_combustion`, and two document ops that are now listed as tools, `cad_face_region` and `cad_mutual_trim`.** Installs on 0.17.2 and later can pick this release up through the self-update: `cad_configure {update:"now"}` installs it. Restart Claude to finish.

* **Metal LPBF on the 3D Systems DMP Flex 350** (NLAM [2]–[8]). `cad_dfm_check {process:"lpbf_dmp_flex350"}` checks minimum wall, part envelope, self-supporting overhang and trapped powder. `cad_nest` target `dmp_flex_350` nests on the plate at 5 mm spacing and exports one 3MF object per part. `cad_build_orientation` pack `lpbf_dmp_flex350` ranks orientations by support volume and recoater risk. `cad_support` profile `lpbf` makes block, line and cone supports under real overhangs. An LPBF time-and-cost quote names its assumptions and its cost drivers. Plate export writes a 3DXpert-ready folder (3MF/STL per object, `plate.json`, CLI slices).
* **Metal build in one call: `cad_am_prep`** (NLAM [9], CADSF-101008). DFM, orientation, machining-allowance print body, supports, plate nest, quote and files in one call. A DFM block is refused `AM_PREP_DFM_BLOCKED` with the findings and remedies; `force: true` carries on and records it.
* **PicoGK interop and `cad_picogk`** (NLAM [20]–[22]). `cad_export_body` writes `"picogk_stl"` and `"vdb"`; `cad_import` reads them back, with `toBrep`. `cad_picogk` runs PicoGK voxel operations as an async job, and mode `cem` builds and runs a customer's own PicoGK / ShapeKernel C# project in a sandbox. Without a PicoGK host or .NET SDK the call is refused by name (`PICOGK_RUNTIME_MISSING`, `CEM_DOTNET_MISSING`) with the install remedy.
* **Combustor chemistry: `cad_combustion`** (CADSF-101051). Cantera equilibrium, laminar flame speed, ignition delay, and PSR/PFR reactor networks with NOx/CO/UHC and a blowout search. Cantera is an optional add-on, never bundled; without it the call is refused `E_PRECONDITION` / `CANTERA_MISSING` with the pip/conda remedy.
* **STEP versions and compressed STEP** (CADSF-100990, CADSF-100995). `cad_save` and `cad_export_body` take `schema` (`ap203`, `ap214`, `ap242`, …, or `source`), with `strict: true` to refuse a lossy write. A `.stpZ` path or `compress: true` writes gzipped STEP, and `cad_import` reads it back.
* **The kernel SDKs now need a licence key** (CADSF-101184, CADSF-101185). `@nativecad/kernel` 0.3.2 and `@nativecad/kernel-sdk` 0.2.2 refuse with `E_LICENSE_REQUIRED` until a key is active: a license key is required. Commercial: https://featureboard.ai/nativecad/web/pricing.html. Non-commercial (education, research, makers): keys are issued case by case — request one at support@featureboard.ai. The self-serve free key from featureboard.ai/register covers the NativeCAD MCP plugin only (DEC-CADSF-101185-1): the kernel and kernel-sdk refuse it with `E_LICENSE_REQUIRED`, reason `free_tier_not_kernel`. The kernel ships as `nativecad-kernel-0.3.2.tgz` from featureboard.ai. The MCP server is unchanged.
* **Two document ops now listed as tools:** `cad_mutual_trim` and `cad_face_region`. The command schema is now 1.57.0; every change is additive.

See `packages/mcp/CHANGELOG.md` under `## 0.20.0` for the refusal vocabulary and every field.

## Gates

* **bundle-smoke over stdio, on the shipped `.mcpb` and `.plugin`.** tools/list 177; `cad_server_info` 0.20.0, staged git `c41256cc`, kernel tree `591c97ae6833`, 700 files. Unlicensed host: the export/import path was not exercised.
* `scripts/mcp-smoke.js dist/server.min.js`: 177 tools.

**Downloads:** https://featureboard.ai/nativecad/releases/nativecad-mcp-0.20.0.mcpb, https://featureboard.ai/nativecad/releases/nativecad-mcp-0.20.0.plugin and https://featureboard.ai/nativecad/releases/nativecad-mcp-0.20.0.tgz, plus the kernel library https://featureboard.ai/nativecad/releases/nativecad-kernel-0.3.2.tgz (`latest.json` lists bytes and sha256).

```
9832fa56b95f31304dfb3b4416932b4b5612cfe291a921f3e2f1868ea442b90a  nativecad-mcp-0.20.0.mcpb
aad48560539bcb4ac3b9f9f485728281cf5490be4670b689c267383ba73db807  nativecad-mcp-0.20.0.plugin
a83120a4930eee566171759c6c59a4f5921f69fe2fddfc36f279071b20381e5f  nativecad-mcp-0.20.0.tgz
ddbff515ae856b23af40afcfbb1bfab11757de16d50748d4b1c54d46ad8f3056  nativecad-kernel-0.3.2.tgz
```

**Build.** Built in the Cowork VM from master `c41256cc` (worktree `ticket/CADSF-101010`), with `SOURCE_DATE_EPOCH` set to 1791559882 (the HEAD commit time), esbuild 0.28.1. `dist/server.min.js` (sha256 `ae0b9632…`) is identical in the `.tgz`, the `.mcpb` and the `.plugin`. The `.tgz` was made by `npm pack --ignore-scripts` from a staged copy of the package's `files` set (the bundle and licence files were already staged by the build).

**Signature.** `latest.json` for 0.20.0 is **unsigned**: the release signing key was not reachable from the build VM. Until it is signed with `node tools/sign_release.js`, installs report the update as available but do not auto-install it.
