What we tested
We downloaded the macOS command-line tools from each project's latest release (VectorCraft 0.21.0 and CADCraft 0.17.0, both published on 3 November 2026) and connected each to Claude Code in headless mode, one server per run. VectorCraft ran with its read and write roots set to the test folder; CADCraft had no such option. We asked for one ordinary job in each: a coffee shop badge in VectorCraft, and a one-room floor plan with a door, window, layers and dimensions in CADCraft. Each request told the agent to check its work and save real files. The test sessions also had a few of our own general skills loaded.
What we found
- Both connected and listed their tools: 33 in VectorCraft, including a few names that mean the same thing, and 12 in CADCraft. The window-only tools appeared in VectorCraft's list even though they cannot work headless.
- VectorCraft made a usable badge. Brown circle, cream ring, cup with handle, saucer, steam and the shop name along a curve, exported as a 22 KB SVG with outlined text and a 512-pixel PNG. The agent looked at its first render, called the tapered cup a funnel and redrew it. The run took 31 turns, 78 seconds and $0.50 at API prices.
- CADCraft made a correct plan. We checked the PNG and the DXF: 100 mm walls around a 4000 by 3000 mm room, a 900 mm door gap centred in the bottom wall with a 90-degree swing, a 1200 mm window in the top wall, two overall dimensions, and Walls, Doors, Windows and Dimensions layers in the file. The agent proved the wall and window areas with the area command. The run took 31 turns, 54 seconds and $0.48.
- The commands are easy for an agent to find. Both runs looked up each command's parameters with command_list or list_commands, and recovered from small errors on their own: an object id that no longer existed in VectorCraft and a script line in CADCraft.
- The file confinement differs. VectorCraft kept every write inside the folder we named. CADCraft wrote where it was told, which in our test was the right folder, but nothing would have stopped it writing elsewhere.
This is one small job in each app with one model, so read it as an example, not a benchmark.

