Skip to main content
Glama

Builder: plan a build

plan_build

Returns a cut list, a buy list and a plan page with a drawing, cut diagrams and a 3D view for a project given as pieces (name, material, size in inches, position 'at') or as a cedar fence-picket planter (picket_planter: length, width, courses, leg_below). It also returns amounts to buy for materials given by area, volume or count, such as paint, soil, concrete or tile (quantities). Nominal lumber sizes are converted to actual sizes (a 2x4 is 1.5 by 3.5 in). Omitted board lengths, wood type or sheet sizes are filled with common US store sizes and listed under Assumed. The picket planter design includes corner legs, ledger strips under the floor, a center brace when a side is over 4 ft, a ripped floor filler and trim. Prices appear only when stock, extras or quantities carry a price estimate; store prices are not looked up. The saw kerf defaults to 1/8 inch. Divux saves each plan on a page at a Divux link, up to 25 plans a day per connection. Applies to questions about working out a woodworking or building project, or a materials quantity, into cuts and a shopping list.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "title": "<title>"
    },
    "name": "plan_build"
  }
}

Input Schema

NameRequiredDescriptionDefault
kerfNoSaw blade width in inches; if left out, divux assumes 1/8 inch and says so under Assumed
partsNoPiece list for projects other than a cedar picket planter. When picket_planter is also present, picket_planter is used.
stepsNoAssembly steps in order; pieces refer to them with 'step'
stockNoBoard lengths or sheets to buy, with a price estimate in USD for one. When omitted, common US store lengths are used and no prices are shown.
titleYesProject name, e.g. 'Cedar planter 24 x 12 in'
unitsNoUnits for the reply text; imperial (inches) if left out. The plan page has its own switch.
extrasNoScrews, nails, glue, finish, and tools needed
quantitiesNoMaterials bought by area, volume or count: paint, stain, tile, flooring, fabric, soil, mulch, gravel, concrete
picket_planterNoCedar fence-picket planter dimensions. When set, Divux designs the pieces. For any other project, parts holds the pieces.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • removedInput schema / properties / picket_planter / properties / length / exclusiveMinimum
      Removed value: -0
    • changedInput schema / properties / picket_planter / properties / length / maximum
      Previous value: -80New value: +72
    • addedInput schema / properties / picket_planter / properties / length / minimum
      Added value: +12
    • removedInput schema / properties / picket_planter / properties / width / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / picket_planter / properties / width / minimum
      Added value: +8
  2. Changed10 schema fields changed
    • changedInput schema / properties / extras / items / properties / price_estimate / description
      Previous value: -"Your estimate in USD for one (for a tool, the tool)"New value: +"Price estimate in USD for one"
    • changedInput schema / properties / extras / items / properties / search / description
      Previous value: -"What to type into a store search, e.g. 'Titebond III exterior wood glue' or 'exterior deck screws 2.5 inch'. Send it for glue, finish and hardware so the live prices show the right product."New value: +"Store-search words, e.g. 'Titebond III exterior wood glue' or 'exterior deck screws 2.5 inch'."
    • changedInput schema / properties / parts / description
      Previous value: -"Every piece, for anything other than a cedar picket planter. Leave this out when picket_planter is set. If both are sent, picket_planter is used."New value: +"Piece list for projects other than a cedar picket planter. When picket_planter is also present, picket_planter is used."
    • changedInput schema / properties / parts / items / properties / qty / description
      Previous value: -"Not needed: copies are counted from 'at'"New value: +"Copy count. When omitted, copies are counted from 'at'."
    • changedInput schema / properties / parts / items / properties / search / description
      Previous value: -"What to type into a store search for this material, e.g. 'cedar fence picket 6 ft' or '1x6x8 cedar board'. Send it when the default wording may not find the right lumber."New value: +"Store-search words for this material, e.g. 'cedar fence picket 6 ft' or '1x6x8 cedar board'."
    • changedInput schema / properties / picket_planter / description
      Previous value: -"Cedar fence-picket planter. When set, Divux designs the pieces. For any other project, omit this and send parts."New value: +"Cedar fence-picket planter dimensions. When set, Divux designs the pieces. For any other project, parts holds the pieces."
    • changedInput schema / properties / quantities / items / properties / amount / description
      Previous value: -"Square feet, cubic feet or pieces, when dims don't fit"New value: +"Square feet, cubic feet or pieces, when dimensions are not a length and width"
    • changedInput schema / properties / quantities / items / properties / price_estimate / description
      Previous value: -"Your estimate in USD for one unit"New value: +"Price estimate in USD for one unit"
    • changedInput schema / properties / stock / description
      Previous value: -"Board lengths or sheets you'd buy, with your price estimates. Without it, divux uses common US store lengths and shows no prices."New value: +"Board lengths or sheets to buy, with a price estimate in USD for one. When omitted, common US store lengths are used and no prices are shown."
    • changedInput schema / properties / stock / items / properties / price_estimate / description
      Previous value: -"Your estimate in USD for one"New value: +"Price estimate in USD for one"
  3. Changed4 schema fields changed
    • addedInput schema / properties / parts / description
      Added value: +"Every piece, for anything other than a cedar picket planter. Leave this out when picket_planter is set. If both are sent, picket_planter is used."
    • removedInput schema / properties / parts / minItems
      Removed value: -1
    • addedInput schema / properties / picket_planter
      Added value: +{
      +  "description": "Cedar fence-picket planter. When set, Divux designs the pieces. For any other project, omit this and send parts.",
      +  "properties": {
      +    "courses": {
      +      "description": "How many pickets high the walls are. 3 for the low 4 ft box, 2 for the raised and tall boxes.",
      +      "maximum": 4,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "leg_below": {
      +      "description": "How far the legs stick out below the walls, in inches. 1 for the low box, 6.5 for the raised box, 20 for the tall box.",
      +      "maximum": 48,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "length": {
      +      "description": "Outside length in inches. 36 for a 3 ft box, 48 for 4 ft, 60 for 5 ft. Not rounded.",
      +      "exclusiveMinimum": 0,
      +      "maximum": 80,
      +      "type": "number"
      +    },
      +    "width": {
      +      "description": "Outside width in inches. Rounded to whole 5 1/2 in pickets: 12 becomes 11, 18 becomes 16 1/2.",
      +      "exclusiveMinimum": 0,
      +      "maximum": 60,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "length",
      +    "width",
      +    "courses",
      +    "leg_below"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "title",
      -  "parts"
      -]New value: +[
      +  "title"
      +]
  4. Changed4 schema fields changed
    • changedInput schema / properties / parts / items / properties / at / description
      Previous value: -"Where each copy sits: its lowest corner [x, y, z] in inches, x across, y front to back, z up. Always send it: without positions there is no drawing, no 3D view and no blueprint views. One entry per copy. Example, a 24 x 12 in planter 11.25 in tall: front [0,0,0], back [0,11.25,0], left [0,0.75,0], right [23.25,0.75,0]."New value: +"Required. Where each copy sits: its lowest corner [x, y, z] in inches, x across, y front to back, z up. size is in the same axes (x, y, z). Without positions there is no drawing, no 3D view and no blueprint views. One entry per copy. Example, a 24 x 12 in planter 11.25 in tall: front [0,0,0], back [0,11.25,0], left [0,0.75,0], right [23.25,0.75,0]."
    • addedInput schema / properties / parts / items / properties / at / minItems
      Added value: +1
    • changedInput schema / properties / parts / items / properties / qty / description
      Previous value: -"Copies when 'at' isn't given"New value: +"Not needed: copies are counted from 'at'"
    • changedInput schema / properties / parts / items / required
      Previous value: -[
      -  "name",
      -  "material",
      -  "size"
      -]New value: +[
      +  "name",
      +  "material",
      +  "size",
      +  "at"
      +]
  5. Changed4 schema fields changed
    • addedInput schema / properties / extras / items / properties / search
      Added value: +{
      +  "description": "What to type into a store search, e.g. 'Titebond III exterior wood glue' or 'exterior deck screws 2.5 inch'. Send it for glue, finish and hardware so the live prices show the right product.",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • changedInput schema / properties / parts / items / properties / at / description
      Previous value: -"Corner position of each copy in inches, for the drawing; one entry per copy"New value: +"Where each copy sits: its lowest corner [x, y, z] in inches, x across, y front to back, z up. Always send it: without positions there is no drawing, no 3D view and no blueprint views. One entry per copy. Example, a 24 x 12 in planter 11.25 in tall: front [0,0,0], back [0,11.25,0], left [0,0.75,0], right [23.25,0.75,0]."
    • addedInput schema / properties / parts / items / properties / search
      Added value: +{
      +  "description": "What to type into a store search for this material, e.g. 'cedar fence picket 6 ft' or '1x6x8 cedar board'. Send it when the default wording may not find the right lumber.",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / units
      Added value: +{
      +  "description": "Units for the reply text; imperial (inches) if left out. The plan page has its own switch.",
      +  "enum": [
      +    "imperial",
      +    "metric"
      +  ],
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • removedInput schema / properties / kerf / default
      Removed value: -0.125
    • changedInput schema / properties / kerf / description
      Previous value: -"Saw blade width in inches"New value: +"Saw blade width in inches; if left out, divux assumes 1/8 inch and says so under Assumed"
  7. First observed

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: each plan is saved to a Divux link, capped at 25 plans per day per connection, store prices are not looked up, defaults are listed under Assumed, and the kerf defaults to 1/8 inch. It does not describe failure behavior or what happens when limits are hit.

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?

It is front-loaded with the returned artifacts, which is the right thing for an agent to see first, and nearly every sentence carries operational facts (defaults, pricing, rate limit). It runs as one dense block, and picket-planter construction detail such as ledger strips, ripped floor filler, and trim borders on unnecessary for tool selection.

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?

With 9 parameters, nested objects, and no output schema, this description does the work: it enumerates returned artifacts, defaulting/assumption behavior, pricing rules, persistence, and rate limits. Nothing an agent needs to call it correctly is missing, though error and partial-input behavior are not covered.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 and the description earns above it by adding semantics the schema lacks: nominal lumber sizing (a 2x4 is 1.5 by 3.5 in), that omitted board lengths/wood types/sheet sizes are filled with common US store sizes and surfaced under Assumed, the 1/8-inch kerf default, and the internal composition of the picket planter design (corner legs, ledger strips, center brace when a side is over 4 ft). It does not add per-parameter meaning for quantities or stock beyond what the schema already documents.

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

Purpose4/5

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

The description states a concrete verb and output set: it "Returns a cut list, a buy list and a plan page with a drawing, cut diagrams and a 3D view" for pieces or a picket planter, plus buy amounts for area/volume/count materials. The purpose is unmistakable and scoped to woodworking/building projects. It never names or contrasts with possible siblings such as plan_recipe, so it stops short of full disambiguation.

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

Usage Guidelines4/5

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

Usage context is explicit: "Applies to questions about working out a woodworking or building project, or a materials quantity, into cuts and a shopping list," and it explains the two input modes (parts vs picket_planter). There are no when-not-to-use rules or named alternatives, which keeps it at 4 rather than 5.

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