Skip to main content
Glama

Calculiva Cut Planner

Plan a trim board order

plan_trim_order
Read-onlyIdempotent

Plans board and batten, wainscoting or picture frame molding on one wall: spacing, the cut list (miter long and short points for frames) and how many boards of each retail length to buy, with the total length bought and offcut percentage for each stock length; the length to buy is the one that buys the least total length, then the least offcut, then the fewest boards. The cut plan is first-fit decreasing: feasible, not proven optimal. Lengths accept feet and inches. Returns a link to the full plan on calculiva.com.

Input Schema

NameRequiredDescriptionDefault
edgeNoboard-and-batten: start and end the wall with a space (default) or with a batten.
gapXNopicture-frame-molding: gap between boxes. Default 4 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
gapYNopicture-frame-molding: gap between rows. Default 4 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
kerfNoSaw kerf, charged between two cuts on the same board. Default 1/8 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
rowsNopicture-frame-molding: rows of boxes. Default 1.
edgeXNopicture-frame-molding: side margin. Default 4 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
styleNowainscoting: applied molding frames (default) or stiles and rails.
hasCapNopicture-frame-molding: a chair rail caps the boxes (default true); false = boxes run to the ceiling.
layoutNoboard-and-batten: vertical battens (default) or a grid with horizontal rails.
columnsNopicture-frame-molding: boxes across. Default 4.
edgeTopNopicture-frame-molding: top margin. Default 4 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
projectYesboard-and-batten, wainscoting (applied frames or stile and rail) or picture-frame-molding (boxes of 45° mitered molding).
openingsNoUp to 4 openings or obstacles on the wall; pieces that land on them are flagged and left out of the cut list.
capHeightNopicture-frame-molding: height of the underside of the chair rail. Default 36 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
railCountNoboard-and-batten grid: horizontal rails per bay. Default 2.
wallWidthYesWall width. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
edgeBottomNopicture-frame-molding: bottom margin. Default 4 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
fullHeightNoboard-and-batten: battens run to the ceiling. Default false.
panelCountNowainscoting: number of panels or frames. Omit to use panelWidth.
panelWidthNowainscoting: target panel width, used when panelCount is omitted. Default 30 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
wallHeightYesWall height, floor to ceiling. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
battenCountNoboard-and-batten: number of battens. Omit to use battenSpacing.
battenWidthNoboard-and-batten: actual batten width (a 1x3 is 2 1/2 in). Default 2 1/2 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
memberWidthNowainscoting: stile width, or side reveal between frames. Default 3 1/2 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
extraPercentNoExtra boards to buy, % of the boards in the cut plan. Default 10.
moldingWidthNowainscoting applied-frames (default 1 1/4 in) or picture-frame-molding (default 1 in): molding face width. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
topRailWidthNoboard-and-batten top rail, or wainscoting stile-and-rail top rail width. Default 3 1/2 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
battenSpacingNoboard-and-batten: target gap between battens, used when battenCount is omitted. Default 12 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
topRailHeightNoboard-and-batten: height of the top of the top rail from the floor. Default 32 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
chairRailWidthNowainscoting: chair rail height (board width). Default 2 1/2 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
revealVerticalNowainscoting applied-frames: reveal above and below each frame. Default 3 1/2 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
stockLengthsFtNoBoard lengths you can buy, in feet (1 to 8 values, each up to 24). Default: 8, 10, 12 and 16 ft are compared and any of them can be recommended; pass the lengths your store sells to plan on those.
wainscotHeightNowainscoting: overall height from the floor, chair rail included. Default 32 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
baseboardHeightNoExisting baseboard height; "0" if none. Default 5 1/4 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.
bottomRailWidthNowainscoting stile-and-rail: bottom rail width. Default 5 1/2 in. Length with its unit, e.g. "12 ft 6 in", "12'6\"", "150 in", "3m80"; a bare number is read as inches.

Output Schema

NameRequiredDescriptionDefault
buyYesBoards to buy: the best stock length by comparisonRule; null when no length holds the longest piece.
kerfYes
miterYes
layoutYes
methodYes
cutListYes
optimalYes
projectYes
shareUrlYes
warningsYes
linearFeetYes
noStockFitsYes
extraPercentYes
wallAreaSqFtYes
comparisonRuleYesThe ranking used for every "better" statement in this result; a tie recommends nothing.
stockComparisonYes
shareUrlCompleteYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely non-obvious behavior: the stock-length selection rule (least total length, then least offcut, then fewest boards), the first-fit-decreasing algorithm with the honest 'feasible, not proven optimal' caveat, and unit-parsing tolerance. These are traits an agent could not recover from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every sentence carries substance (outputs, optimization rule, algorithm caveat, units, return). The middle semicolon-chained sentence about tie-breaking is dense and slightly overloaded, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 35-parameter tool with an output schema and full schema descriptions, the description is largely self-sufficient: project types, optimization policy, algorithm quality, and the return artifact are all stated. The main gap is that it never clarifies which parameters apply to which project variant, leaving that cross-referencing to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 35 parameters, so the schema already documents every field including defaults and per-project applicability. The description's only parameter-level addition, 'Lengths accept feet and inches,' largely restates the schema's repeated unit examples, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (plans) and resource (trim board order for board-and-batten, wainscoting, or picture-frame molding on one wall), and enumerates the concrete outputs (spacing, cut list, boards per retail length). An agent can distinguish this from the flooring/wallpaper planners and from build_order_sheet without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scoping phrase 'on one wall' and the project enum, and the mention of a returned plan link hints that a separate order-sheet tool exists. But there is no explicit when-to-use/when-not guidance and no named alternative such as build_order_sheet, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources