Skip to main content
Glama
pzfreo

build123d-mcp

suggest_view_layout

Calculate safe view positions for multi-view engineering drawings, preventing overlaps with title block and margins. Returns coordinates, free space, and layout warnings.

Instructions

Auto-calculate safe VIEW_X / VIEW_Y positions for a multi-view engineering drawing.

Measures the named shape's bounding box and returns per-view page positions
(VIEW_X, VIEW_Y), look_at values, and camera/up vectors for a standard
third-angle layout:

    [plan ]  [      ]
    [front]  [ side ] [ iso ]
                      [ title block (bottom-right) ]

Returns JSON with:
  views: {name: {VIEW_X, VIEW_Y, half_w, half_h, look_at, camera, up}}
  free_space: {name: {above/below: {x, y, h}, left/right: {x, y, w}}} — the
    empty rectangle outside each view edge, bounded by neighbouring views,
    the title block, and the margins; budget dimension tiers (n × tier
    pitch must fit in h/w) before placing annotations
  warnings: list of layout problems (out-of-bounds, title-block overlap)
  suggestion: recommended page_w/page_h/scale if the layout does not fit

object_name: name from show() — use "" to measure the current shape
page_w/page_h: sheet size in mm (default A4 landscape 297×210)
scale: drawing scale factor (default 1.0; use 2.0 for 2:1)
views: subset of ["front","plan","side","iso"] to place
title_block_w/h: reserved bottom-right area (default 150×30 mm)
margin: page margin in mm (default 10)
extents: [x, y, z] part sizes in mm — lays out from these numbers instead
    of a session object (use when the part isn't loaded, e.g. import failed)
centroid: [x, y, z] look_at origin when using extents (default [0, 0, 0])

Accuracy: front/plan/side positions are exact for orthographic projection.
Iso position is approximate (75% of 3-D diagonal as half-extent) — verify
with render_view() and adjust manually if the iso overlaps a neighbour.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scaleNo
viewsNo
marginNo
page_hNo
page_wNo
extentsNo
centroidNo
object_nameNo
title_block_hNo
title_block_wNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

With no annotations provided, the description fully bears the transparency burden. It discloses behavioral traits such as the approximate nature of the iso position, the exact orthographic positions, and the return of warnings for layout problems. It also explains the return JSON structure and the layout algorithm, providing comprehensive insight into tool behavior.

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 well-structured with a clear summary, layout diagram, return JSON specification, and parameter list. It is moderately long but each part adds value. Minor redundancy in explaining defaults that are already in the schema, but overall it earns its length.

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 complexity (10 parameters, output schema exists), the description is thorough. It explains the layout logic, parameter usage, return structure (including views, free_space, warnings, suggestion), and accuracy notes. The presence of an output schema means return values need not be repeated, but the description adds context that enhances understanding, making it complete for effective tool use.

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

Parameters5/5

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

The description covers 8 of 10 parameters with detailed explanations of their meaning and defaults (e.g., 'object_name: name from show() — use "" to measure the current shape', 'extents: [x, y, z] part sizes in mm — lays out from these numbers instead of a session object'). Since the input schema has 0% description coverage (only titles and defaults), the description fully compensates and adds significant meaning beyond the schema.

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 clearly states the tool's purpose: 'Auto-calculate safe VIEW_X / VIEW_Y positions for a multi-view engineering drawing.' It provides a specific verb (calculate) and resource (positions) and outlines the layout arrangement. While sibling tools include related drawing and rendering tools, this tool's function is distinct and well-defined, so it distinguishes itself effectively.

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 explains when to use the tool, including the option to use 'extents' when a part isn't loaded. It references render_view() for verification of approximate iso positions, suggesting a workflow. However, it does not explicitly state when not to use this tool or list alternatives, which would improve guidance further.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pzfreo/build123d-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server