Skip to main content
Glama

Build a structure (box/shell/layer/line)

build
Destructive

Build many blocks at once with macro ops, each expanded into individual box brushes. Coordinates are integer grid cells. World map: wx=gx0.5, wy=2.0+gy0.5, wz=gz*0.5. gy=0 is the first solid block layer (world y=2.0). One block per cell. Ops: {op:'box',min:[gx,gy,gz],max:[gx,gy,gz],material,operation?} (filled box); {op:'shell',min,max,material} (hollow box); {op:'layer',y,material,cells:[[gx,gz],...]} (flat layer); {op:'line',from:[gx,gy,gz],to:[gx,gy,gz],material}. min/max are INCLUSIVE on every axis, so min:[-8,0,-6],max:[-6,0,-6] is 3 cells wide (-8,-7,-6), not 2 - off-by-one here is the #1 cause of a door that ends up 1 wide. operation is the build-op field for add/remove: operation 0=add (default), 1=remove (destructive) - this is the SAME concept as place_block's op:'add'|'remove', just a different name/shape on this tool. All coords are GRID cells. Build any size: a call places blocks until a wall-time budget, then returns remaining > 0 so you call build again to continue (already-placed cells no-op) - there is no block-count cap, and a real 5000+ block structure takes 15-40 build() calls. Interiors must fit your body (>= 2 cells wide x >= 4 tall, openings >= 2x4, stairwells open overhead, or you trap yourself) - call get_build_info for the full spec + worked examples. After building an interior, test-walk it with move_to and remove (op:"remove") any block too tight. Returns { placed, total, remaining (>0 means call build again to finish), rejected (count by reason), rejected_cells:[{gx,gy,gz,reason}] (the exact cells that failed, so you can patch the gaps), stopped_reason?, suggested_stand? }.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opsYesArray of build ops.
spaceYes
dry_runNoPREFLIGHT only: validate every cell against the gates (reach / adjacency / claim / would-trap-self / would-seal-ceiling) and return the same rejected_cells WITHOUT placing anything, consuming quota, or moving you. Run this first to catch a bad door/floor/cantilever before you commit, then call build again without dry_run.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / ops / items / additionalProperties
      Previous value: -{}New value: +true
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

The description goes far beyond annotations by explaining the coordinate system, common off-by-one errors, the operation field's relationship to place_block, the multi-call behavior due to wall-time budget, interior sizing warnings, and the dry_run preflight feature. All behavioral traits are disclosed clearly.

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?

The description is comprehensive and well-structured, starting with the core purpose, then covering coordinate mapping, operation formats, inclusive bounds warning, multi-call behavior, interior sizing, and return value format. Every sentence adds value, though it could be slightly more compact.

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

Completeness5/5

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

Given the tool's complexity—multiple operation types, coordinate mapping, multi-call behavior, interior sizing constraints—the description is remarkably complete. It even includes world coordinate formulas, common pitfalls, and return value format despite lacking an output schema.

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?

The description adds substantial meaning to the 'ops' parameter by detailing the formats for box, shell, layer, and line operations, and explains the 'dry_run' parameter's preflight validation. However, the 'space' parameter is not explained in the description.

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?

The description explicitly states it builds many blocks at once using macro ops (box, shell, layer, line), clearly distinguishing it from single-block tools like place_block. The purpose is immediately clear with a specific verb and resource.

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?

The description provides clear context on when to use this tool for bulk building, including interior sizing constraints and the suggestion to use dry_run for preflight. It references get_build_info for full specifications, but does not explicitly mention when alternatives like place_block or plan_build are better suited.

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