Skip to content

Next tools for agents (CLI and MCP) #42

Description

@furilo

Follow-up to #13 and the CLI PR (#41). These are the agent tools to add next, from four rounds of testing with coding agents. They are ordered by how often agents needed them and how much they would save. Each item says what agents had to do instead.

Expose what BenchUp already has

  1. Router profiles as a tool: chamfer, bevel, roundover, cove, rabbet, groove and other profiles on an edge, using the core router (model.routes). Agents asked for chamfered tops and rounded edges, and drew outlines by hand to fake them.
  2. The Cutting Plan: stock layouts with saw kerf and grain, and the real number of sheets. get_cut_list only gives an area lower bound, so agents worked out the layout by hand. The plan lives in benchup-app/src/cutting_plan.rs today; it would need to move to the core or the tools.
  3. Trimming excess material at joints (JointSettings::trim), and wood finishes and estimates.

Modeling

  1. A board from a profile: a 2D outline with arcs (bulge or sagitta), a plane, a thickness and a grain, in one call. Today it takes draw_polyline, push_pull, group and set_grain, with arc points computed in a script. The script also has to pick a segment count that does not break joints (see below).
  2. Face operations: split a face by a line or plane, returning the pieces with their centres, and merge coplanar faces after a push. Erasing a seam edge removes the faces on it.
  3. distribute: spread objects evenly along an axis between two limits (shelves).
  4. Change stock thickness: resize a set of boards, keeping the outer faces and joint overlaps. Today this takes about 13 calls with anchors.

Reading the model

  1. Scene filters: ids, depth and fields. On the example project get_scene is about 35 KB.
  2. Free space and surroundings: the free gap between boards at a given height, and walls or floors made of loose faces inside groups. Agents probed 36 entities one by one to find a wall.
  3. Joint geometry: the tenon or groove box in world coordinates, and whether a groove is through or stopped.
  4. A rendered preview (PNG of a view) to check a result, and dimension overlap, without opening the app.
  5. check_model against a baseline: report only new problems in a dry run.

Needs a decision in the core

Separate track

Activity

  1. Maaxion commented on Nov 13, 2026

    @Maaxion
    Contributor

    The Cutting Plan: stock layouts with saw kerf and grain, and the real number of sheets. get_cut_list only gives an area lower bound, so agents worked out the layout by hand. The plan lives in benchup-app/src/cutting_plan.rs today; it would need to move to the core or the tools.

    I'm already working on one set of improvements to the cutting plan

  2. furilo commented on Nov 14, 2026

    @furilo
    ContributorAuthor

    On it!

  3. furilo commented on Nov 14, 2026

    @furilo
    ContributorAuthor

    On Precision (Needs a decision in the core): minimal reproduction in #61. The second mortise-and-tenon cut on the same board fails with "Each body must be a closed solid", depending on the order and on exact coordinates. The issue includes a core test, about 2,000 swept cases and a trace of where the mesh breaks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions