Skip to main content
Glama
Archicad-MCP

Archicad-MCP

by alesdev88

Create Road Marking

create_road_marking
Destructive

Places road markings or parking bays as library parts and drapes them onto Meshes and Slabs; dry-run preview by default.

Instructions

Place a Road Marking (lane lines, zebra crossings, stop and give way lines, bus and taxi stops, BUS and TAXI lettering) or a Road Parking (parking rows, disabled, taxi and EV bays) as the 'Road Marking' or 'Road Parking' library part, and drape it onto Meshes and Slabs. A parking preset name places a Road Parking; any other name, 'Custom' or none places a Road Marking; update_guid takes the element's own part, and a name of the other part is refused. The path comes from source_guid (a Morph line, Polyline, Line or Arc) or points [{x, y, z}] in metres. marking is a preset name, for example '5121 Broken divider, in settlements', 'Parking 60 degrees', '5352-1 Disabled bays, shared zone' or '5333-2 Bus stop on the carriageway', or 'Custom'. stripes changes stripes: {"1": {on, offset, width, dash, gap, angle, shape}}; a Road Parking takes only width, dash, gap and angle on stripe 1 and on for 2 and 3 ({"3": {"on": true}} is its kerb line); bays sets {layout, depth} and, on a Road Parking, {width, zone_width, zone_first, symbol}, on a Road Marking {bar_width}; lettering (Road Marking only) sets {text, length, width, gap, offset, align, shift, repeat}. Offsets, bays and the word lie to the right looking from the first point to the last. drape_on lists Mesh and Slab GUIDs: the cross fall follows the surface, the paint never sinks below it, and nodes are added until the marking is within drape_tolerance (metres) of it along the path; lift raises it. update_guid rewrites a placed marking, keeping its settings unless given; with drape_on and no source it drapes the marking's own path. DRY-RUN BY DEFAULT: reports nodes, the marking's reach, drape deviations, stretches off the surface and warnings. Pass dry_run=false to place or update.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "create_road_marking"
  }
}

Input Schema

NameRequiredDescriptionDefault
baysNo
liftNo
portNo
pointsNo
dry_runNo
markingNo
stripesNo
drape_onNo
letteringNo
thicknessNo
flip_sidesNo
source_guidNo
update_guidNo
start_heightNo
whole_dashesNo
paint_surfaceNo
pattern_alignNo
pattern_shiftNo
slope_percentNo
path_toleranceNo
drape_toleranceNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.8.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only flag it as a destructive write; the description goes far beyond by declaring DRY-RUN BY DEFAULT and describing exactly what the dry run reports (nodes, reach, drape deviations, off-surface stretches, warnings). It also discloses refusal behavior, drape mechanics (cross fall follows surface, paint never sinks below, nodes added until within drape_tolerance), lift, and that updates preserve settings unless overridden.

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 purpose and the marking-vs-parking rule before the dense parameter prose, and almost every clause carries information. The single long paragraph is hard to scan, and phrases like 'stripes changes stripes' are clumsy, but there is little filler.

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?

For a 21-parameter mutation tool with no schema descriptions, the description covers the decision logic, geometry input, the three nested option objects, draping, update semantics and the dry-run contract; the presence of an output schema means return values need not be explained. Only peripheral parameters and permission requirements are unaddressed.

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?

With 0% schema coverage the description carries the full burden and does substantial work: it explains marking, source_guid vs points (with metres and accepted element types), the nested stripes/bays/lettering object keys and their type-specific restrictions, drape_on, lift, drape_tolerance and update_guid. It leaves roughly half the parameters (port, thickness, flip_sides, start_height, whole_dashes, paint_surface, pattern_align, pattern_shift, slope_percent, path_tolerance) entirely unexplained.

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 opening sentence gives a specific verb (place/drape) and two named resources (Road Marking vs Road Parking), lists concrete subtypes (lane lines, zebra crossings, disabled bays), and states the resulting library part. An agent can distinguish this from create_road_arrow or create_swept_beam without opening a schema.

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?

It gives explicit selection rules: a parking preset name produces a Road Parking, any other name/'Custom'/none produces a Road Marking, update_guid edits an existing element, and a name belonging to the other part is refused. It also states that dry_run=false is required to actually place or update. The only gap is that sibling tools (e.g. create_road_arrow) are never named as alternatives.

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