Skip to main content
Glama
davidharutyunyan

Archicad MCP Connector

Archicad MCP Connector

CI License: MIT

An MCP server that gives Claude full read/write control of Graphisoft Archicad 26 — model, draft, annotate, query, document, export and manage BIM data in a live project, and see the result through captured views.

  • ~260 tools in 21 families: stories, attributes, walls, columns, beams, slabs, roofs, shells, meshes, morphs, curtain walls, stairs, railings, zones, doors/windows/skylights/openings, objects/lamps, custom GDL parts, 2D drafting, dimensions, labels, views & 3D, image capture, sections/elevations/details/worksheets, layouts & drawings, PDF / IFC / DXF / OBJ / STL / module export, publishing, hotlinks, properties, classifications, IFC data, issues & BCF, favorites, tool defaults, Teamwork, revisions, undo/redo, project save/open — plus raw access to every official JSON API command.

  • Built for an LLM: meters & degrees everywhere, batched calls (one undo step each), per-item results, strict input validation that names wrong fields, actionable error messages, localized-name lookups and capture_view so Claude can verify its work visually.

  • Verified live against Archicad 26 (build 5002): 574 unit tests + a live regression of 413 checks across all families (npm run test:live).

Claude: read docs/CLAUDE_GUIDE.md (also returned by the get_connector_guide tool) before building or editing anything. It contains the conventions, the working loop, recipes and the known limits.

Example: a two-storey house, built and documented by Claude

From two prompts, Claude modelled a 2 × 100 m² house with interiors on a 1000 m² plot, then added electrical and plumbing plans and published a 17-sheet plan book. Full walkthrough: examples/two-story-house.

Exterior perspective

Ground floor cutaway

Electrical plan

Plumbing 3D schematic


Related MCP server: allplan-mcp-bridge

How it works

Claude ──MCP (stdio)──▶ archicad-connector (Node.js, src/)
                            │  HTTP JSON  →  http://127.0.0.1:19723  (Archicad's JSON API, ports 19723-19744)
                            ▼
                     Archicad 26 ── official API.* commands (elements, properties, classifications, navigator, layouts...)
                                └─ API.ExecuteAddOnCommand → "ClaudeConnector" add-on (C++, addon/)
                                     create/modify every element type, views & images, exports, GDL, Teamwork, BCF ...
  • The MCP server (src/) exposes typed tools (zod schemas → JSON Schema) and talks to Archicad over HTTP.

  • The Claude Connector add-on (addon/, C++ against the Archicad 26 API DevKit) implements ~170 JSON commands the official API lacks. Without the add-on only the official-API tools work (archicad_status tells you which).

Requirements

Archicad

26 (tested: 26.0.0 build 5002, Russian localization, macOS Intel). Any localization works.

OS

macOS (Intel or Apple Silicon). The MCP server itself is cross-platform; the add-on build scripts are macOS-only (see Windows).

Node.js

≥ 20

Add-on build

Xcode Command Line Tools (xcode-select --install), cmake and ninja (brew install cmake ninja), Python 3

Graphisoft Developer ID

Required for the add-on to load in licensed Archicad — see Add-on ID (MDID).

Installation

git clone https://github.com/davidharutyunyan/archicad-mcp-connector.git && cd archicad-mcp-connector
npm install
npm run build                      # MCP server -> dist/

1. Build and install the add-on

bash scripts/fetch-devkit.sh       # downloads Graphisoft's official Archicad 26 API DevKit (≈170 MB) into .devkit/
# put your add-on ID into addon/mdid.local.cmake first (next section)
bash scripts/archicad.sh stop      # Archicad must be closed while the add-on is registered
bash scripts/build-addon.sh        # -> addon/build/ClaudeConnector.bundle
bash scripts/install-addon.sh      # copies it to ~/Library/ClaudeConnector/AC26/ and registers it in the Add-On Manager
bash scripts/archicad.sh start     # starts Archicad with a fresh project from the default template

scripts/dev-cycle.sh does build → stop → install → start in one go. Check the result with bash scripts/archicad.sh status (or the archicad_status tool): commandCount ≈ 170.

Add-on ID (MDID)

Licensed Archicad loads only add-ons whose MDID (Developer ID + Add-On ID) was issued by Graphisoft; otherwise the Add-On Manager shows "The authenticity of this add-on cannot be verified. Please contact the distributor."

  1. Sign in at archicadapi.graphisoft.com with your Graphisoft ID and register as a developer → you get a Developer ID.

  2. In your profile open Add-ons, create "Claude Connector" → Local ID.

  3. Create addon/mdid.local.cmake (git-ignored):

    set (AC_MDID_DEVELOPER <your developer id>)
    set (AC_MDID_LOCAL     <your add-on local id>)
  4. bash scripts/dev-cycle.sh.

Local testing only: addon/mdid.local.cmake may temporarily borrow the public MDID of the open-source Tapir add-on (it is in Tapir's own repository). Two add-ons cannot share an MDID, so install-addon.sh then disables Tapir in the Add-On Manager (python3 scripts/addon_manager.py enable-tapir restores it; your Archicad preferences are backed up to ~/Library/ClaudeConnector/prefs-backups/). Never distribute a build with a borrowed ID.

2. Connect Claude

Claude Code

claude mcp add archicad -s user -- node /absolute/path/archicad-mcp-connector/dist/index.js

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "archicad": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/archicad-mcp-connector/dist/index.js"],
      "env": { "ARCHICAD_TOOLSETS": "all" }
    }
  }
}

Use an absolute node path (e.g. ~/.nvm/versions/node/v24.x/bin/node) — GUI apps do not see your shell's PATH. Then open (or create) a project in Archicad — the JSON API only listens while a project is open — and ask Claude to run archicad_status.

Configuration

Variable

Default

Meaning

ARCHICAD_PORT

auto

Fixed JSON API port. Default: scan 19723-19744 and prefer an instance with the add-on.

ARCHICAD_HOST

127.0.0.1

Archicad host.

ARCHICAD_TIMEOUT_MS

120000

Per-request timeout (renders/exports pass their own longer timeouts).

ARCHICAD_TOOLSETS

all

Which tool families to load (fewer tools = less context). Comma list of families and presets, -name excludes. Presets: minimal (views + query), modeling, documentation, data. Families: project, stories, attributes, element-query, element-edit, walls, columns-beams, slabs-roofs, openings, objects-library, zones, drafting, dimensions, complex-elements, views, documentation, properties, collaboration, official (system and elements are always loaded). Example: modeling,dimensions or all,-collaboration,-official.

ODA_FILE_CONVERTER

–

Path to the ODA File Converter executable; enables real .dwg output in export_dwg (DXF works without it).

Several Archicad instances? archicad_status lists them; select_archicad_instance {port} switches.

Using it (for Claude and for you)

The full guide is docs/CLAUDE_GUIDE.md. The essentials:

  1. Orient → discover → plan → build in batches → verify → document. Start with archicad_status, get_project_info, get_stories; look up names with get_attributes / search_library_parts.

  2. Units are meters and degrees; elevations are relative to the element's home story.

  3. Walls: referenceLine: "Outside" = the outer face, body to the right of begin→end — draw exterior walls clockwise. Slabs: level is the top surface. Openings: host wall GUID + distance from the wall begin to the centre.

  4. Look at the result: capture_view {"threeD": {"mode": "axonometric", "azimuth": 225, "altitude": 35}}, capture_view {"view": {"window": "FloorPlan", "story": 0}, "zoom": {"mode": "fit"}}.

  5. Everything is one undo step per call; undo / redo exist.

Example prompts:

  • "Build a 10×8 m single-storey brick house with a hip roof, two rooms, a door and three windows, then show me a 3D view."

  • "List all walls on the ground floor with their composites and total wall area; change the exterior ones to ."

  • "Create sections through the building, place the ground floor plan and a section on a new A3 layout and export it as PDF."

  • "Add a 'Fire rating' property to all doors, set EI30 on the ones in the corridor and export IFC."

  • "Write a GDL object for a planter box with a parametric height and place four of them along the terrace."

  • "Add electrical and plumbing plans for both floors plus a 3D plumbing schematic, and publish the whole plan book (architecture, ЭО, ВК sheets with filled title blocks) as one PDF." (verified live on a two-storey house: 17 sheets)

Tools

Complete generated reference with every field: docs/TOOLS.md (npm run docs:tools regenerates it).

Family

Highlights

system

archicad_status, select_archicad_instance, get_connector_guide, list_addon_commands, execute_json_api_command, execute_addon_command

elements

create_elements, get_element_details, modify_elements, get_supported_element_types (generic, all types)

project

project info & Project Info fields, save / save as (pln, pla), open / new / close, preferences (units...), geo location, rebuild, undo / redo, quit

stories

get / create / modify / delete stories, set current story

attributes

get all 16 attribute types; create layers, layer combinations, composites, building materials, surfaces, fills, line types, zone categories, profiles; duplicate / modify / delete; pens; layer states; apply layer combination

walls, columns-beams, slabs-roofs

walls (straight, curved, trapezoid, slanted, composite, profiled), segmented columns & beams (holes, tapering), slabs, single/multi-plane roofs, shells (extruded / revolved / ruled), meshes

openings

windows & doors in walls, skylights in roofs/shells, Opening tool (slab/wall holes)

objects-library

objects, lamps, library search & details & scripts, create GDL library parts, GDL parameters get/set, swap library part, library list/add/remove/reload

zones

automatic (by point) and manual zones with stamps & areas, relocation, update_zones

complex-elements

morphs (box, extrusion, arbitrary mesh), curtain walls (grids, panels, frames), stairs, railings

drafting, dimensions

lines, arcs, circles, polylines, splines, hatches, texts (multi-style), labels (associative), hotspots, pictures; linear / level / radial / angle dimensions, dimension_walls

element-query, element-edit

find/filter, counts, quantities, relations, sub-elements, selection, 2D/3D geometry; move / copy / rotate / mirror / elevate / resize / delete, copy to stories, group, lock, draw order, trim, merge, solid operations

views

windows & navigation, zoom, 3D camera/axonometry, show in 3D, capture_view (images), render, sections / elevations / interior elevations / details / worksheets, view settings

documentation

databases, layouts' drawings: place / modify / delete / update, publish, export PDF / IFC / DXF(+DWG) / OBJ / STL / GSM / module, merge, hotlinks

properties

property groups & definitions CRUD (incl. enums), values by name, attribute property values, IFC data & properties, classification systems & items CRUD, XML import

collaboration

Teamwork status/send/receive/reserve/release, issues (comments, attachments) + BCF import/export, favorites, tool defaults, revisions

official

typed wrappers of the official JSON API: element lists/types/bounding boxes/components, classifications, navigator tree & items, layouts, attribute folders, publisher sets, pen tables, profile previews

Limitations (Archicad 26 API)

  • No native undo API — undo/redo trigger Archicad's Edit menu (macOS) and act on the whole undo history.

  • No DWG writer in the API — export_dwg writes DXF (R12) and converts to DWG only with the ODA File Converter.

  • Zones: two automatic zones cannot share a room; a zone's reference point cannot be moved in place (the connector re-creates it).

  • Base lines of existing stairs, railings and curtain walls cannot be edited (re-create them); spline geometry is read-only after creation.

  • Openings cannot be placed in polygonal walls; an opening's host cannot be changed.

  • render_view depends on CineRender; if Cineware crashes on the machine it returns a blank image (flagged in the result) — capture_view still works.

  • Project open/close/quit end the API connection until a project is open again.

  • GDL dictionary parameters are not accessible; library part creation cannot check GDL syntax.

  • MEP Modeler parts (pipes, ducts, cable trays) cannot be created: model pipes as circular beams/columns on the MEP layers and draw wiring in 2D (recipe in the guide, §4.9).

  • A Layout Book subset's numbering cannot be changed after creation: create subsets with the wanted custom ID.

Troubleshooting

Symptom

Fix

No running Archicad found

Open or create a project (the API listens only while a project is open).

Add-on commands "not available"

archicad_status → connectorAddOn. Check the Add-On Manager: authenticity cannot be verified = missing/invalid MDID (see above). ~/Library/Logs/ClaudeConnector.log shows whether the add-on initialized.

Calls time out

A modal dialog is open in Archicad (answer it), or a long render/export is running.

Archicad starts slowly after a crash

It recovers the autosave first (can take minutes). Crash reports: ~/Library/Logs/DiagnosticReports/Archicad-*.ips.

"Unrecognized key(s)"

Inputs are strict — fix the field name the error mentions.

Wrong names

Attribute/library names are localized — copy them from get_attributes / search_library_parts.

Development

src/                     MCP server (TypeScript): archicad/client.ts, tools/<family>.ts, guide.ts
addon/Src/Core/          add-on framework: command registry, JSON helpers, element adapters, polygons, library parts
addon/Src/Commands/      one file (or prefix group) per family
scripts/                 fetch-devkit, build/install add-on, archicad.sh start|stop|restart|status, dev-cycle, addon_manager.py,
                         mcp-call.ts (call any tool from the shell), gen-tool-reference.ts, sig.ts
test/unit/               vitest with a fake Archicad (npm test)
test/live/               live suites against a running Archicad (npm run test:live — restarts Archicad on a fresh project)
docs/                    CLAUDE_GUIDE.md, TOOLS.md (generated), DEVELOPING.md
examples/                worked examples with screenshots (two-story-house)
.github/workflows/       CI
  • Call tools exactly like Claude does: npx tsx scripts/mcp-call.ts create_walls '{"walls":[...]}'.

  • CI (GitHub Actions, every push and pull request): typecheck, build and unit tests on Linux (Node 20 / 22 / 24) and macOS, a check that docs/TOOLS.md is up to date, and a universal (arm64 + x86_64) build of the add-on against the public Archicad 26 DevKit. The live suites need a running Archicad and stay local.

  • Architecture, conventions, Core API and patterns for adding commands/tools: docs/DEVELOPING.md.

  • Windows: the MCP server runs unchanged; the add-on sources are portable C++ but the CMake file and scripts are set up for macOS — port addon/CMakeLists.txt following the DevKit examples' WIN32 branches and build with MSVC.

License

MIT — see LICENSE. Archicad and the Archicad API DevKit are © Graphisoft SE; the DevKit is downloaded from Graphisoft's official repository and is not redistributed here.

Available Tools

258 tools
add_issue_commentAdd issue commentsA

Adds comments to issues (one undo step; several comments / issues per call). Output: {results: [{issue: {guid, name}, comment: {guid, author, text, status, created}} | {error}]} in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentsYesComments to add
undoNameNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false. The description adds real value beyond that: it discloses that all additions collapse into 'one undo step' and that the call batches multiple comments/issues, which is genuinely useful behavior context for a mutation tool.

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?

A single sentence, front-loaded with the action and scoping, with the output contract folded in compactly. Nothing is wasted, though the trailing output shape makes it slightly dense.

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 no output schema, the description correctly inlines the return shape and ordering ('in input order'), and annotations cover the safety hints. The only real gap is the undocumented undoName parameter, which is minor against an otherwise complete picture.

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

Parameters2/5

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

Schema description coverage is only 50%, and the description names no parameters at all. The comments array fields are documented in the schema, but undoName (maxLength 255, no description) is left entirely undefined in both places, so the description fails to compensate for the coverage gap.

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?

States a specific verb+resource ('Adds comments to issues') and immediately distinguishes itself from the read-side sibling get_issue_comments and the create_issue sibling. It also conveys batch scope ('several comments / issues per call'), so an agent knows this is the write path for commenting.

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?

The intent is implied clearly by the name and the batch note, but it never says when to prefer this over get_issue_comments or create_issue, nor any prerequisite (e.g. issue must exist). No explicit alternatives or exclusions are named.

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

add_librariesAdd librariesA
DestructiveIdempotent

Adds local libraries to the project and loads them: absolute folder paths (or .lcf library container files) on this Mac; '~/' is expanded. Already loaded paths are reported as alreadyLoaded. NOT undoable. Returns per-path results and the new library list.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesAbsolute folder or .lcf paths, e.g. '/Users/me/Documents/My Objects'

TDQS

A3.8/5.0
Behavior4/5

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

Goes well past the annotations by declaring 'NOT undoable' (a concrete reversibility statement), stating that already-loaded paths are reported rather than erroring, and naming the return payload (per-path results plus the new library list). This is consistent with destructiveHint=true and idempotentHint=true and adds real decision-relevant context.

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?

Three tight sentences with no filler, and the critical constraint ('NOT undoable') is placed early. Dense but every clause carries information an agent needs.

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 no output schema, the description compensates by summarizing the return shape, and it covers path format, undoability, and repeat-call behavior for a destructive single-parameter mutation. Only explicit sibling differentiation is missing.

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 coverage is 100% (baseline 3), and the description adds meaning the schema lacks: '~/' expansion, that values are Mac-local absolute paths, and that .lcf library containers are also acceptable. That is genuine added semantics over the schema's single 'paths' description.

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?

Specific verb+resource ('Adds local libraries to the project and loads them') with the accepted input kinds spelled out (absolute folder paths or .lcf containers). It clearly distinguishes the operation from a plain read, but never names or contrasts the nearby siblings remove_libraries / reload_libraries / get_libraries, so the agent must infer which of the four library tools to pick.

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 rather than stated: the path-format rules and the 'alreadyLoaded' behavior tell the agent it is safe to re-run, but there is no explicit when-to-use-this-instead-of-X guidance despite three sibling library tools. Adequate but leaves the agent to infer the routing.

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

apply_favoriteApply favoriteA
DestructiveIdempotent

Applies a favorite. target 'Defaults' (default) makes it the current settings of its tool, like double-clicking it in the Favorites palette — elements created afterwards (in Archicad or with create_* tools without explicit values) get these settings. target 'Elements' injects its settings into existing elements of the SAME type (geometry, position and story are kept). Output: {favorite, type, variation?, target, applied? (Defaults), results?: [{guid, applied: true} | {error}] (Elements), warnings?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact favorite name (localized, as listed by get_favorites)
targetNo'Defaults' (tool settings) or 'Elements' (existing elements). Default: Elements when elements are given, else Defaults
elementsNotarget Elements: the elements to change (must be of the favorite's type)
undoNameNo
applyCategoriesNoAlso apply the favorite's element categories (default true)
applyPropertiesNoAlso apply the favorite's stored property values (default true)
applyClassificationsNoAlso apply the favorite's classifications (default true)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, idempotentHint=true, readOnlyHint=false; the description is consistent and adds real context beyond them: what survives (geometry, position, story) when injecting into Elements, and the full output shape per target. It does not discuss permissions/locks or failure modes beyond the per-element error shape, so it is strong but not exhaustive.

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?

Front-loads the core action, then adds target semantics and output in compact, information-dense sentences with zero filler. It is somewhat long and dash-heavy for a two-mode tool, but every clause carries distinct operational meaning.

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 no output schema, the description compensates by enumerating the return fields per target (favorite, type, variation, target, applied, results, warnings), and it fully covers both modes. The remaining gap is the three boolean apply* toggles and undoName, which the schema documents but the description never contextualizes.

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 coverage is already 86%, so the baseline is 3, but the description genuinely extends the target parameter's meaning by spelling out the downstream consequences of each enum value (future elements inherit settings vs existing same-type elements are modified in place). undoName and the apply* flags are left entirely to the schema, which is acceptable at this coverage.

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?

States a specific verb+resource ('Applies a favorite') and immediately disambiguates the two operating modes (Defaults vs Elements). An agent can distinguish it from create_favorite, delete_favorite, rename_favorite, and set_tool_defaults without opening any 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?

Explains the two targets and their effect, including the 'like double-clicking it in the Favorites palette' analogy for Defaults and the geometry/position/story preservation for Elements, which tells the agent which mode fits which situation. It lacks an explicit pointer to sibling tools (e.g., get_favorites to discover names, or create_* vs set_* alternatives), so it stops just short of full when/when-not guidance.

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

apply_layer_combinationApply layer combinationA
DestructiveIdempotent

Makes a saved layer combination active in the current model window (sets the visibility/lock/wireframe of all layers). List combinations with get_attributes {type: 'LayerCombination'}. Returns {ok, layerCombination, activeLayerCombination}.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerCombinationYesLayer combination name (localized), index or {guid}

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare destructive=true, idempotent=true, readOnly=false; the description corroborates by explaining that applying a combination rewrites the state of ALL layers, which is the source of the destructive/wide-blast-radius behavior. It also documents the return shape, adding value beyond the annotations.

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?

Three tight sentences, front-loaded with the action and effect, followed by the discovery pointer and return shape. Every sentence carries information; nothing is padded.

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 no output schema, the description usefully names the return fields (ok, layerCombination, activeLayerCombination), and annotations plus a 100%-covered schema handle safety and input. Only an explicit when-vs-alternatives statement is missing.

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 coverage is 100% and the schema already documents the accepted forms (name, index, {index}, {name}, {guid}). The description adds only the discovery hint, which sits outside the parameter itself, so baseline 3 is appropriate.

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?

Specific verb (makes active) plus resource (saved layer combination) and the concrete effect (sets visibility/lock/wireframe of all layers). This distinguishes it from the many layer/state siblings such as set_layer_states and create_layer_combinations.

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?

It gives a discovery pointer (list combinations with get_attributes {type: 'LayerCombination'}), which helps the agent find valid values. However, it never states when to prefer this over set_layer_states or other layer-state tools, so usage is only implied.

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

archicad_statusArchicad statusA
Read-onlyIdempotent

Checks the connection: lists running Archicad instances (port, version, build, language), which one is active, and whether the Claude Connector add-on (full create/modify power) and Tapir add-on are available. Call this first if anything fails.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds real context beyond that: it explains the distinction between the Claude Connector add-on ('full create/modify power') and the Tapir add-on, which tells the agent what capabilities are available after the check.

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

Conciseness5/5

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

One dense sentence enumerating the return contents, followed by a single short directive sentence. Front-loaded with the core purpose and no wasted words.

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 no output schema, the description correctly takes on the burden of describing what is returned (instances, active instance, add-on availability). It is nearly complete for a diagnostic tool, though it doesn't indicate behavior when no instance is running or the error/empty-result shape.

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 tool takes zero parameters, so there are no parameter semantics to explain; baseline 4 applies. The description appropriately uses its space to describe outputs instead.

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?

States a specific verb ('checks the connection') and enumerates exactly what it reports: running Archicad instances with port/version/build/language, which is active, and add-on availability. This is clearly distinguishable from siblings like select_archicad_instance or get_connector_guide.

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?

'Call this first if anything fails' gives an explicit, actionable trigger condition for the tool. It does not name alternative diagnostic tools or state when NOT to call it, but the usage context is clear.

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

attach_elements_to_issueAttach elements to issueA
DestructiveIdempotent

Attaches elements to an issue (one undo step). type Highlight (default) just points at them; Creation / Deletion mark them as proposed new / to-be-deleted elements; Modification either pairs existing elements (modificationPairs: original → proposed replacement) or, with plain elements, lets Archicad create a modified copy of each. Output: {issue: {guid, name}, type, attached: [guid], missing?: [guid of non-existing elements], modificationPairs?: [{original, modified}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoHow the elements relate to the issue: Highlight (just point at them; default), Creation (proposed new elements), Deletion (elements proposed for deletion), Modification (proposed changes: pairs original → modified)
issueYesIssue (GUID or exact name, see get_issues)
elementsNoElements to attach
undoNameNo
modificationPairsNoOnly with type Modification (implied when omitted): pairs of original and modified elements

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true; the description adds that the operation is 'one undo step' and discloses the response shape including a missing?: list of non-existent element GUIDs. That is real context beyond the annotations, though permission/auth constraints and what 'destructive' means here go unstated.

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?

Front-loaded with the core action, then dense but useful clause-by-clause detail on each type and the return payload. Every sentence earns its place; slightly dense in the middle but not wasteful.

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 no output schema, the description appropriately spells out the return object and the meaning of each type. The only gaps are undoName semantics and any mention of failure/authorization behavior for a destructive operation.

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 coverage is 80%, but the description adds non-obvious semantics: modificationPairs may be omitted (Modification implied), and with plain elements Archicad creates a modified copy of each. Only undoName is left unexplained, which is minor.

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?

States a specific verb+resource ('Attaches elements to an issue') and distinguishes itself from likely siblings (detach_elements_from_issue, get_issue_elements) by describing the four attachment semantics. An agent can tell what it does 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 Guidelines4/5

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

Explains when each type value applies (Highlight points, Creation/Deletion propose, Modification pairs or copies), which is genuine usage guidance for choosing behavior. It does not name sibling tools or state exclusions, so it stops short of a 5.

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

capture_viewCapture view (screenshot)A
Idempotent

Claude's eyes: saves the ACTIVE Archicad window (floor plan, section, elevation, detail, worksheet, layout or 3D) as a picture and returns it as an image. Optional preparation in the same call, in this order: goToView (saved view), view (same fields as open_view), threeD (same fields as set_3d_view; switches to 3D), zoom (same fields as zoom). 2D windows are captured as currently zoomed (use zoom {mode:'fit'} or {mode:'elements'} first); 3D captures use the 3D window size — width/height set it temporarily. Images are downscaled to maxSize (default 1600px). Examples: {view:{window:'FloorPlan', story:0}, zoom:{mode:'fit'}}; {threeD:{mode:'perspective', azimuth:225, altitude:25}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFirst open this window (open_view fields)
zoomNoZoom before capturing (zoom tool fields)
widthNo3D: capture width in px (temporarily resizes the 3D window); 2D: max width of the returned image
formatNoImage format (default png; jpeg is smaller for shaded 3D views and renders)
heightNo3D: capture height in px; 2D: max height of the returned image
saveToNoAlso keep a full-resolution copy at this absolute file path
threeDNoFirst set up the 3D view (set_3d_view fields) and switch to the 3D window
maxSizeNoLongest side of the returned image in px (default 1600); larger pictures are downscaled
goToViewNoFirst open this saved view (go_to_view)
cropToWindowNotrue (default) = only the visible window area; false = the whole drawing
keepSelectionHighlightNoKeep the selection highlight in the picture (default false)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations set readOnlyHint=false, and the description explains the side effects that justify it: it switches to the 3D window, width/height temporarily resize the 3D window, and images are downscaled to maxSize (default 1600). These are real behavioral facts beyond the annotations. It omits the return payload shape, but the image return is stated.

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?

Front-loaded with the core purpose, then preparation order, then caveats and examples. Dense but each clause earns its place; the parenthetical cross-references are compact. Slightly long but not padded.

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 an 11-parameter tool with nested objects and no output schema, the description covers capture target, preparation ordering, defaults (maxSize, format, cropToWindow implied), and the zoom-first caveat for 2D. The absence of an output schema is not a gap since it states the return is an image. Minor omission: no explicit statement about error/permission behavior.

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 coverage is 100%, so the baseline is 3, but the description adds value the schema cannot: it names the cross-tool field sets ('same fields as open_view', 'same fields as set_3d_view', 'same fields as zoom') and supplies worked examples. The ordering constraint among the nested objects is also semantic information not present in 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?

States a specific verb+resource ('saves the ACTIVE Archicad window ... as a picture and returns it as an image') and enumerates the window types covered, which cleanly separates it from siblings like render_view, export_3d_model, and export_pdf. An agent can tell what it produces (an image of the current window) 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 Guidelines4/5

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

Gives clear operational context: the optional preparation order (goToView -> view -> threeD -> zoom) and the condition that 2D windows capture at the current zoom, so use zoom {mode:'fit'} first. It does not explicitly exclude alternatives (e.g. render_view for photorealistic output) or state when-not-to-use, which keeps it below a 5.

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

change_library_partChange library part of elementsA
DestructiveIdempotent

Swaps the library part of placed objects, lamps, doors, windows, skylights, zones or symbol labels (e.g. replace a chair model, change a door type) in one undo step, keeping position/orientation. The new part must have the same type (Object for objects, Door for doors ...). keepParameters (default true) copies values of same-named, same-typed, visible, non-unique GDL parameters like Archicad does; keepSize (default true for doors/windows/skylights, false otherwise) keeps A/B. Extra params / sizeA / sizeB / height are applied afterwards. A top-level libraryPart applies to every element without its own. Returns [{guid, type, libraryPart, carriedOverParameters} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYes
keepSizeNoDefault for all elements: keep A/B sizes
undoNameNoName of the undo step
libraryPartNoNew library part for all listed elements (localized name, index or {guid})
keepParametersNoDefault for all elements: copy matching parameter values (default true)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructiveHint=true, idempotentHint=true, openWorldHint=false. Description adds rich behavioral context: single undo step, position/orientation preserved, type constraint, default-parameter behavior (keepParameters/keepSize), parameter scripts run like the settings dialog, and the return shape. This goes well beyond what annotations cover.

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?

One dense paragraph, front-loaded with the verb and scope. It is information-dense and every clause carries meaning, though the middle section on keepParameters/keepSize/params reads a bit compressed and could be structured as a short list. Not bloated, but not maximally scannable.

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 mutation tool with rich schema and annotations, the description covers behavior, defaults, constraints, and return shape, so an agent has everything needed to call it correctly. No output schema exists, and the description does include the return format, which is a strong addition.

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?

Schema coverage is 80%, but the description explains semantics of the key behavioral parameters (keepParameters default true, keepSize default true for doors/windows/skylights, extra params applied afterwards) and the top-level vs per-element libraryPart precedence. Adds real meaning beyond 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?

Specific verb ('Swaps'), specific resource ('library part of placed objects...'), enum of affected element types, and examples ('replace a chair model, change a door type'). Clearly distinguishable from siblings like modify_elements or set_gdl_parameters.

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?

Description implies when to use it: when swapping library parts across objects/doors/windows/etc. It notes the type-matching constraint (new part must be same type), which is a usage prerequisite, and contrasts with set_gdl_parameters via its param semantics. No explicit 'use X instead when Y', but context is clear.

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

clone_project_map_item_to_view_mapSave view from Project Map itemA

Saves a Project Map viewpoint (story, section, elevation, detail, worksheet, 3D view, schedule, index...) as a new view in the View Map (like 'Clone a view' in the Navigator), with the current view settings. The new view can then be placed on layouts. Output: {viewId} = the new View Map item id.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesProject Map item id (get_navigator_tree {tree: 'ProjectMap'})
parentNoView Map folder to put the view in (default: the View Map's top folder)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare a safe non-destructive, non-idempotent write; the description adds beyond that by specifying the output ({viewId}) and that the copy inherits the current view settings. It does not warn that repeated calls produce duplicate View Map items, which is the one behavioral trait an agent would want given idempotentHint=false.

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?

Front-loaded with the action and the source/destination mapping; the output clause is clearly separated. The parenthetical enumeration of viewpoint types is somewhat long but serves to define the resource, so it earns most of its space.

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 mutation tool with no output schema, the description supplies the return shape ({viewId}) and the follow-on placement workflow, and the schema covers the params. Only the duplicate-creation behavior on repeat invocation is left unstated, a minor gap.

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% – both 'item' and 'parent' are documented in the schema, including the hint to obtain ids via get_navigator_tree. The description adds no parameter-level detail (e.g., default parent behavior) beyond that, so baseline 3 applies.

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?

States a precise verb ('Saves ... as a new view') and both resources involved: the Project Map item source and the View Map destination. The analogy to 'Clone a view' in the Navigator and the enumerated viewpoint types (story, section, elevation, 3D view...) make it unmistakable which sibling operations it is not, e.g. create_view_map_folder or create_layout.

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?

Explains the effect and what can be done afterward ('The new view can then be placed on layouts'), which gives the agent a clear context for choosing this over get_view_settings/set_view_settings. It does not name an explicit alternative or state when NOT to use it, so it falls short of a 5.

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

close_projectClose projectA
Destructive

Closes the current project. WARNING: the Archicad JSON API only listens while a project is open, so after this NO tool works until a project is opened by hand in Archicad. Prefer open_project/new_project to switch projects. Requires confirm: true and saveFirst or discardChanges.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true
saveFirstNoSave the current project in place before continuing (fails for untitled projects: use save_project_as first)
discardChangesNoContinue WITHOUT saving: unsaved changes of the current project are lost. Exactly one of saveFirst / discardChanges must be true

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description adds the critical non-obvious consequence: the JSON API only listens while a project is open, so after this call NO tool works until a human reopens a project. That is the single most important behavioral fact for an agent and it is not derivable from annotations or schema.

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

Conciseness5/5

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

Three sentences, front-loaded with the action, then the irreversibility warning, then the routing and prerequisites. No filler; each sentence carries distinct information.

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 destructive, non-idempotent mutation with no output schema, the description covers the safety profile (annotations), the hard consequence of calling it, the alternative tool, and the required parameters. Nothing an agent needs to call this correctly is missing.

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%, so all three parameters are already fully documented in the schema, including the 'exactly one of saveFirst/discardChanges' constraint and the untitled-project caveat. The description only restates the requirement, adding no new parameter meaning. Baseline 3 applies.

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?

States a specific verb and resource ('Closes the current project') and immediately differentiates itself from the sibling switch-project tools (open_project/new_project) and from quit_archicad by naming them. An agent can identify the operation 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 Guidelines5/5

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

Explicitly routes the agent: 'Prefer open_project/new_project to switch projects', which is exactly the when-not-to-use guidance. It also states the precondition (confirm: true plus saveFirst or discardChanges), so the agent knows the invocation requirements before calling.

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

copy_elementsCopy elementsA

Duplicates elements of ANY type displaced by vector (Edit > Move > Drag a Copy); the originals stay. count > 1 makes a linear array (copy k at k × vector, e.g. 10 columns every 6 m: vector {x: 6, y: 0}, count 10). Copies keep all settings, story, layer and properties of their original; copying a wall also copies its windows/doors. To duplicate onto other stories use copy_elements_to_stories. Returns {results: [{guid (original), copies: [new GUIDs]} | {guid, error}], createdCount, createdGroups? (GUIDs of the new groups holding the copies when whole groups were copied), additionalCreated?: [{guid, type, storyIndex}] (dependent elements created with the copies: openings of copied walls, copied group members, associative dimensions/labels), subElementsCreated? (curtain wall / stair / railing parts), warnings?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of copies (default 1). With count N, copy k is placed at k × the transformation (linear/polar array, like Archicad's Multiply)
vectorYesOffset of the (first) copy from the original, in meters
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, destructive=false, idempotent=false). The description adds substantial context beyond that: originals are preserved, copies inherit settings/story/layer/properties, host-dependent elements (windows/doors, openings, group members, associative dimensions) are created along with the copies, and internal group handling suppresses group membership by default. This is rich behavioral disclosure.

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 and the originals-stay constraint are front-loaded, then behavior, then the sibling reference. The long return-value enumeration is verbose, but since there is no output schema it is doing necessary work rather than padding.

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 complex mutation tool with no output schema, the description covers input semantics (vector, count), side effects (dependent/associative elements created), group handling, and fully enumerates the return shape including createdGroups, additionalCreated, subElementsCreated and warnings. Nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so the baseline is 3. The description goes further with a concrete worked example ('10 columns every 6 m: vector {x: 6, y: 0}, count 10') that makes the count-times-vector semantics intuitive, and clarifies that copies retain all original properties. It adds real meaning over the schema text, though much of the count/vector behavior is already documented in 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?

States a specific verb and resource ('Duplicates elements of ANY type') and immediately anchors it to the GUI operation 'Edit > Move > Drag a Copy' with the key constraint that 'the originals stay'. It also distinguishes itself from the sibling copy_elements_to_stories, so an agent can pick the right copy tool without opening schemas.

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 explicitly routes cross-story duplication to copy_elements_to_stories and explains the count>1 array pattern with a worked example, giving clear context for when this tool applies. It stops short of stating when NOT to use it (e.g. vs move_elements or create_elements), so it's clear but not exhaustive.

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

copy_elements_to_storiesCopy elements to other storiesA

Duplicates elements onto other stories at the same plan position, keeping their elevation RELATIVE to the home story (like copy + Paste to stories: a wall with bottom offset 0 on story 0 becomes a wall with bottom offset 0 on story 2). Top-linked walls/columns stay linked relative to their new home story. Copy walls/roofs/slabs rather than their windows/doors: hosted openings travel with their host. List stories with get_stories. Returns {results: [{guid (original), copies: [{storyIndex, guid} | {storyIndex, error}]}], additionalCreated?, subElementsCreated?, warnings?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
storiesYesTarget stories: story indices (0 = ground floor) or story names
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by explaining the relative-elevation semantics with a concrete worked example, the top-linked wall/column behavior, host/opening travel, and the group handling (Suspend Groups toggled and restored). It also documents the return structure, which is significant given there is no output 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?

Front-loads the core relative-elevation semantics and packs supporting detail into tight parentheticals. The final return-shape sentence is dense but justified because no output schema exists.

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 mutation tool with no output schema, the description covers the semantics, edge cases (groups, hosted elements), the dependency on get_stories, and the response shape. Nothing an agent needs to call it correctly appears to be missing.

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%, so the schema already documents all three parameters, including the accepted story formats and the includeGroupMembers default. The description only adds a pointer to get_stories, so the baseline 3 is appropriate.

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?

States a specific verb and resource (duplicates elements onto other stories) with the defining constraint of keeping elevation relative to the home story, which cleanly separates it from copy_elements and move_elements. An agent can identify the operation 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 Guidelines4/5

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

Gives concrete selection guidance (copy walls/roofs/slabs rather than their windows/doors; hosted openings travel with their host) and points to get_stories for resolving story references. It lacks an explicit statement of when to prefer this over same-story copy_elements, but the context is clear enough to route correctly.

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

create_angle_dimensionsCreate angle dimensionsA

Dimensions the angle between two non-parallel lines (one undo step): static 'line1'/'line2' {begin, end}, or two straight walls/beams/lines ('elements', linked to their end points when possible, verified, else static). The arc is centered on the lines' intersection; 'arcPoint' (a point on the arc) or 'radius' (m, default 1) places it; by default it sits between the far ends of both lines. Returns [{guid, type, angle (degrees), radius, center, arcPoint, associative} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
angleDimensionsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent creation. The description adds useful behavioral context beyond annotations: it is a single undo step, elements are linked to end points when possible and verified, and the return shape is documented.

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

Conciseness5/5

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

The description is dense but front-loaded with the core action, then covers input modes, arc placement, and return value. Every clause carries practical information for invoking or interpreting the tool.

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 complex creation tool with no output schema, the description covers the essential creation modes, undo behavior, linking behavior, and return fields. Remaining formatting details (pens, fonts, markers, story) are documented in the schema, so the description is sufficiently complete without repeating them.

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 schema documents many nested properties, but the description adds relational meaning that the schema alone does not: arcPoint/radius interaction, the arc being centered on the lines' intersection, default placement between far ends, and associative linking behavior.

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?

States a specific verb and resource: 'Dimensions the angle between two non-parallel lines'. It immediately distinguishes this from linear, level, or radial dimension tools by specifying the angle measurement and the two supported input modes.

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?

Explains the two valid usage modes (static line1/line2 or two straight elements) and notes defaults such as arc placement. It does not explicitly name sibling tools or say when to choose those alternatives, but the context is clear enough for an agent to know when this tool applies.

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

create_arcsCreate arcsA

Draws 2D circular or elliptical arcs. Three ways to define each arc: (A) center + radius + beginAngle + endAngle (degrees, CCW from +X; add minorRadius/axisAngle for elliptical arcs); (B) begin + end + arcAngle (signed sweep, + = counter-clockwise); (C) begin + through + end (three points). Archicad stores arcs counter-clockwise, so a clockwise arc (negative arcAngle) is returned with begin/end swapped. Style fields as create_lines. Full circles: create_circles. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
arcsYesArcs to draw

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, so a mutation is expected. The description nonetheless adds real value: the CCW storage quirk (clockwise arcs come back with begin/end swapped), the active-window database targeting with storyIndex default, and the per-item failure semantics ('one failing item does not stop the others') with the [{guid,type}|{error}] return shape. This is richer than the annotations alone, but it is one of many traits and does not describe auth or limits, so a 3 reflects solid-but-not-exhaustive disclosure.

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?

Dense but front-loaded with the purpose, then forms, then placement, then return/error behavior, then follow-up tools. Every sentence carries information; the only cost is high density that a hurried reader must parse carefully.

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?

With no output schema, the description compensates by specifying the return shape and partial-failure behavior. Combined with placement rules, defaults, the elliptical-arc options, and the modify/get follow-ups, nothing an agent needs to invoke this correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description adds compositional meaning the schema cannot: it explains how the parameters combine into three distinct arc forms, the degrees/CCW convention, and the sign convention for arcAngle (+ = CCW). That goes beyond the per-field definitions.

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?

States a specific verb+resource ('Draws 2D circular or elliptical arcs') and immediately distinguishes itself by naming the sibling for full circles (create_circles) and the related line/circle creation tools. An agent can tell at a glance this is the arc-creation tool, not a line or circle tool.

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

Usage Guidelines5/5

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

Explicitly lays out three alternative ways to define an arc (A: center+radius+angles, B: begin+end+arcAngle, C: begin+through+end) and routes to create_circles for full circles, modify_elements for later edits, and get_element_details for reads. It also states the placement constraint (active window; a 3D window cannot hold 2D elements), which is a genuine when-this-works condition.

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

create_attribute_foldersCreate attribute foldersA

Creates attribute folders by full path; missing parent folders are created too (e.g. ['Проект', 'Стены'] creates both). Output: {results: [{folder, guid, ok: true} | {folder, error}]}. Move attributes in with move_attributes_to_folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
foldersYesFolder paths: ['A','B'] or 'A/B', or {attributeType, path}
attributeTypeNoAttribute type of all folders (or give it per folder)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare write, non-destructive, non-idempotent. The description adds genuinely useful behavioral detail: missing parent folders are auto-created, and the per-folder result format (guid/ok vs error) is shown despite no output schema. It does not state what happens on duplicate existing folders, but the disclosed cascade and output shape exceed the annotation baseline.

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

Conciseness5/5

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

Three sentences, each earning its place: purpose plus cascade behavior first, output shape second, next-step sibling third. Front-loaded and free of waste.

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 annotations covering safety and a fully described input schema, the description supplies the missing output shape and cascade behavior needed to call it correctly. Minor gaps remain (e.g., behavior on existing folders, 200-item limit), but it is largely complete for a two-parameter creation tool.

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% and the schema itself explains path formats (array, slash-string, root), the {guid} alternative, and the attributeType enum in detail. The description only repeats 'by full path' and an example already present in the schema, adding no new semantics beyond the structured fields.

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?

States a specific verb and resource ('Creates attribute folders by full path') and clarifies scope with the cascade behavior. It also distinguishes itself from the sibling move_attributes_to_folder by directing attribute movement to that tool, so an agent can tell what this tool is and is not for.

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?

Implies usage (creating folders, then moving attributes in with a named sibling) but provides no explicit when-to-use vs alternatives, no prerequisites, and no guidance on checking existing folders via get_attribute_folders first. The follow-up suggestion is helpful but not a full usage guideline.

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

create_beamsCreate beamsA

Creates beams (one undo step): straight, horizontally or vertically curved, slanted, tapered, complex-profile and multi-segment beams, with holes and surface overrides. Coordinates in meters, angles in degrees, on the given story (default: current story). 'level' is the height of the reference axis (by default the beam top) above the home story — e.g. story height 3 m and a beam under the slab: level 2.8. Unspecified settings come from the Beam tool defaults. Chain beams end-to-start so Archicad connects them. Typical: {begin: {x: 0, y: 0}, end: {x: 6, y: 0}, level: 3, width: 0.3, height: 0.5}. Returns [{guid, type} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
beamsYesBeams to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it is a single undo step, unspecified settings inherit Beam tool defaults, the return format is [{guid, type} | {error}] in input order, and holes replace ALL existing holes. These are behavioral traits the annotations (readOnly=false, destructive=false, idempotent=false) do not convey.

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?

Front-loads what the tool creates, then units, then the 'level' semantics with an example, then a representative payload, then the return shape. It is dense and mostly earns its length, though the geometry enumeration and example make it longer than strictly minimal.

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 very large input schema, the description covers the essentials an agent needs: scope, units, defaults source, level semantics with example, chaining, undo behavior, and return format. No output schema exists, and the description supplies the return contract, so nothing critical is missing.

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 coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: units summary (meters/degrees), the semantic of 'level' with a worked example (story height 3 m, level 2.8 = beam under slab), and the chaining convention. It does not attempt to explain the many section/surface fields, which the schema already documents well.

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?

States a specific verb (Creates) and resource (beams) and enumerates the geometry variants supported (straight, curved, slanted, tapered, complex-profile, multi-segment). This clearly distinguishes it from siblings like modify_beams, create_columns, and create_elements.

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?

Gives concrete usage context: coordinates in meters, angles in degrees, default story, chaining rule ('Chain beams end-to-start so Archicad connects them'), and that unspecified settings come from Beam tool defaults. It does not explicitly contrast create vs modify (modify_beams) or name when not to use it, so it stops short of a 5.

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

create_building_materialsCreate building materialsA

Creates building materials (the material of elements and composite skins: cut fill + pens, surface, intersection priority, physical properties). Unspecified settings are copied from 'basedOn' or, when omitted, from the first building material of the project — so give at least cutFill, surface and uiPriority for a meaningful material. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
buildingMaterialsYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing default inheritance behavior ('Unspecified settings are copied from basedOn or ... the first building material of the project'), undo semantics ('Runs in one undo step'), partial-failure handling ('one failing item does not stop the others'), the exact return shape, and localization constraints. This is rich behavioral context for a non-readOnly, non-idempotent mutation tool.

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 dense but front-loaded and every sentence carries useful information: purpose, defaults, undo behavior, return format, and localization advice. It could be slightly easier to parse if broken into shorter lines, but there is essentially no wasted text.

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 complex creation tool with no output schema, the description covers the essential behavior an agent needs: what will happen to unspecified fields, undo grouping, partial failure semantics, return structure, and a key prerequisite for name lookups. Annotations and the rich input schema handle the remaining safety and field-level details.

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 schema already documents many nested fields thoroughly, but the description adds genuine meaning: it explains the fallback behavior for unspecified settings, recommends which fields to provide for a meaningful material, and clarifies the role of basedOn. It does not cover every parameter or the batch array limits, but it adds real value beyond the structured 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?

States a specific verb (Creates) and resource (building materials), and explains the domain concept ('material of elements and composite skins: cut fill + pens, surface, intersection priority, physical properties'). This clearly distinguishes it from sibling attribute-creation tools like create_surfaces, create_fills, and create_composites.

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?

Provides clear workflow guidance: 'look existing attributes up with get_attributes first,' and advises giving at least cutFill, surface and uiPriority for a meaningful material. It does not explicitly name alternatives or when-not-to-use conditions, which keeps it from a 5.

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

create_circlesCreate circles / ellipsesA

Draws full 2D circles (center + radius in m) or ellipses (+ minorRadius and axisAngle in degrees). Style fields: pen, colorOverridePen, lineType, lineWeight, category, zoneBoundary. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
circlesYesCircles/ellipses to draw

TDQS

A4.2/5.0
Behavior4/5

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

With readOnlyHint=false, destructiveHint=false, and idempotentHint=false already declared, the description still adds real behavior: placement is bound to the active window type, 3D windows reject 2D elements, results are returned per-item in input order, and one failing item does not abort the batch. It does not state permission/undo implications, but the partial-failure and window-constraint disclosures go meaningfully beyond the annotations.

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?

Front-loads what the tool draws, then the style fields, then the storage/return contract, so the most decision-relevant facts come first. It is dense and somewhat long, but nearly every clause (window constraint, default story, batch error semantics, follow-up tools) carries information.

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?

There is no output schema, yet the description spells out the return shape ([{guid, type} | {error}] in input order) and partial-failure semantics. Combined with the window/story placement rules and pointers to modify_elements and get_element_details, an agent has everything needed to call this correctly.

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%, so units (m, mm, degrees), defaults, and enumerated style fields such as pen, colorOverridePen, lineType, lineWeight, category, and zoneBoundary are already documented in the schema. The description restates a subset of these fields and adds units but no syntax or semantics the schema lacks, matching the baseline 3.

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?

States a specific verb and resource (draws full 2D circles / ellipses) and immediately disambiguates the geometry via the required parameters (center + radius, minorRadius/axisAngle for ellipses). It is easily separable from siblings like create_arcs, create_polylines, and create_elements without opening any 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?

Gives concrete usage context: elements land in the ACTIVE window's database, the floor plan uses storyIndex (default current story), and a 3D window cannot hold 2D elements. It also routes the agent onward to modify_elements and get_element_details. It stops short of explicit sibling alternatives (e.g. when to prefer create_arcs), so it is clear context rather than full when/when-not routing.

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

create_classification_itemsCreate classification itemsA

Adds classification items to an existing classification system in one undo step: nested {id, name?, description?, children?} trees, under an optional parent, inserted at the end or before a sibling. Item IDs must be unique within the system. Returns {system, items: [{guid, id, path, parent?} | {id, error}], created, failed}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
parentNoCreate the items under this item (default: at the root)
systemYesClassification system: name (e.g. 'Классификация Archicad'), 'Name version', GUID, or {name, editionVersion}
undoNameNoName of the undo step shown in Archicad

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations, it discloses that all items are added in one undo step, that item IDs must be unique within the system, and it gives the exact return shape including per-item error handling and created/failed counts. For a write tool with no output schema, this is substantial behavioral context.

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

Conciseness5/5

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

The description is two dense sentences, front-loading the action and then constraints and return shape. Every clause earns its place with no filler.

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 nested write tool with no output schema, the description covers purpose, nesting, uniqueness, undo behavior, and return format. It could be slightly more explicit about partial success semantics, but overall it is quite complete.

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 75%, and the description mostly restates what the schema already documents: the nested item shape, optional parent, and before/append insertion. It adds little new parameter meaning beyond what is already in the field descriptions.

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 specific verb ('Adds') and resource ('classification items') with the scope 'to an existing classification system'. This implicitly distinguishes it from create_classification_system and from modify/delete item tools, but it never names a sibling alternative, which keeps it from a 5.

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 'existing classification system' and the detailed insertion behavior, but the description never states when to use this tool instead of modify_classification_items, import_classifications_xml, or create_classification_system. No exclusions or alternative routing are provided.

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

create_classification_systemCreate classification systemA

Creates a classification system (like the Classification Manager's 'New'), optionally with its whole item tree, in one undo step. name + editionVersion must be unique. Items: [{id, name?, description?, children?: [...]}] (nested) — or flat with parent: ''. Then classify elements with the official classification tools and use the items in property availability. Returns {system: {guid, name, editionVersion, ...}, items: [{guid, id, path, parent?} | {id, error}], created, failed}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystem name, e.g. 'CC-test-System' or 'Uniclass 2015'
itemsNoItems to create (tree)
sourceNoSource, e.g. a URL
undoNameNoName of the undo step shown in Archicad
descriptionNo
editionDateNoEdition date YYYY-MM-DD (default today)
reuseExistingNoIf the system already exists, add the items to it instead of failing (default false)
editionVersionNoEdition/version (default '1.0')

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing atomicity ('in one undo step'), the uniqueness constraint on name+editionVersion, and partial-success semantics via the return shape (items with either {guid,...} or {id, error}, plus created/failed counts). This is meaningful behavioral context for a mutation tool.

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?

Front-loaded with the core action and scope, then layers constraints, item shapes, workflow, and return shape. Dense but each sentence carries distinct information; only minor tightening would help.

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 an 8-parameter, nested-tree mutation tool with no output schema, the description covers the action, constraints, input shapes, downstream workflow, and return structure. Coverage is strong, with only edge behavior (e.g., failure modes when reuseExisting is false and the system exists) left implicit.

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 coverage is high (88%), so the schema carries most parameter meaning. The description still adds value by explaining the two accepted input shapes for items — nested children vs. flat with parent referencing an earlier item's id — which complements rather than repeats 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?

States a specific verb and resource ('Creates a classification system') and immediately scopes it to optionally include the full item tree, plus an analogy to the Classification Manager's 'New' for humans. This distinguishes it from siblings like create_classification_items and modify_classification_system.

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?

Provides workflow guidance ('Then classify elements with the official classification tools and use the items in property availability') and a uniqueness constraint ('name + editionVersion must be unique'). It does not explicitly name the alternative sibling to use when only adding items to an existing system, though reuseExisting is hinted via schema.

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

create_columnsCreate columnsA

Creates columns (one undo step): rectangular, circular, complex-profile, tapered, slanted and multi-segment columns, with veneer, wall wrapping and surface overrides. Coordinates in meters, angles in degrees, on the given story (default: current story). Unspecified settings come from the Column tool defaults — give 'height' (unlinked) or 'topLinkedStory' (+ topOffset) so the height is what you expect. Typical: {origin: {x: 0, y: 0}, height: 3, width: 0.4, depth: 0.4, buildingMaterial: ''}. Returns [{guid, type} | {error}] in input order; read the result back with get_element_details (segments, cuts, elevations).

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsYesColumns to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a non-readOnly, non-idempotent, non-destructive write. The description adds valuable beyond-annotation context: it is a single undo step, unspecified settings inherit from the Column tool defaults (which are often top-linked), and it returns [{guid, type} | {error}] in input order. It doesn't discuss failure modes like batch partial failure in depth.

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?

Content is dense but front-loaded: purpose first, then coordinate/story defaults, then the height caveat, then the example, then the return contract. Every sentence carries information, though the enumeration of column types and the example make it slightly longer than strictly necessary.

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?

With no output schema, the description correctly supplies the return shape ([{guid, type} | {error}] in input order) and points to get_element_details for reading back segments, cuts and elevations. Combined with a working example, an agent has what it needs to call this correctly.

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 coverage is 100%, so the baseline is 3; the description still earns more by explaining the height/topLinkedStory/topOffset interaction and giving a concrete typical payload, which disambiguates how the params combine. It does not document the full range of section/surface fields, but the schema already does that.

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 clause states a specific verb and resource ('Creates columns'), then enumerates the variations it supports (rectangular, circular, complex-profile, tapered, slanted, multi-segment). This clearly distinguishes it from sibling modify_columns and the other create_* element tools.

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 gives concrete guidance on scoping (coordinates in meters, angles in degrees, default current story) and a critical usage tip about supplying 'height' or 'topLinkedStory' so the height is predictable, plus a 'typical' object example. It does not explicitly name modify_columns as the alternative when editing existing columns, so it stops short of a 5.

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

create_compositesCreate composite structuresA

Creates composite (multi-skin) structures for walls, slabs, roofs and shells. Skins are listed from the outside/reference side to the inside, each {thickness (m), buildingMaterial, core?, finish?}; the total thickness is the sum. Example: {name: 'Wall 380', skins: [{thickness: 0.02, buildingMaterial: '', finish: true}, {thickness: 0.25, buildingMaterial: '', core: true}, {thickness: 0.1, buildingMaterial: ''}, {thickness: 0.01, buildingMaterial: '', finish: true}]} (get building material names with get_attributes type BuildingMaterial). Use the composite with the 'composite' field of create_walls / create_slabs / create_roofs. basedOn copies an existing composite. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
compositesYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only state read/write and idempotency flags; the description goes further by disclosing that it runs in one undo step, that failures are per-item and do not abort remaining items, that basedOn copies an existing composite, and that names are localized (Russian Archicad). This is exactly the kind of behavior the annotations cannot convey.

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?

Front-loaded with purpose, then the key semantic rule (skin ordering) and a worked example, which is efficient for a complex nested schema. The get_attributes reminder appears twice and the example is verbose, costing some tightness.

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 2-parameter tool with a deeply nested item schema and no output schema, the description closes the gaps that matter: it documents the return shape ({results: [...]} in input order with created/existed/error variants), partial-failure behavior, and the undo grouping.

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 coverage is only 50%, but the description compensates substantively: skins are ordered outside→inside, total thickness is the sum, a concrete worked example shows thickness/buildingMaterial/core/finish usage, and basedOn semantics are clarified. It omits usage, folder and skinLines, which the schema does document.

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?

Opens with a specific verb+resource ('Creates composite (multi-skin) structures for walls, slabs, roofs and shells'), immediately distinguishing it from sibling attribute creators like create_building_materials and create_surfaces by naming the element types involved.

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

Usage Guidelines5/5

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

Explicitly routes the agent: fetch material names with get_attributes type BuildingMaterial, then attach the composite via the 'composite' field of create_walls / create_slabs / create_roofs, and look existing attributes up first for localized names. Prerequisites and downstream consumers are named, not implied.

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

create_curtain_wallsCreate curtain wallsA

Creates curtain walls in one undo step along a straight ('begin'/'end') or polyline/curved ('path') base line with the Curtain Wall tool's default scheme (frame/panel classes). Set 'height', the grid (primarySpacing = module width along the wall, secondarySpacing = module height, or full primaryGrid/secondaryGrid patterns), panel surfaces/thickness and frame surface. Coordinates in meters, angles in degrees, on the given story (default: current story); unspecified settings come from the tool defaults. Returns [{guid, type} | {error}]. get_element_details lists segments, grids, frame/panel classes and the GUIDs of every frame and panel (edit single panels/frames with modify_curtain_wall_parts; change height/grid/classes with modify_curtain_walls).

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step shown in Archicad
curtainWallsYesCurtain walls to create

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=false/destructive=false/idempotent=false, so the burden is lower, yet the description adds substantive context: creation happens in a single undo step, unspecified settings fall back to tool defaults, and the return shape [{guid, type} | {error}] is disclosed even though no output schema exists. Not exhaustive (no auth/permission notes) but genuinely additive.

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?

A single dense but well-ordered paragraph that front-loads what is created and the base-line modes before descending into fields, defaults and return value. Every sentence carries information; it is long but not padded.

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 two-parameter, high-coverage creation tool with no output schema, the description covers construction modes, units, defaults, one-undo-step behavior, return format and the follow-up editing tools. Only minor gaps (idempotency/pagination-free bulk limits) remain.

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 coverage is 100%, so the baseline is 3; the description raises it by clarifying semantics the schema doesn't spell out — primarySpacing as module width along the wall, secondarySpacing as module height, meters for coordinates, degrees for angles, and current-story defaulting.

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?

States a specific verb and resource ('Creates curtain walls') and distinguishes the two construction modes ('begin'/'end' straight vs 'path' polyline/curved). It also names the two sibling tools it is not, so an agent can route without opening either 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?

Explicitly routes post-creation editing to modify_curtain_wall_parts (single panels/frames) and modify_curtain_walls (height/grid/classes), which is real when-to-use guidance. It does not, however, state exclusions against neighboring creation tools like create_walls, so it stops short of full 5-level guidance.

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

create_detailsCreate detailsA

Creates detail markers (one undo step) in the current floor plan/section/elevation (or the floor plan when another window is active): the boundary polygon or box (m) defines the region copied into a new detail viewpoint; the marker is placed at markerPosition. Returns [{guid, name, referenceId, database, markerPosition, polygon}]. Open the detail with open_view {element: guid}.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailsYes
undoNameNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the mutation profile (non-read-only, non-destructive, non-idempotent). The description adds useful behavior beyond annotations: it is one undo step, returns a specific array shape, and tells the agent to open the resulting detail with open_view.

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

Conciseness5/5

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

Three front-loaded sentences with no filler; the window fallback, boundary semantics, return shape, and follow-up action are all compactly stated.

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 create tool with a deep nested schema and no output schema, the description supplies the return shape, follow-up action, and core region/marker semantics. It omits undoName meaning and some defaults, but the nested schema covers most parameter detail.

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?

The nested schema descriptions already define box, polygon, markerPosition, storyIndex, and other properties in detail. The description restates boundary and marker semantics but does not explain undoName, and with top-level schema description coverage reported at 0%, it leaves a top-level parameter gap unfilled.

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?

States a specific verb ('Creates') and resource ('detail markers'), with the active-window scope and fallback to the floor plan. This clearly distinguishes it from sibling creation tools such as create_sections or create_elevations.

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 clear usage context: the current floor plan/section/elevation, or the floor plan when another window is active, and it points to open_view for the follow-up. It does not name when to choose this over sibling creation tools, but the context is explicit.

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

create_dimensionsCreate linear dimensionsA

Creates linear dimension chains (one undo step). Each dimension = ordered 'points' + a dimension line (direction + linePoint/offset). Points: {x, y} static, or linked to elements (associative, the dimension follows edits): {element, at: 'begin'|'end'} for wall/beam/line reference-line ends, {element, x, y} for the element anchor (hotspot, corner, opening point) nearest to x,y — list anchors with get_dimension_anchors. Distances are measured along 'direction' (e.g. 'Horizontal' = X distances). Units: m; text/marker sizes in paper mm. Style defaults come from the Dimension tool settings. Dimensions linked to model elements are placed on the Floor Plan (story: storyIndex, default current); static ones go into the active window (plan, section, detail, worksheet, layout). Linked points that Archicad cannot resolve fall back to static (see 'warning'). For walls prefer dimension_walls (mode 'Thickness' for wall widths). Returns [{guid, type, pointCount, associativePoints, segments (measured lengths), total, linePoint} | {error}] in input order; one failing item does not stop the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
dimensionsYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnly=false, destructive=false, idempotent=false; the description adds real behavior beyond them: the whole call is 'one undo step', unresolved linked points silently fall back to static with a 'warning', and a single failing item does not abort the rest. It also documents per-item error returns and input-order correspondence.

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?

Dense but front-loaded: purpose, then point model, then units, then placement, then alternatives, then return shape. Every sentence carries information, though the middle associative-point explanation is one long parenthetical that takes a re-read.

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 complex mutation tool with no output schema, the description covers everything an agent needs: creation semantics, units, placement rules, fallback behavior, partial-failure tolerance, the wall alternative, and an inline description of the returned array shape.

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?

Top-level schema coverage is reported as 0% (the sole 'dimensions' param wraps a deeply-annotated item schema), so the description must carry the burden and does: it spells out the three point forms ({x,y}, {element, at}, {element, x, y}), the anchor-listing prerequisite via get_dimension_anchors, projection semantics, and the m vs paper-mm unit split.

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?

States a specific verb+resource ('Creates linear dimension chains') and immediately scopes it against siblings by naming the alternative ('For walls prefer dimension_walls'). It is trivially distinguishable from create_angle_dimensions, create_radial_dimensions, create_level_dimensions and dimension_walls.

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?

Explicitly routes walls to dimension_walls with the 'Thickness' mode for wall widths, and explains the placement consequence of associative vs static points (Floor Plan with storyIndex vs active window). It stops short of full when-not guidance (e.g. when to prefer modify_dimensions over recreating dimensions).

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

create_doorsCreate doorsA

Places doors into walls (one undo step). Each door needs its host 'wall' GUID and either 'position' (m from the wall's begin point to the door centre along the reference line) or 'point' ({x,y} projected onto the wall). Use flipped (opening side) and mirrored (hinge side) to orient it; sillHeight is usually 0. Unspecified settings come from the Door tool defaults. Library part names are LOCALIZED: find them with search_library_parts (type Door). Returns [{guid, type} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
doorsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare a non-readonly, non-idempotent, non-destructive write. Beyond that, the description adds the 'one undo step' bulk behavior, the return shape [{guid, type} | {error}] in input order, and the defaults fallback — genuinely useful operational detail rather than restating the hints.

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?

Front-loaded with the action and the two hard requirements, then orientation/localization/return details. Dense but each sentence carries information; no filler or restated title.

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 mutation tool with no output schema, the description supplies the missing return format, the bulk-undo behavior, the localization pitfall, and the defaults fallback. A few gaps remain (pagination-like maxItems of 500, error semantics beyond the shape), but an agent has enough to invoke it correctly.

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 schema carries rich per-field descriptions, but the prose adds semantics the schema does not state as a rule: position and point are mutually exclusive alternatives, position is measured to the door centre, sillHeight is 'usually 0', and flipped/mirrored control opening and hinge sides. This meaningfully lifts it above the baseline.

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?

States a specific verb and resource ('Places doors into walls') and immediately distinguishes itself from related creation tools by naming the host object and the insertion geometry (position vs point). An agent can tell this apart from create_windows/create_openings 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 Guidelines4/5

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

Gives concrete usage context: each door needs a host wall GUID plus either position or point, unspecified settings fall back to Door tool defaults, and library part names are localized so use search_library_parts (type Door) first. It stops short of stating when to prefer this over sibling creators like create_openings, but the setup conditions are clear.

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

create_elementsCreate elements (any type)A

Creates elements of ANY supported type in one undo step. Each item is {type: 'Wall'|'Column'|'Beam'|'Slab'|'Roof'|'Shell'|'Mesh'|'Zone'|'Window'|'Door'|'Skylight'|'Opening'|'Object'|'Lamp'|'Line'|'Arc'|'Circle'|'PolyLine'|'Spline'|'Hatch'|'Text'|'Label'|'Dimension'|'LevelDimension'|'Hotspot'|'Morph'|'CurtainWall'|..., ...fields}. The fields are the same as in the type-specific create_* tools (prefer those: they document every field). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElement specs, each with a 'type'
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior4/5

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

Annotations establish the mutation profile (readOnly=false, destructive=false, idempotent=false), and the description adds genuinely new behavior: all items commit in one undo step, failures are per-item and non-fatal, and results come back in input order. It stops short of auth/rate-limit context, so a 4 rather than 5.

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?

Front-loaded with the core purpose and undo behavior, then the item shape, then the fallback guidance. The long inline type enumeration is bulky but does real work in signaling 'any supported type' breadth; only mildly wasteful.

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?

With no output schema, the description correctly supplies the return contract ([{guid, type} | {error}] in input order) and the partial-failure rule. Combined with the routing to type-specific tools for field details, an agent has everything needed to call this correctly.

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 coverage is 100% and the schema itself is thin (items typed only by 'type'), so the description carries real weight by explaining the per-item shape ({type:..., ...fields}) and that fields mirror the type-specific tools' documented schemas. It could note the 'undoName' semantics beyond the schema, hence not a 5.

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?

States a specific verb and resource ('Creates elements of ANY supported type') plus the key scope distinction — a single batch call covering every element type. An agent can immediately tell this apart from the many type-specific create_walls/create_beams/... siblings.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'prefer those [type-specific create_* tools]: they document every field.' This is a direct when-to-use-this-vs-alternatives instruction, which is rare and valuable given how many sibling create tools exist.

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

create_elevationsCreate elevationsA

Creates elevation markers on the floor plan (one undo step), each with a new elevation viewpoint. begin/end = the elevation line (m) placed OUTSIDE the building, viewSide = the side the elevation looks at (towards the building), depth = how far it sees. E.g. south facade of a building spanning y 0..10: begin (-5,-5), end (20,-5), viewSide 'left' (looks north). Returns [{guid, name, database, ...}].

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNo
elevationsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond this by noting it is 'one undo step' and by summarizing the return shape '[{guid, name, database, ...}]'. It does not mention permission or default-layer side effects, keeping it below a 5.

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?

Front-loaded purpose, followed by parameter semantics, a compact example, and the return shape. It is dense but every sentence carries information. Slightly long single-paragraph packing, but no filler.

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 no output schema, the description responsibly summarizes the return value, and it covers the geometrically tricky parameters that most need explanation. It omits secondary options (layer, storyIndex, renovationStatus, verticalRange/horizontalRange, referenceId), though those are documented in the schema, so the gap is minor.

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?

Although the top-level schema description coverage registers 0%, the description adds real semantic meaning beyond the (nested) field descriptions: begin/end is the elevation line placed outside the building, viewSide looks toward the building, and depth is how far it sees. The worked example (south facade y 0..10) concretely resolves the geometry, which the schema alone does not.

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?

States a specific verb+resource: 'Creates elevation markers on the floor plan (one undo step), each with a new elevation viewpoint.' This clearly conveys the output. It does not explicitly distinguish itself from nearby siblings like create_sections or create_interior_elevations, so it falls short of a 5, but an agent can identify the core purpose immediately.

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 rather than stated: the note that begin/end must be 'placed OUTSIDE the building' is an operational constraint, but there is no explicit 'use this when you need X, use create_sections instead' guidance. No conditions or exclusions relative to the many sibling creation tools are provided.

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

create_favoriteCreate favoritesA

Creates favorites in the Favorites palette from placed elements or from the current tool defaults (set them first with set_tool_defaults to build a favorite from scratch). Each item needs exactly one of element / toolDefaults. Output: {results: [{name, type, variation?, folder, replaced?} | {error}]} in input order. In Teamwork, reserve the 'Favorites' object set first.

ParametersJSON Schema
NameRequiredDescriptionDefault
favoritesYesFavorites to create

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds substantial context beyond them: the exact output shape per item including the 'replaced?' flag and per-item error object, the name-collision error behavior (replace default false = error), and the Teamwork reservation requirement. This is the kind of behavioral detail the annotations cannot convey.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the core action and sources, then the mutual-exclusivity rule with its prerequisite, then the output contract. No filler; every clause carries actionable information.

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 single nested-array parameter tool with no output schema, the description supplies the return format, the error/replace semantics, the prerequisite tool call, and the Teamwork locking caveat. Nothing an agent needs to invoke it correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description adds a constraint the schema does not encode: exactly one of element / toolDefaults per item. It also clarifies that tool defaults come from set_tool_defaults, linking the parameter to a sibling tool's state.

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?

States a specific verb ('Creates'), the resource ('favorites in the Favorites palette'), and the two supported sources (placed element vs tool defaults). This distinguishes it from sibling favorites tools like get_favorites, apply_favorite, and rename_favorite, which manage rather than create.

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?

Gives explicit conditions: each item needs exactly one of element/toolDefaults, and to build from scratch the agent must call set_tool_defaults first; it also flags the Teamwork prerequisite of reserving the 'Favorites' object set. It stops short of naming when to prefer an alternative sibling (e.g. apply_favorite) or when not to use it, but the usage context is clear.

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

create_fillsCreate fill typesA

Creates fill types: Solid (percentage/screen fill with percent: 25, or an explicit bitmapPattern, e.g. '55AA55AA55AA55AA' = 50%), Empty, Vector (hatch lines in mm on paper, e.g. {name: 'Diagonal 2mm', lines: [{angle: 45, spacing: 2}]}; with scaleWithPlan: true the values are meters in the model, e.g. a 0.3 m tile grid [{angle: 0, spacing: 0.3}, {angle: 90, spacing: 0.3}]), LinearGradient / RadialGradient, Image (texture). Symbol fills and any other fill can be copied with basedOn / duplicate_attributes. Use fills in building materials (cutFill), hatches, zone/slab cover fills. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
fillsYes
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false / destructiveHint=false / idempotentHint=false; the description adds real behavioral context: single undo step, per-item result shape in input order, one failing item does not abort the others, and Russian-localized naming caveats. Nothing contradicts the annotations.

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?

Front-loaded with the core purpose and packed with dense parenthetical examples; every sentence carries information, but the single sprawling paragraph mixes type semantics, copying, return values, and localization, making it harder to scan than a structured list would be.

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?

No output schema exists, yet the description spells out the return shape `{results: [{index, name, guid, created} | {existed} | {error}]}` and partial-failure behavior. Combined with the indexing/collision guidance, it is complete for a complex destructive-adjacent attribute creation tool.

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?

Goes well beyond the schema with worked examples: percent: 25, bitmapPattern '55AA55AA55AA55AA' = 50%, vector hatch {name:'Diagonal 2mm', lines:[{angle:45, spacing:2}]}, and the scaleWithPlan meter-vs-mm reinterpretation ({angle:0, spacing:0.3} tile grid). These examples clarify units and semantics the schema alone leaves ambiguous.

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?

Opens with a specific verb+resource ('Creates fill types') and immediately enumerates the concrete kinds supported (Solid, Empty, Vector, LinearGradient, RadialGradient, Image). This lets an agent distinguish it from siblings like create_hatches, create_surfaces, and create_line_types without opening any 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?

States where fills are consumed ('building materials (cutFill), hatches, zone/slab cover fills') and routes the agent to get_attributes before looking up localized names, plus duplicate_attributes/basedOn for copying Symbol fills. Clear usage context, though it doesn't explicitly state when NOT to use this tool versus create_hatches/create_surfaces.

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

create_hatchesCreate hatches (fills)A

Creates 2D fill polygons (Archicad 'Fill' tool): a polygon in meters with optional arcs and holes, filled with a Fill pattern (fillType) or a building material's cut fill (buildingMaterial), with pens, RGB colour overrides, contour (on/off, pen, line type, weight), pattern orientation (rotated / distorted / radial, local origin), fill category and an optional area text. Attribute names are LOCALIZED — list them with get_attributes {type: 'Fill' | 'BuildingMaterial' | 'Line'}. get_element_details returns the polygon plus area and perimeter. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
hatchesYesFills to create

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false), which only confirm this is a non-idempotent write, the description discloses rich behavior: placement into the ACTIVE window's database with window-type constraints, storyIndex default to current story, and critically the partial-failure contract ("one failing item does not stop the others") plus the return shape [{guid, type} | {error}] in input order.

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 a single dense paragraph, but it is front-loaded with the core purpose and then layers on the necessary caveats (localized names, active-window placement, return/error semantics). Every sentence carries operational weight, though the run-on length slightly hurts scannability.

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?

With no output schema, the description takes on full responsibility and delivers: it explains the return format, partial-failure behavior, window/story placement rules, attribute localization, and follow-up read/modify tools. An agent has everything needed to invoke it correctly.

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%, so the schema already documents every field (polygon, fillType, orientation, areaText, etc.). The description paraphrases these fields and adds the localized-attribute caveat, but adds little syntax or meaning beyond what the schema carries, so the baseline 3 applies.

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 opens with a specific verb+resource: "Creates 2D fill polygons (Archicad 'Fill' tool)", then enumerates the key aspects (polygon, arcs/holes, Fill pattern vs building material, pens, orientation, area text). This clearly distinguishes it from siblings like create_fills (attribute creation) and create_elements, so an agent can select it 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 Guidelines4/5

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

It names related tools and their roles: get_attributes to list localized attribute names, get_element_details to read back, modify_elements to change later, and it specifies where elements land (active window, storyIndex default, 3D window cannot hold 2D elements). It gives clear context but stops short of an explicit when-to-use-this-vs-sibling rule.

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

create_hotspotsCreate hotspotsA

Places hotspots (snap points) at 2D positions (m) with an optional elevation (height, m) and pen — useful as reference/snap points for later drawing. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotspotsYesHotspots to place

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare a non-read-only, non-idempotent, non-destructive local write, and the description adds genuinely new behavior: per-item partial failure semantics ('one failing item does not stop the others'), the return shape [{guid, type} | {error}] in input order, and the active-window storage rule. This exceeds what the annotations convey.

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

Conciseness5/5

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

Front-loads the core action, then window/scoping rules, then return semantics and lifecycle pointers. Dense but every clause carries operational information; no 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?

There is no output schema, yet the description supplies the return contract and failure behavior. Combined with full schema coverage and annotations, an agent has everything needed to call this correctly.

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, but the description adds defaulting behavior for storyIndex ('default: current story') and clarifies that height is elevation in meters useful for 3D/section snapping. It also ties field names to modify_elements, adding cross-tool naming context.

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?

States a precise verb+resource ('Places hotspots (snap points) at 2D positions') with units and an explicit purpose ('reference/snap points for later drawing'). It is easily distinguished from sibling creation tools like create_elements, create_lines, or create_details.

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

Usage Guidelines5/5

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

Names the lifecycle alternatives explicitly ('Change them later with modify_elements'; 'read them back with get_element_details') and states the environmental constraint (elements go into the ACTIVE window; a 3D window cannot hold 2D elements). An agent knows both when to call it and where its output lives.

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

create_interior_elevationsCreate interior elevationsA

Creates interior elevation markers (one undo step): 'points' is a polyline inside a room along its walls; every segment becomes one interior elevation view (closed: true for all walls). depth = view depth per segment (m). If a view looks the wrong way, recreate it with the points in reverse order. Returns [{guid, name, segments: [{index, name, database}]}] — open a segment with open_view {element, segmentIndex}.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNo
interiorElevationsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, but the description adds real context beyond them: the operation is 'one undo step', it is not idempotent in practice (wrong-facing views must be recreated), and it returns a guid/segment structure. That is meaningful, non-obvious behavioral detail.

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, then mechanism, then parameters, then return shape and next step. Dense but each clause carries information; a single compact paragraph with no filler.

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 no output schema, the description usefully supplies the return shape ([{guid, name, segments:[{index, name, database}]}]) and the follow-up call (open_view with element, segmentIndex). Combined with annotations covering the safety profile, an agent has enough to call and chain it correctly; only undoName and the many optional marker fields go unmentioned.

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?

Top-level schema coverage is 0% and undoName is undocumented anywhere, so the description carries some burden. It does add meaning for the key nested fields ('points' as a wall polyline, depth as per-segment view depth in m, closed for all walls), though the nested schema descriptions already state most of this.

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?

States a specific verb+resource ('Creates interior elevation markers') and explains the mechanism (polyline along room walls, one view per segment). It does not explicitly distinguish itself from siblings like create_elevations, create_sections, or create_details, so sibling differentiation is left to inference.

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?

Gives operational usage hints: points should run along the inside of walls, closed:true covers all walls, and a wrong-facing view is fixed by reversing the point order. It also routes to open_view for the follow-up step. However, it never states when to use this instead of create_elevations/create_sections or any precondition/exclusion.

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

create_issueCreate issuesA

Creates one or more issues in the Issue Manager (one undo step), optionally with comments and attached elements — use it to report problems found in the model (clashes, missing data, review notes) so the user sees them in Archicad and can export them to BCF. Output: {results: [{guid, name, comments: [commentGuid], attached?: {highlight?|creation?|deletion?|modification?: {attached: [guid], missing?, modificationPairs?}}} | {error}]} in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuesYesIssues to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnly=false, destructive=false, idempotent=false, so the safety profile is partly covered. The description adds valuable non-annotation context: it constitutes 'one undo step', supports optional comments/attachments, and guarantees results are returned 'in input order'. It doesn't state permission/auth requirements or rollback specifics.

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?

Front-loaded with verb+resource and use case in a single dense sentence, followed by an output-shape block. The output specification is verbose but earns its place since no output schema exists; overall it is efficient with minimal waste.

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?

No output schema exists, so the description correctly compensates by spelling out the return structure and its input-order guarantee. Combined with 100% schema coverage and annotations, this is nearly complete; only auth/permission behavior is unaddressed.

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%, so the schema already documents name, attach types, comments, parentIssue, tagText, and undoName in detail. The description only gestures at 'comments and attached elements' at a high level, adding little beyond the schema — the baseline 3 applies.

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?

States a specific verb ('Creates') and resource ('issues in the Issue Manager') with scope ('one or more') and optional sub-content (comments, attached elements). An agent can clearly distinguish this from siblings like get_issues, delete_issue, add_issue_comment, and attach_elements_to_issue.

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?

Explicitly frames the use case — reporting model problems (clashes, missing data, review notes) so the user sees them in Archicad and can export to BCF. This is strong positive guidance, but it names no alternative or when-not-to-use condition (e.g. versus add_issue_comment for existing issues).

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

create_labelsCreate labelsA

Places labels with a leader line. ASSOCIATIVE labels (parent = element GUID) stick to the element and can show its data via the Label tool's autotext default content; INDEPENDENT labels need 'begin'. Leader: begin (arrow point) -> middle -> end (text). Text labels take text/runs and the same text style fields as create_texts; symbol labels (labelClass 'Symbol') use a Label library part (libraryPart, gdlParameters — find parts with search_library_parts {type: 'Label'}). For associative labels without 'end' Archicad uses its default label position. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details. The parent and the class of an existing label cannot be changed (delete and recreate).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsYesLabels to place

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare the operation is a write (readOnlyHint=false) and non-destructive, but the description adds critical behavior beyond that: returns [{guid, type} | {error}] in input order, one failing item does not stop others, parent and class of an existing label cannot be changed (delete and recreate required), and active-window placement rules including that a 3D window cannot hold 2D elements.

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 a single dense paragraph but front-loaded with the core action and organized logically from basic purpose to associative/independent details, leader mechanics, label class differences, placement context, and return behavior. Every sentence adds value for this complex tool, though bullet points or clearer segmentation would improve scanability.

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 tool with a large nested input schema, no output schema, and moderate complexity, the description covers all essential context: how to create associative vs independent labels, leader construction, text vs symbol label requirements, active-window constraints, error handling, and post-creation modification/readback. Nothing critical for correct invocation is missing.

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 100% schema description coverage, the schema already documents each parameter. The description still adds meaningful semantics: explains the leader geometry sequence (begin arrow point -> middle -> end text), clarifies when to use text vs runs, notes that omitting 'end' on associative labels uses Archicad's default position, and links symbol labels to libraryPart and gdlParameters with search_library_parts. It does not cover every field (e.g., justification, renovationStatus), but key relationships are made explicit.

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?

States a specific verb+resource ('Places labels') and immediately distinguishes associative vs independent labels, leader lines, and text vs symbol label classes. It differentiates from sibling create_texts by noting shared style fields while clearly positioning this tool as the label creator.

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?

Provides clear context for when to use this tool: describes where labels land (active window, floor plan vs section/elevation), how to find library parts for symbol labels, and how to later modify or read them back. However, it lacks explicit when-not or direct alternatives (e.g., 'use create_texts instead when you need plain text without a leader').

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

create_lampsPlace lampsA

Places lamps (light-emitting GDL library parts of type 'Lamp': ceiling lights, spots, floor lamps, ...) in one undo step. Same fields as create_objects plus lightOn, lightColor {red, green, blue} (0..1) and lightIntensity. Find lamp names with search_library_parts {type: 'Lamp'} (names are localized). Typical ceiling light: elevation = ceiling height minus the lamp height. Returns [{guid, type} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
lampsYesLamps to place
undoNameNoName of the undo step

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent), and the description adds real value on top: the operation is 'in one undo step' (atomicity) and returns '[{guid, type} | {error}]' (return/error shape). These behavioral facts are not derivable from the annotations, though permission/context requirements are unaddressed.

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

Conciseness5/5

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

Front-loaded with purpose, then extra fields, then the name-lookup pointer, a usage tip, and the return shape. Every sentence carries distinct information with no padding, and the ordering matches how an agent would build the call.

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 non-idempotent mutation tool with no output schema, the description supplies the return shape, undo atomicity, the library-part lookup path, and the cross-reference to create_objects. It is close to complete; only authorization/precondition context is absent.

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 baseline is 3; the description still adds meaning by framing the parameter set as 'same fields as create_objects plus lightOn, lightColor {red, green, blue} (0..1) and lightIntensity', orienting the agent to the inherited-vs-new fields. The lightColor range and the elevation formula reinforce rather than merely restate 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?

States a specific verb (Places) and resource (lamps), then defines lamps precisely as 'light-emitting GDL library parts of type Lamp' with examples. It explicitly distinguishes itself from the sibling create_objects by naming the extra light fields, so an agent can tell them apart without opening either 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?

Gives concrete routing guidance: find names with search_library_parts {type: 'Lamp'}, notes names are localized, and supplies a practical elevation heuristic for ceiling lights. It does not explicitly state when to prefer this over generic create_objects, so it falls just short of full when/when-not coverage.

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

create_layer_combinationsCreate layer combinationsA

Creates layer combinations (saved sets of layer visibility/lock/wireframe/intersection states). By default a new combination captures the CURRENT state of every layer, then 'layers' overrides are applied in order, e.g. {name: 'Plan - structure', base: 'allHidden', layers: [{match: 'Structural*', visible: true}]}. Activate one with apply_layer_combination. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
layerCombinationsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare non-destructive, non-idempotent mutation, but the description adds substantial behavior beyond that: the default captures the current state, overrides apply in order, the operation runs in one undo step, the return shape is given in detail, and partial failures do not stop other items. This is rich transparency for a complex batch mutation.

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

Conciseness5/5

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

Front-loaded with the core purpose, then default behavior, an example, the activation alternative, undo behavior, return format, and localization note. Every sentence contributes distinct operational value with no 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 complex batch mutation tool with no output schema, the description covers the default base state, ordering, undo, return shape, partial failure semantics, localization prerequisite, and the sibling activation tool. Nothing essential for correct invocation is missing.

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 50% and the top-level layerCombinations array has no schema description, so the tool description compensates by explaining the default state capture and by giving a concrete example of the layers override pattern. It adds meaningful workflow semantics beyond the schema, though it does not cover every nested parameter detail.

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?

States a specific verb and resource ('Creates layer combinations') and immediately defines what a layer combination is (saved sets of layer visibility/lock/wireframe/intersection states). It distinguishes the tool from its activation sibling by naming apply_layer_combination, so an agent can tell creation from application 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 Guidelines4/5

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

Gives clear context: use apply_layer_combination to activate one, and look existing attributes up with get_attributes first because names are localized. It does not explicitly state when to create versus modify or when not to use this tool, but the routing guidance is solid.

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

create_layersCreate layersA

Creates layers (visible and unlocked unless stated; intersection group 1). Then place elements on them with the 'layer' field of any create_*/modify_elements tool. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersYes
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile; the description goes well beyond by disclosing defaults (visible/unlocked, intersection group 1), the single-undo-step behavior, partial-failure semantics ('one failing item does not stop the others'), and the localization caveat for Russian Archicad. The full return shape is spelled out, which is essential since no output schema exists.

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?

Sentences are dense but front-loaded: the core action and defaults come first, then workflow, then return/failure behavior, then the localization note. Every sentence carries information, though the return-shape sentence is unusually long.

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 creation tool with no output schema and only 2 top-level parameters, the description covers purpose, defaults, cross-tool usage, partial-failure handling, and return structure. Nothing an agent needs to invoke it correctly is missing.

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 ~50% schema description coverage, the description compensates by surfacing defaults not stated in the schema (intersection group 1, visible/unlocked) and the ifExists/existed:true semantics. It does not explain basedOn, wireframe, or folder, but the schema documents those inline, so the description adds meaningful value above 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 opens with a specific verb+resource ('Creates layers') and immediately qualifies scope with defaults (visible/unlocked, intersection group 1). It distinguishes this attribute-creation tool from siblings like create_layer_combinations and create_attributes by naming the exact follow-up tools (create_*/modify_elements).

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 clearly states the workflow context ('Then place elements on them with the layer field of any create_*/modify_elements tool') and a prerequisite ('look existing attributes up with get_attributes first'). It lacks an explicit when-not-to-use or a named alternative for attribute creation, so it falls short of a 5.

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

create_layoutCreate layoutA

Creates a layout (sheet) in the Layout Book from a master layout, inside a subset (or the Layout Book root). The paper size and margins come from the master (they are stored in the master and shared by all its layouts) — pick a master with the wanted size (see get_layout_settings on MasterLayoutItem ids from get_navigator_tree {tree: 'LayoutBook', types: ['MasterLayoutItem']}). Output: {layoutId, name, master, parent, settings, ignored?}. The layout ID/number is assigned by the subset numbering (e.g. subset '08' + own prefix 'T-' + '01' = '08T-01') unless customLayoutNumbering. New layouts are inserted as the FIRST child of the subset (reorder with move_navigator_item). Place drawings on it with the documentation tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayout name
masterNoMaster layout: id or name (e.g. 'А3 - А - Ф3'). Default: the first master layout
parentNoSubset id or name (e.g. 'Планы'), default: the Layout Book root
customLayoutNumberNoCustom layout ID (used when customLayoutNumbering is true), e.g. 'A-101'
customLayoutNumberingNotrue = use customLayoutNumber as the layout ID instead of the automatic subset numbering
doNotIncludeInNumberingNoExclude this layout from the automatic ID sequence of its subset

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, which already disclose that this is a non-readonly, non-destructive, non-idempotent mutation, the description adds substantial behavioral context: paper size and margins come from the master and are shared, the layout ID follows subset numbering unless customLayoutNumbering is true, and new layouts are inserted as the FIRST child. It also describes the output shape, including an optional 'ignored?' field. This is rich disclosure for a creation tool.

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

Conciseness5/5

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

The description is front-loaded with the core action and every sentence contributes distinct, non-redundant information: master selection, output format, numbering behavior, insertion order, and next steps. Despite its length, there is no filler, and the nested schema references are purposeful.

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, the annotations that cover safety hints, and the absence of an output schema, the description is complete enough for an agent to call it correctly. It explains required context (master, parent), output shape, numbering rules, insertion position, and subsequent actions, leaving no critical ambiguity.

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. The description adds meaningful semantics beyond the schema by explaining that paper size and margins come from the master, how customLayoutNumbering changes ID assignment, and that parent defaults to the Layout Book root. It does not explain doNotIncludeInNumbering or provide additional naming syntax, but overall it adds useful interpretation.

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 states a specific verb and resource: 'Creates a layout (sheet) in the Layout Book from a master layout, inside a subset (or the Layout Book root).' This clearly distinguishes it from sibling tools like create_layout_subset, which creates subsets rather than layouts. An agent can identify the tool's core action 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 Guidelines4/5

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

The description provides clear context for choosing a master layout ('pick a master with the wanted size') and points to get_layout_settings and get_navigator_tree for master IDs. It also mentions using move_navigator_item to reorder and documentation tools to place drawings. However, it does not explicitly state when to use this tool versus alternatives or any conditions under which it should not be used.

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

create_layout_subsetCreate layout subsetA

Creates a subset (folder with its own numbering) in the Layout Book, under parent (subset id/name, default: root). Layout IDs in the subset are [upper prefix][own prefix][number in numberingStyle, from startAt] (e.g. ownPrefix 'A-', style '01', startAt 1 -> A-01, A-02...), or continue the previous subset's sequence. Output: {subsetId}. Check the resulting IDs with get_navigator_tree {tree: 'LayoutBook'}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSubset name
parentNoParent subset id or name (default: Layout Book root)
startAtNoFirst number when continueNumbering is false (default 1)
ownPrefixNoOwn prefix, e.g. 'A-' (default '')
autoNumberNoAutomatic number text (advanced, default '')
addOwnPrefixNoAdd ownPrefix to layout IDs (default: true when ownPrefix is given)
customNumberNoCustom subset ID (with customNumbering)
numberingStyleNoNumber style of layout IDs (default '1'; 'noID' = no numbers)
useUpperPrefixNoPrepend the parent subset's prefix (default true)
customNumberingNoUse customNumber as the subset ID instead of automatic numbering (default false)
continueNumberingNoContinue the IDs of the previous subset (own prefix and startAt are then not used). Default: false when ownPrefix or startAt is given, else true
includeToIDSequenceNoInclude the subset's layouts in the ID sequence (default true)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the safe, non-idempotent, non-destructive write profile, so the bar is lower. The description adds substantive behavior beyond that: how layout IDs are composed ([upper prefix][own prefix][number in numberingStyle, from startAt]), the continuation option, and the return shape ({subsetId}).

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?

Dense but front-loaded: the verb and resource come first, followed by numbering mechanics and output. The ID-format sentence is complex but earns its place by documenting the core behavior; little padding.

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 12-parameter tool with no output schema, the description covers the parent default, ID generation, continuation, the {subsetId} return, and a verification path. The main gap is that the many boolean flags (autoNumber, customNumbering, includeToIDSequence) are left entirely to the 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?

Schema description coverage is 100%, so the baseline is 3. The description goes further by showing a concrete worked example of how ownPrefix, numberingStyle, and startAt combine (A-01, A-02...), giving meaning beyond the isolated field descriptions.

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?

States a specific verb ('Creates') and resource ('a subset (folder with its own numbering) in the Layout Book'), and the numbering feature distinguishes it from siblings like create_layout and create_view_map_folder. An agent can tell what it produces 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?

Provides implied usage via the default parent (root) and a post-creation verification tip ('Check the resulting IDs with get_navigator_tree'). However, it never states when to choose this over alternatives such as create_layout or create_view_map_folder, so selection guidance is only inferred.

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

create_level_dimensionsCreate level dimensionsA

Places level (elevation) dimension markers (one undo step). Each marker shows the story level at 'position', or the level of an 'element' (slab/mesh/roof/stair top), or a static 'level' value. Markers on an element are placed on the Floor Plan (story: storyIndex, default current); the others go into the active window (normally the Floor Plan). Units: m, degrees, marker/text sizes in paper mm. Unspecified settings come from the Level Dimension tool. Returns [{guid, type, position, level, static, element?, storyLevel} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
levelDimensionsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover mutation (readOnlyHint=false), idempotency, and openness. The description adds valuable context beyond that: 'one undo step', placement rules, unit conventions, default settings inherited from the Level Dimension tool, and the return shape including error objects.

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?

Front-loaded with purpose, then moves through modes, placement, units, defaults, and return format. It is dense but every sentence adds necessary operational detail; no filler. Slightly long, but justified by the tool's complexity.

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?

Given a single complex array parameter and no output schema, the description covers the essential behavioral and return information: what markers show, where they go, unit expectations, default inheritance, and the returned array shape. Minor gaps remain around permissions and every nested setting, but the schema handles those.

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 top-level parameter 'levelDimensions' has no schema description (coverage 0%), so the description must compensate. It explains the three marker modes tied to 'position', 'element', and 'level'/'static', specifies units (m, degrees, paper mm), and notes that storyIndex defaults to the current story. Nested schema descriptions handle the remaining settings.

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?

States a specific verb ('Places') and resource ('level (elevation) dimension markers'), and distinguishes the tool from sibling dimension creators (create_dimensions, create_angle_dimensions, etc.) by specifying level dimensions. The three value modes (story/element/static) make the purpose even more precise.

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 purpose statement, and the description gives placement context (element markers on Floor Plan, others in active window) and defaults. However, it does not explicitly say when to choose this tool over sibling dimension tools or other alternatives, nor does it state exclusions.

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

create_library_partCreate a GDL library partA

Creates a custom GDL library part (object, lamp, door, window, skylight, label, zone stamp) in the project's EMBEDDED library from GDL scripts and a parameter list, then returns its {libraryPart: {name, guid, index}} so create_objects / create_lamps can place it. Use it for anything the standard library lacks (custom furniture, built-ins, fixtures, signage, parametric equipment). overwrite: true replaces an existing embedded part of the same name (placed instances keep their link and update). Defaults: type 'Object' with subtype ModelElement; a ZZYZX (height) Length parameter is added for objects/lamps; when script2D is omitted for objects/lamps it is 'PROJECT2 3, 270, 2' (plan symbol = top view of the 3D model). Verify with get_library_part_scripts, then place it and look at it (3D view / get_element_details); GDL errors show up as missing geometry.

GDL QUICK REFERENCE (units: meters, angles in DEGREES):

  • Local system: origin = insertion point, X along A (width), Y along B (depth), Z up, ZZYZX = height. Every parameter is a variable in all scripts; A, B (and ZZYZX for objects) always exist.

  • masterScript runs before the 2D, 3D and parameter scripts: compute shared variables there. One statement per line; '!' starts a comment; strings in "..." or '...'.

  • 3D transformations (a stack): ADDX dx / ADDY dy / ADDZ dz / ADD dx, dy, dz; ROTX a / ROTY a / ROTZ a; MULX f / MUL fx, fy, fz; DEL n (undo the last n), DEL TOP (undo all).

  • 3D bodies at the current origin: BLOCK a, b, c (box along +X +Y +Z); PRISM_ n, h, x1, y1, s1, ..., xn, yn, sn (vertical extrusion of a polygon; s = 15 for visible edges); CPRISM_ topMat, botMat, sideMat, n, h, x1, y1, s1, ...; CYLIND h, r (along Z); SPHERE r; ELLIPS h, r; CONE h, r1, r2, 90, 90; REVOLVE n, alpha, mask, x1, y1, s1, ... (profile in the XY plane revolved around X); EXTRUDE n, dx, dy, dz, mask, x1, y1, s1, ...; TUBE; RULED; SLAB_.

  • Attributes: MATERIAL m (surface name, index or a Surface parameter) before the bodies; PEN p; RESOL n (segments of curved surfaces); HOTSPOT x, y, z (3D editing point).

  • 2D script (plan symbol): PROJECT2 3, 270, 2 (top view of the 3D model), or draw: LINE2 x1, y1, x2, y2; RECT2 x1, y1, x2, y2; POLY2_ n, frameFill, x1, y1, s1, ... (frameFill 1 = contour, 2 = fill, 4 = close; 7 = all); CIRCLE2 x, y, r; ARC2 x, y, r, a1, a2; FILL f before a filled POLY2_; HOTSPOT2 x, y; TEXT2 x, y, "text"; ADD2 dx, dy / ROT2 a / MUL2 fx, fy / DEL n.

  • parameterScript: VALUES "len" 0.6, 0.8, 1.2 | VALUES "len" RANGE [0.3, 2.4] | VALUES "style" "Modern", "Classic"; LOCK "param"; HIDEPARAMETER "param"; PARAMETERS param = expression (store a computed value).

  • Flow: IF c THEN ... ELSE ... ENDIF; FOR i = 1 TO n ... NEXT i; WHILE c DO ... ENDWHILE; GOSUB "sub" ... END ... "sub": ... RETURN. Operators + - * / ^ MOD = <> < > <= >= AND OR NOT; functions SIN COS TAN ATN (degrees), SQR (square root), ABS, MIN, MAX, INT, FRA, STR, PI.

  • Example: table with parameters [{name:'topThk', type:'Length', value:0.04}, {name:'legW', type:'Length', value:0.05}, {name:'mat', type:'Surface', value:}], a: 1.6, b: 0.8, height: 0.75, script3D: MATERIAL mat ADDZ ZZYZX - topThk BLOCK A, B, topThk DEL 1 FOR i = 0 TO 1 FOR j = 0 TO 1 ADD i * (A - legW), j * (B - legW), 0 BLOCK legW, legW, ZZYZX - topThk DEL 1 NEXT j NEXT i (script2D omitted = PROJECT2 3, 270, 2)

ParametersJSON Schema
NameRequiredDescriptionDefault
aNoDefault A (X size) in m (default 1)
bNoDefault B (Y size) in m (default 1)
nameYesLibrary part name (becomes the .gsm file name; no / \ : * ? " < > |). Must be unique in the loaded libraries
typeNoLibrary part type (default Object, or implied by subtype)
authorNoAuthor / copyright
folderNoSub-folder in the embedded library (default 'Claude Objects'; '' = root)
heightNoDefault ZZYZX (height) in m for the automatic height parameter (default 1)
commentNoDescription shown in the library browser
fixSizeNoSize cannot be stretched (default false)
scriptsNoGDL scripts (plain text, newline separated)
subtypeNoParent subtype: a keyword (GeneralGDLObject, ModelElement, BuildingElement, Furnishing, Beds, Structure, Column, Beam, Slab, Wall, Roof, Stair, Railing, Ramp, Covering, Footing, Plant, People, Animal, Traffic, TransportElement, StreetFurniture, SportField, DistributionElement, ElectricalElement, FlowTerminal, FlowEquipment, SolarPVPanels, DrawingSymbol, DocumentationElement, Marker, PropertyObjects, Light, WindowWall, CornerWindow, DoorWall, WallOpening, WallEnd, Skylight, Label, ZoneStamp) or a template library part name/{guid} from get_library_part_subtypes. Default by type: Object → ModelElement, Lamp → Light, Window → WindowWall, Door → DoorWall, Skylight, Label, Zone → ZoneStamp
keywordsNoSearch keywords
templateNoCan be used as a subtype of other parts (default false)
overwriteNoReplace an existing embedded library part with the same name (default false)
placeableNoCan be placed (default true; false = macro for CALL)
parametersNoParameter list in dialog order (A, B are implicit — use a / b)
autoHotspotsNoAutomatic bounding-box hotspots (default true; set false when the 2D script places HOTSPOT2s)
addHeightParameterNoAdd a ZZYZX Length parameter when not declared (default true for Object/Lamp)

TDQS

A4.6/5.0
Behavior5/5

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

With annotations covering the safety profile, the description still adds real behavioral detail: overwrite:true replaces an existing embedded part of the same name and existing placed instances keep their link and update, which is a non-obvious mutation consequence. It also discloses defaults (type Object / subtype ModelElement, automatic ZZYZX parameter, default script2D), the return shape, and the failure mode ('GDL errors show up as missing geometry').

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 prose is front-loaded (purpose and return first, then usage, defaults, verification, and reference) and every line is information-dense. The embedded GDL quick reference is large, but given there is no output schema and no separate reference resource, it earns its place; the only cost is that the description is long for a tool blurb.

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 an 18-parameter, deeply nested, write-type tool with no output schema, the description covers purpose, defaults, overwrite semantics, return value, verification workflow, and the GDL syntax needed to populate the script fields. An agent has everything required to invoke it correctly and to validate the result.

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 already 100%, so the schema carries most parameter meaning. The description nevertheless adds semantics the schema does not: the automatic ZZYZX height parameter behavior, the default 2D script for objects/lamps, subtype defaults by type, and a full GDL quick reference that makes the scripts/parameters fields usable. This exceeds the baseline 3 but does not re-explain every individual field.

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 names a specific verb and resource ('Creates a custom GDL library part ... in the project's EMBEDDED library from GDL scripts and a parameter list') and even states the return shape and the downstream consumers (create_objects / create_lamps). This clearly separates it from sibling placement tools like create_objects, create_lamps, and change_library_part.

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?

'Use it for anything the standard library lacks (custom furniture, built-ins, fixtures, signage, parametric equipment)' gives a concrete when-to-use condition, and the overwrite:true note plus the 'Verify with get_library_part_scripts, then place it' workflow adds practical context. It stops short of an explicit when-not-to-use / alternative (e.g., modify an existing part instead), so it is a strong 4 rather than a 5.

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

create_linesCreate linesA

Draws straight 2D lines (one undo step). Each line: begin/end points in meters plus optional pen, colorOverridePen, lineType, lineWeight (mm), category, zoneBoundary and arrows. Unspecified settings come from the Line tool defaults. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). For connected segments prefer create_polylines. Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesYesLines to draw

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=false), it discloses 'one undo step', that elements go into the active window's database, that a 3D window cannot hold them, and partial-failure semantics ('one failing item does not stop the others'). This is exactly the behavioral context annotations cannot express.

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

Conciseness5/5

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

Dense but front-loaded: the core action leads, then per-item fields, then placement scope, then the alternative, then return semantics. Every clause carries distinct information with no 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 batch-creation tool with no output schema, it fully describes the return shape ([{guid, type} | {error}] in input order), partial failure behavior, and follow-up tools. Nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description adds meaning: units (meters for points, mm for lineWeight), that unspecified settings inherit from the Line tool defaults, and the enumerated optional fields. It stops short of explaining the pen/lineType resolution rules beyond what the schema already says.

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?

States a specific verb and resource ('Draws straight 2D lines') and distinguishes itself from siblings by naming create_polylines for connected segments. An agent can tell it apart from create_arcs/create_polylines/create_walls without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit routing: use create_polylines for connected segments, modify_elements with the same field names to change, get_element_details to read back. Also clarifies placement context (active window, floor plan vs section, 3D window cannot hold 2D elements).

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

create_line_typesCreate line typesA

Creates line types: Solid, Dashed ({name: 'Dash 3-1.5', dashes: [{dash: 3, gap: 1.5}]} — millimeters on paper unless scaleWithPlan: true, then meters in the model) or Symbol (items; easier: copy an existing symbol line with basedOn). Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
lineTypesYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds real behavioral content beyond that: it runs in one undo step, one failing item does not abort the batch, results come back in input order, and it warns that names are localized (Russian Archicad). This is exactly the operational context annotations cannot carry.

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?

Front-loaded with the core action and dense with parenthetical asides that all carry information, but the run-on packing of units, copy hints, undo, return shape, and localization makes it harder to scan than a short bulleted form would.

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?

No output schema exists, yet the description specifies the return shape per item (index, name, guid, created/existed/error), ordering, and partial-failure behavior. Combined with schemas for the inputs, an agent has everything needed to call this correctly.

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 only ~50% schema description coverage, the description compensates by explaining the non-obvious unit semantics (millimeters on paper vs meters in the model when scaleWithPlan is true) and giving a worked dash/gap example. Unit ambiguity is the highest-risk parameter detail here, and it is addressed.

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 the exact resource (line types) and enumerates the three kinds it can produce (Solid, Dashed, Symbol) with concrete field shapes. An agent can distinguish this from generic attribute creators like duplicate_attributes or create_composites 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 Guidelines4/5

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

Offers a technique alternative ('easier: copy an existing symbol line with basedOn') and a prerequisite workflow ('look existing attributes up with get_attributes first'), naming a sibling tool. It stops short of stating when not to use it or how it compares to other attribute-creation siblings, so it is clear context rather than a full routing rule.

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

create_meshesCreate meshesA

Creates meshes (terrain / site surfaces). 'polygon' points carry heights: {x, y, z} with z relative to the mesh base 'level'; add inner 'levelLines' (ridges / contour lines, each point with z) to shape the surface inside the outline; holes allowed. 'skirt': SolidBody | SkirtWithoutBottom | SurfaceOnly, 'skirtLevel' = depth of the body below the base plane. 'ridges' controls smooth/sharp display. Example: {polygon: [{x:0,y:0,z:0},{x:30,y:0,z:1},{x:30,y:20,z:2.5},{x:0,y:20,z:0.5}], level: -0.1, skirt: 'SolidBody', skirtLevel: 1}. Units: meters and degrees; coordinates are project coordinates on the home story (default: current story; 'storyIndex' to choose). Unspecified settings come from the tool defaults. Attribute names (building materials, composites, surfaces, fills, line types, layers) are LOCALIZED — look them up with get_attributes. Returns [{guid, type} | {error}] in input order (one undo step; a failing item does not stop the others). Read results back with get_element_details (same field names).

ParametersJSON Schema
NameRequiredDescriptionDefault
meshesYesMeshes to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: one undo step, a failing item does not stop the others, results returned in input order as {guid,type}|{error}, unspecified settings fall back to tool defaults, and attribute names are localized. These are exactly the traits that let an agent predict side effects and error handling.

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?

Front-loaded with the core purpose and a worked example, then units and return semantics. It is dense and slightly run-on but every sentence carries information; nothing is 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 batch-create tool with no output schema and no nested-object support, the description covers geometry semantics, defaults, error/return shape, undo scope, and the localized-name lookup dependency — everything an agent needs to call it correctly.

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 coverage is 100% so the baseline is 3, but the description adds real meaning: z is relative to mesh 'level', levelLines are ridges/contours that shape the interior, skirtLevel is depth below the base plane, and units are meters/degrees in project coordinates. It complements rather than duplicates 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?

Opens with a specific verb+resource ('Creates meshes (terrain / site surfaces)') and immediately pins the domain, distinguishing it from sibling create tools like create_slabs, create_shells, and modify_meshes. The example further anchors what the output element is.

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 through the geometry guidance and the explicit pointer to read results back with get_element_details and to look up localized names via get_attributes, but it never states when to prefer this over the generic create_elements or when NOT to use it (e.g. vs modify_meshes for existing meshes).

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

create_morphsCreate morphsA

Creates morphs (free-form 3D bodies) in one undo step. Each item needs exactly ONE geometry: 'box' {origin {x,y,z}, size {x,y,z}, rotation?}; 'extrusion' {polygon, zBottom, zTop} (prism of a plan polygon with holes/arcs); or 'mesh' {vertices: [{x,y,z}], faces: [[i,j,k,...]]} (any polyhedron; faces counter-clockwise seen from outside, planar). x/y are project coordinates, z is relative to the home story level. Closed bodies become Solid, open meshes Surface. Per-face surfaces: box/extrusion top/bottom/sideSurface, mesh face {vertices, surface}; 'surface' covers the rest. Coordinates in meters, angles in degrees, on the given story (default: current story); unspecified settings come from the tool defaults. Returns [{guid, type} | {error}] in input order. Read back with get_element_details (body counts, bounds) or get_morph_geometry; change with modify_morphs; combine with solid_operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
morphsYesMorphs to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations (which only cover readOnly/destructive/idempotent) by disclosing the one-undo-step atomicity, the closed-to-Solid / open-to-Surface rule, coordinate frame (x/y project, z relative to home story), surface assignment inheritance, and default resolution from tool defaults. The return contract '[{guid, type} | {error}] in input order' is a valuable behavioral detail.

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?

Front-loaded with the core action, then dense geometry semantics that each earn their place for such a complex tool. It is long but not padded; only the multi-clause geometry sentence is heavy, which is defensible given three distinct body representations.

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?

With no output schema, the description supplies the return shape and order, coordinates, defaults, and the Solid/Surface determination rule. For a 2-param but deeply nested geometry tool, this covers everything an agent needs to construct a valid call.

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 baseline is 3, but the description adds genuine interpretive value: it explains the three mutually-exclusive geometry kinds, counter-clockwise face winding, meters/degrees units, and per-face surface inheritance ('surface' covers the rest). This meaningfully supplements rather than repeats 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?

States a specific verb and resource with a clarifying gloss: 'Creates morphs (free-form 3D bodies) in one undo step.' It distinguishes morphs from other body-creating siblings (create_shells, create_slabs, create_meshes) by defining them as free-form 3D bodies, so an agent can identify the correct tool without opening schemas.

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?

Explicitly routes to related tools: read back with get_element_details/get_morph_geometry, change with modify_morphs, combine with solid_operation. It gives clear context for the create-modify-read workflow, though it does not explicitly exclude alternative body creators (shells/slabs/meshes) or state prerequisites.

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

create_objectsPlace objects (library parts)A

Places GDL objects (furniture, equipment, fixtures, custom parts from create_library_part, ...) in one undo step. Each item needs a libraryPart (Object type — names are LOCALIZED, so find them first with search_library_parts {query, type: 'Object'}) and a position (meters). Optional: elevation above the home story, angle (degrees CCW), mirrored, sizes sizeA (X) / sizeB (Y) / height (ZZYZX), any GDL params by name (see get_library_part_details), pen/line/surface overrides, story visibility, layer, storyIndex. Returns [{guid, type} | {error}] in input order. Lamps: create_lamps. Doors/windows: the opening tools. Later changes: modify_elements (same fields), set_gdl_parameters, change_library_part.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectsYesObjects to place
undoNameNoName of the undo step

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: that all placements occur in one undo step (with undoName), that the return is [{guid, type} | {error}] in input order (per-item failures, not all-or-nothing), and that GDL param changes run the part's parameter script like the settings dialog. Localized-name gotcha is also disclosed.

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?

Front-loads the core action and the required fields, then packs the optional list efficiently. The long 'Optional:' enumeration is dense but each item is distinct, so little is wasted; slight tightness could be improved.

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?

With no output schema, the description supplies the return shape and error model, names required fields and units, and covers sibling routing and follow-up tools. An agent has everything needed to call it correctly on the first try.

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 coverage is 100%, so the baseline is 3; the description earns extra by flagging that libraryPart names are LOCALIZED (must be discovered via search_library_parts), giving units (position/elevation in meters, angle degrees CCW), and mapping sizeA/sizeB/height to GDL A/B/ZZYZX semantics.

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?

States a specific verb and resource ('Places GDL objects ... in one undo step') and enumerates what counts (furniture, equipment, fixtures, custom parts). It explicitly differentiates from siblings: lamps go to create_lamps, doors/windows to the opening tools, and later edits to modify_elements.

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

Usage Guidelines5/5

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

Gives the required prerequisite ('find them first with search_library_parts {query, type: 'Object'}'), names the exclusive alternatives (create_lamps, opening tools), and routes post-creation changes to modify_elements / set_gdl_parameters / change_library_part.

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

create_openingsCreate openings (Opening tool)A

Creates Opening-tool openings: rectangular or circular extrusion bodies that cut holes through their host (wall, slab, roof, shell, beam, column, mesh) — e.g. shafts through slabs, service holes in walls or beams. Each needs 'owner', 'width' (+ 'height' unless circular) and 'point' ({x,y,z?} plan anchor) or, for walls, 'position' along the wall. Wall openings extrude horizontally through the wall: set their height with bottomElevation (bottom edge above the home story). Slab/roof openings extrude vertically by default (limit 'Infinite' cuts through the whole host). Custom polygonal shapes are not supported by the Archicad 26 API. Returns [{guid, type} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
openingsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only establish that this is a non-destructive, non-idempotent write. The description adds substantial behavior beyond that: wall openings extrude horizontally while slab/roof openings extrude vertically, 'Infinite' limit cuts through the whole host, default constraint varies by host type, and the return shape is [{guid, type} | {error}] in input order. This is rich, non-obvious operational detail.

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?

Dense but front-loaded: the core purpose comes first, then requirements, then host-specific behavior, then the API limitation and return format. Every sentence carries information, though the heavy parenthetical clauses make it slightly packed rather than crisply scannable.

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?

With no output schema, the description compensates by describing the return value. It covers valid hosts, effective required fields, host-dependent defaults and orientations, the polygonal-shape limitation, and the anchor/position mechanics, so an agent has what it needs to call it correctly.

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 schema marks only 'owner' as required, so the description carries real weight by stating that width (and height unless circular) are also needed, and that 'point' or, for walls, 'position' must be supplied. It also clarifies the point/position relationship and the bottomElevation meaning for horizontal wall openings, adding semantics not guaranteed by the schema alone.

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?

States a specific verb+resource (creates Opening-tool openings) and defines them concretely as rectangular/circular extrusion bodies that cut holes through a host, listing the valid hosts. This clearly differentiates it from siblings like create_windows, create_doors, create_skylights, and generic create_elements.

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?

Gives clear when-to-use context: shafts through slabs, service holes in walls/beams, and it explains that walls take 'position' while other hosts take 'point'. It also rules out custom polygonal shapes via the Archicad 26 API limitation. It does not, however, route the agent among alternatives such as create_windows/create_doors/modify_openings/get_host_openings.

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

create_picturesPlace picturesA

Places raster images (PNG, JPEG, GIF, TIFF, BMP) from ABSOLUTE file paths on this Mac, e.g. a logo on a layout or a site photo on a worksheet. Size in meters via width and/or height (aspect ratio kept when only one is given); without a size the picture is placed at its pixel size with its bottom-left corner at position. Optional anchor, angle, mirrored, transparent, name. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Position/size/angle can be changed later with modify_elements; the image itself cannot be replaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
picturesYesPictures to place

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (which only give readOnly=false, destructive=false, idempotent=false, openWorld=false). It discloses the return shape '[{guid, type} | {error}] in input order', partial-failure semantics (one item failing does not stop the others), the non-replaceability of the image, and the placement-window constraints.

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?

Dense but front-loaded, with purpose stated first and constraints after. The final sentence crams returns plus the modify_elements advice together, which slightly hurts scannability, but every sentence contributes information.

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?

No output schema exists, yet the description supplies the return shape and partial-failure behavior, plus the active-window/3D-window constraint the agent needs to call it correctly. Given the annotations cover the safety profile and the schema documents the nested item fields, nothing material is missing.

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 coverage is already 100%, so the schema carries the parameters. The description still adds real semantics beyond it: size in meters via width and/or height with aspect ratio preserved when only one is given, pixel-size fallback with bottom-left corner at position when no size is set, and the optional anchor/angle/mirrored/transparent/name list.

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?

States a specific verb and resource ('Places raster images (PNG, JPEG, GIF, TIFF, BMP) from ABSOLUTE file paths') and gives concrete use cases (logo on a layout, site photo on a worksheet). This cleanly distinguishes it from sibling placement tools like place_drawing and place_hotlink.

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?

Explains the operative context explicitly: elements go into the ACTIVE window database, with storyIndex on floor plans and section/elevation/detail/worksheet/layout otherwise, and that a 3D window cannot hold 2D elements. It also notes that position/size/angle can later be changed with modify_elements and the image itself cannot be replaced, which is useful routing context. It stops short of naming a direct alternative tool by name.

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

create_polylinesCreate polylinesA

Draws 2D polylines: connected straight and curved segments (points + optional arcs {index, angle}), open or closed. Ideal for outlines, symbols and room-separator chains (zoneBoundary: true). Style fields as create_lines plus continuousPattern. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details. Modifying 'arcs' or 'closed' requires sending 'points' too (the geometry is replaced).

ParametersJSON Schema
NameRequiredDescriptionDefault
polylinesYesPolylines to draw

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare the write/non-destructive profile, and the description adds substantial context beyond them: active-window targeting, storyIndex defaulting, the constraint that 3D windows cannot hold 2D elements, and the partial-failure return contract. This is exactly the kind of behavioral detail annotations cannot carry.

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?

Dense but well front-loaded: geometry description first, then usage, then window/targeting constraints, then return contract and follow-up tools. Every sentence carries information, though the run-on structure could be tightened.

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 complex creation tool with no output schema, the description covers targeting, defaults, partial-failure behavior, and the return shape ([{guid, type} | {error}] in input order). Nothing essential to correct invocation is missing.

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 coverage is 100%, so the baseline is 3, but the description adds non-redundant semantics: the arc edge indexing rule and the critical note that modifying 'arcs' or 'closed' requires resending 'points' because geometry is replaced. That goes beyond what the schema states.

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?

States a specific verb and resource ('Draws 2D polylines') and details the geometry model (straight + curved segments, open/closed), which distinguishes it from siblings like create_lines, create_arcs, and create_circles. An agent can tell it apart 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 Guidelines4/5

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

Gives clear context ('Ideal for outlines, symbols and room-separator chains (zoneBoundary: true)') and names follow-up tools (modify_elements, get_element_details). It stops short of explicitly saying when to prefer this over create_lines/create_arcs, only noting shared style fields.

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

create_profilesCreate complex profilesA

Creates complex profiles (custom cross-sections for walls, beams, columns, handrails) from polygons: each shape is {polygon (m, x horizontal / y vertical, straight edges), buildingMaterial, core?}. Example: a 0.3 x 0.5 m rectangular beam: {name: 'Beam 300x500', usage: {beams: true, columns: true}, shapes: [{polygon: [{x:-0.15,y:0},{x:0.15,y:0},{x:0.15,y:0.5},{x:-0.15,y:0.5}], buildingMaterial: ''}]}. Stretch zones/parameters are not supported (edit in Archicad's Profile Manager). basedOn copies an existing profile. Use it with the 'profile' field of walls/columns/beams. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
profilesYes

TDQS

A4.6/5.0
Behavior5/5

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

With annotations covering readOnly/destructive/idempotent/openWorld, the description adds substantive behavior: one undo step, return shape {results: [...]} in input order, failure isolation ('one failing item does not stop the others'), and localization caveat. This goes well beyond the structured hints.

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 long but front-loads purpose, then an example, then limitations and return behavior; each sentence supplies actionable detail. The example is valuable for a geometry-heavy tool, though the text could be trimmed slightly.

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?

The tool is complex (nested shapes, no output schema), and the description supplies the missing return contract, undo semantics, failure isolation, and a usage caveat. With annotations covering safety, this is sufficiently complete for correct invocation.

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 coverage is 50%, so the description carries moderate burden. It provides a concrete polygon example with meter coordinates and x/y orientation, plus hints for core/buildingMaterial, but it does not explain every nested parameter (folder, pen indices, ifExists override) that the schema itself describes.

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 names a specific verb 'Creates' and resource 'complex profiles', enumerates the element types they apply to (walls, beams, columns, handrails), and notes they are built from polygons. This clearly distinguishes it from sibling attribute creators like create_composites or create_fills.

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 tells the agent how to use the result ('Use it with the profile field of walls/columns/beams') and to look up localized names with get_attributes first. It also notes 'basedOn copies an existing profile' and that stretch zones/parameters are unsupported, but does not compare it against alternative attribute creation tools.

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

create_property_definitionsCreate property definitionsA

Creates user-defined (custom) properties in one undo step — like the Property Manager: any value type, option sets (singleEnum/multiEnum with enumValues), default values or expression-based defaults, and availability per classification. IMPORTANT: custom properties appear only on elements whose classification is in the availability — the default 'all' makes it available for every classification item that exists now (elements with no classification never show custom properties). Missing groups are created (createMissingGroups, default true). Then set values with set_property_values. Returns {results: [{guid, name, group, type, availabilityCount, warnings?} | {error}]} in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step shown in Archicad
definitionsYes
createMissingGroupsNoCreate groups that do not exist yet (default true)

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: 'one undo step' (matching NOT idempotent), the IMPORTANT availability caveat that unclassified elements never show custom properties, that missing groups are auto-created (createMissingGroups default true), the callable type list, and the exact return shape including warnings. These are real behavioral traits not present in the annotations or 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?

Front-loaded with purpose and the critical caveat, then the workflow and return shape. It is dense but every clause carries information; there is minor overlap with the schema's own field descriptions, which slightly inflates 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?

For a 3-param mutation tool with no output schema and no nested-object signal, the description supplies the missing return contract ({results:[...guid, name, group, type, availabilityCount, warnings} | {error}] in input order) and the classification-availability semantics an agent must know to call it correctly.

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 coverage is 67%, and the description adds cross-parameter meaning the schema only states per-field: that availability governs which classifications see the property, that option sets need enumValues, and that groups are created when missing. It does not fully compensate for the uncovered parameter documentation, but it meaningfully supplements it.

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?

States a specific verb and resource ('Creates user-defined (custom) properties') and characterizes the scope ('any value type, option sets, defaults, availability per classification'), which distinguishes it from siblings like create_property_groups, modify_property_definitions, and set_property_values. An agent can tell immediately what this tool builds.

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?

It names a follow-up tool ('Then set values with set_property_values'), which routes the workflow, but it never states when to use this versus modify_property_definitions, delete_property_definitions, or import_property_definitions_xml, nor any preconditions/exclusions. Usage is implied rather than explicit.

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

create_property_groupsCreate property groupsA

Creates user-defined property groups (the folders of the Property Manager) in one undo step. An existing custom group with the same name is returned with alreadyExisted: true (idempotent). create_property_definitions also creates missing groups itself. Returns {results: [{guid, name, alreadyExisted?} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsYes
undoNameNoName of the undo step shown in Archicad

TDQS

A3.6/5.0
Behavior2/5

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

The description adds substantial behavior beyond the annotations: single undo step, existing-name handling via alreadyExisted, and the full return shape. However, it declares the operation '(idempotent)' while the annotation sets idempotentHint: false, a direct conflict on the repeat-call semantics that an agent would rely on for retry logic.

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?

Four dense sentences, front-loaded with the verb+resource before behavior and return value. Almost every clause earns its place; the return-type sentence is slightly terse but useful given no output schema.

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 no output schema, the description supplies the return shape, the idempotent-return flag, and the sibling interaction – exactly the gaps structured fields leave. Remaining gaps are permissions/error semantics beyond the union type, which are minor for an annotated, non-destructive mutation.

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

Parameters2/5

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

Schema description coverage is only 50% (name documented, the nested description field and undoName's role only partially). The description adds no parameter-level meaning at all – it never explains the 500-item cap, the per-group description field, or how undoName interacts with the stated 'one undo step' behavior. With low coverage it should compensate and does not.

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?

States a specific verb and resource ('Creates user-defined property groups') and disambiguates the resource with a parenthetical ('the folders of the Property Manager'). It also names the sibling it overlaps with (create_property_definitions), so an agent can separate the two without reading either 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 a concrete routing rule: create_property_definitions already creates missing groups itself, implying this tool is for standalone group creation. It never states exclusions negatively (e.g. when to prefer the definitions tool), but the overlap note is real guidance rather than none.

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

create_radial_dimensionsCreate radial dimensionsA

Dimensions the radius of arcs, circles, curved walls or curved beams (one undo step). The dimension is linked to the element and verified (the measured radius must match the element). 'at' picks where it touches the arc, 'lineEnd' where the radial line ends. Walls/beams must be on the Floor Plan; arcs/circles in the active window's drawing. Returns [{guid, type, radius, associative, element, arcPoint, lineEnd} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
radialDimensionsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (write, non-destructive, non-idempotent, closed-world). The description adds genuinely useful behavior beyond that: 'one undo step' (atomic), the radius-verification/associative linkage, the drawing/window placement constraints, and the return payload shape. Auth requirements and failure modes are not discussed, keeping it short of a 5.

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?

Four dense sentences, front-loaded with purpose and the atomic-undo fact, then constraints, then return shape. Minimal waste; the quoted field names are terse and functional rather than filler.

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 high-complexity geometry tool with a deeply nested schema, the description covers placement constraints, associativity/verification, and even the return format in the absence of an output schema. Combined with annotations that carry the safety profile, an agent has what it needs to invoke it correctly.

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?

The reported coverage is 0% at the top level, but the nested item schema is actually exhaustively documented (at, lineEnd, prefix, text, pens, fonts, etc.). The description re-explains 'at' (where it touches the arc) and 'lineEnd' (where the radial line ends) in slightly more intuitive terms, but adds little the schema does not already provide.

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?

Clear, specific verb+resource: it 'dimensions the radius' of arcs, circles, curved walls or beams. This distinguishes it well from the many sibling dimension tools (create_dimensions, create_angle_dimensions, create_level_dimensions, dimension_walls), though it does not explicitly name those alternatives.

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?

Provides real prerequisites: walls/beams must be on the Floor Plan, arcs/circles must be in the active window's drawing, and the radius is verified against the element. However, it never states when to prefer this over create_dimensions/dimension_walls or other dimensioning tools, so routing guidance is implied rather than explicit.

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

create_railingsCreate railingsA

Creates railings in one undo step along a reference line: 'begin'/'end' or a 'path' polyline (points may carry z to follow a slope; add arcs for curves) with the Railing tool's default posts/rails/panels. Set 'height', 'bottomOffset' and the reference line side. Coordinates in meters, angles in degrees, on the given story (default: current story); unspecified settings come from the tool defaults. Tip: to guard a stair, use its leftBoundary/rightBoundary from get_element_details as the path. Returns [{guid, type} | {error}]; get_element_details lists the segments and the GUIDs of posts, rails, handrails, panels and balusters.

ParametersJSON Schema
NameRequiredDescriptionDefault
railingsYesRailings to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description discloses that creation happens 'in one undo step', that unspecified settings inherit the Railing tool defaults, that the story defaults to the current story, and the error/return shape. This is substantive behavioral context.

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?

Dense but front-loaded, leading with the core verb and geometry, then parameters, then a tip and return value. Slightly long as a single block, but nearly every clause earns its place.

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?

No output schema exists, yet the description explains the return value ([{guid, type} | {error}]) and points to get_element_details for sub-element GUIDs. Combined with units, undo semantics, and default-inheritance behavior, it is complete enough for correct invocation.

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 coverage is 100%, so the baseline is 3, but the description adds real semantics: coordinates in meters, angles in degrees, z carrying slope, arcs for curves, closing a railing by repeating the first point, and the meaning of height/bottomOffset/reference line side. It lifts parameter meaning above the schema text.

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?

States a specific verb ('Creates') and resource ('railings') and immediately scopes it to a reference line, distinguishing it from modify_railings and create_stairs in the sibling list. An agent knows exactly what geometry it produces.

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?

Gives a concrete routing tip (use a stair's leftBoundary/rightBoundary from get_element_details as the path to guard a stair) and explains the begin/end vs path choice. It does not explicitly state when NOT to use it (e.g. use modify_railings for existing railings), so it falls short of full 5.

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

create_roofsCreate roofsA

Creates roofs. SinglePlane: one sloped plane — 'polygon' (roof outline in plan incl. overhang), 'pivotLine' {begin, end} (the horizontal line at elevation 'level' the plane pivots around, usually the eaves), 'slopeAngle' (degrees); the plane rises towards the polygon unless risesToLeft is given. Two single-plane roofs with opposite pivot lines make a gable roof. MultiPlane: a hip roof over any closed 'pivotPolygon' (usually the outer wall outline at the wall top: level = wall height) with 'slopeAngle' or 'levels' (pitch breaks, e.g. mansard), 'eavesOverhang', and per-plane 'pivotEdges' overrides (gable: true turns that side into a vertical gable end, angle changes its pitch). 'thickness', 'buildingMaterial'/'composite', surfaces and floor plan attributes as for slabs. Example hip roof: {pivotPolygon: [{x:0,y:0},{x:10,y:0},{x:10,y:8},{x:0,y:8}], level: 3, slopeAngle: 30, eavesOverhang: 0.5, thickness: 0.3}. Units: meters and degrees; coordinates are project coordinates on the home story (default: current story; 'storyIndex' to choose). Unspecified settings come from the tool defaults. Attribute names (building materials, composites, surfaces, fills, line types, layers) are LOCALIZED — look them up with get_attributes. Returns [{guid, type} | {error}] in input order (one undo step; a failing item does not stop the others). Read results back with get_element_details (same field names).

ParametersJSON Schema
NameRequiredDescriptionDefault
roofsYesRoofs to create
undoNameNoName of the undo step shown in Archicad

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare it is a non-readonly, non-idempotent, non-destructive write with openWorldHint false. The description goes further: it says results are returned as [{guid, type} | {error}] in input order, that all items are one undo step, that a failing item does not stop the others, and that attribute names are localized and should be looked up with get_attributes. That is useful behavioral context beyond the annotations.

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 dense but well-organized: a short purpose statement followed by SinglePlane and MultiPlane explanations, a concrete example, units/attribution notes, and return/undo behavior. Most sentences earn their place, though some schema-level parameter descriptions are repeated, adding minor padding.

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?

The description covers both modes, gives a concrete example, states units, defaults, localization, and return/undo semantics. For a complex multi-mode creation tool with no output schema it is strong, though it could mention whether stories matter for placement or that roof elements can be modified later with modify_roofs.

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%, so the schema already documents every parameter and nested field. The description adds conceptual context (pivotLine is the eaves line, pivotPolygon is usually the wall outline, slopeAngle is in degrees) but does not provide syntax or format beyond the schema. Baseline 3 is appropriate.

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 opens with a specific verb+resource ('Creates roofs') and then precisely delineates the two modes, SinglePlane and MultiPlane, including the geometric parameters that distinguish them. Siblings create_walls/create_slabs are separate element types, and the tool's domain is unmistakable.

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?

The description explains the two roof-class options and how to build a gable roof from two SinglePlane roofs, which is implicit usage guidance. However, it never states when to choose this tool over create_slabs or create_shells, nor does it give prerequisites like story context or attribute lookup for a first-time caller beyond mentioning get_attributes.

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

create_sectionsCreate sectionsA

Creates section markers (cut planes) on the floor plan, each with its own new section viewpoint (one undo step). Each item: begin/end of the cut line (m), viewSide (left/right of begin→end, default left), depth (limits how far the section looks), vertical range, name ('Разрез 1-1'), referenceId, storyIndex/layer. Returns [{guid, type, name, referenceId, database, begin, end, viewSide, depth} | {error}]. Open one with open_view {element: guid} and look at it with capture_view.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionsYes
undoNameNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this is not read-only, not idempotent, and not destructive, but the description adds important behavioral context: it creates one section viewpoint per item, groups the operation into a single undo step, and specifies the return array with either success objects or errors. It does not mention rate limits or authorization needs, but for a creation tool it provides solid additional transparency beyond annotations.

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 front-loaded with the core purpose and packs a lot of useful information into a compact form. It lists item fields in a somewhat run-on manner, but every sentence contributes (purpose, item details, return shape, follow-up actions). It is appropriately sized for a complex creation tool.

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?

Given the rich nested schema and the annotations covering safety, the description adds valuable context: the undo grouping, return array format, and next steps with open_view and capture_view. It misses explaining the 'undoName' top-level parameter and does not mention the max of 100 items, but overall it is complete enough for an agent to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is reported as 0% for top-level parameters, so the description must compensate. It mentions many item fields (begin/end, viewSide, depth, vertical range, name, referenceId, storyIndex/layer) but these are already documented in the nested schema, and it omits the top-level 'undoName' parameter entirely. It also leaves out some item fields like elementId, horizontalRange, and renovationStatus, so it fails to fully cover the parameter space.

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 states a specific verb and resource: 'Creates section markers (cut planes) on the floor plan, each with its own new section viewpoint'. It distinguishes clearly from sibling tools like create_elevations (sections vs elevations) and create_details. An agent can identify exactly what this tool does 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?

The description implies usage by describing creation of sections and then suggests follow-up actions: 'Open one with open_view {element: guid} and look at it with capture_view.' It does not state when to use this tool versus alternatives (e.g., create_elevations) or any prerequisites like an active floor plan view. Usage is implied but not explicitly guided.

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

create_shellsCreate shellsA

Creates shells (free-form roofs/vaults/domes/canopies). Extruded: an open 'profile' polyline drawn in the profile plane (x across, y up) swept from 'begin' along the 3D 'extrusion' vector — e.g. a barrel vault: {profile: {points: [{x:-3,y:0},{x:3,y:0}], arcs: [{index:0, angle:-180}]}, begin: {x:0,y:0,z:3}, extrusion: {x:0,y:12,z:0}}. Revolved: 'profile' {x = distance from the axis, y = height} revolved by 'revolutionAngle' (default 360) around the vertical axis through 'axisOrigin' — e.g. a dome. Ruled: surface between 'profile' on 'plane1' and 'profile2' on 'plane2'. 'closedProfile': true for closed sections (tubes). 'thickness', 'flipped' (side of the thickness), structure, surfaces, edge trim and floor plan attributes as for roofs. Check the result in 3D and read the stored geometry with get_element_details (basePlane, profile, extrusion ...) — copy those values from an existing shell for exact placement. Units: meters and degrees; coordinates are project coordinates on the home story (default: current story; 'storyIndex' to choose). Unspecified settings come from the tool defaults. Attribute names (building materials, composites, surfaces, fills, line types, layers) are LOCALIZED — look them up with get_attributes. Returns [{guid, type} | {error}] in input order (one undo step; a failing item does not stop the others). Read results back with get_element_details (same field names).

ParametersJSON Schema
NameRequiredDescriptionDefault
shellsYesShells to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds crucial behavioral context beyond that: it returns [{guid, type} | {error}] in input order, groups changes into one undo step, and a failing item does not stop others. It also notes that unspecified settings come from tool defaults and that attribute names are localized.

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 long but front-loaded with the core purpose, then systematically covers modes, placement guidance, units, localization, and return behavior. Every sentence carries useful information for this complex tool, though it could be slightly tighter by avoiding some repetition of schema details.

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 complex 3D creation tool with 100% schema coverage and annotations present, the description is complete: it explains return values and error handling, cross-references get_element_details and get_attributes, specifies units and coordinate system, and describes undo grouping. No critical information is missing.

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%, so the schema already documents every parameter in detail. The description adds example JSON and clarifies the interpretation of 'profile' across modes, but this largely repeats what the schema already states per parameter. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb ('Creates') and resource ('shells'), and clarifies the domain with parenthetical examples ('free-form roofs/vaults/domes/canopies') that distinguish it from sibling tools like create_roofs or create_slabs. An agent can immediately tell this tool creates free-form 3D shell elements.

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?

Provides rich guidance on the three shell modes (extruded, revolved, ruled) with concrete examples, and instructs the agent to verify results with get_element_details and look up localized attribute names with get_attributes. It does not explicitly name when to prefer this over create_roofs or create_morphs, but the free-form vs. standard roof distinction is implied.

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

create_skylightsCreate skylightsA

Places skylights into roofs or shells (one undo step). Each skylight needs the host 'owner' (Roof or Shell GUID) and 'point' ({x,y}: plan position of its anchor on the roof). Size, library part and parameters default to the Skylight tool settings; library part names are LOCALIZED (search_library_parts, type Skylight). Returns [{guid, type} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
skylightsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation. The description adds value beyond them: "(one undo step)" discloses undo granularity, and the "[{guid, type} | {error}] in input order" clause reveals partial-failure semantics and per-item result ordering. It stops short of describing rollback behavior when some items fail.

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

Conciseness5/5

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

Three tight sentences, front-loaded with purpose before prerequisites and return format. Every clause carries information (undo scope, required fields, defaulting, localization, result shape) with no filler.

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 highly complex tool with a very rich nested schema and no output schema, the description covers the essentials: required fields, defaulting behavior, the localization caveat, and the return shape with error signaling. It could say more about how partial failures affect the whole batch, but nothing critical for invocation is missing.

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?

Top-level schema description coverage is 0% (the single 'skylights' array is undocumented), so the description carries real weight here: it explains that size, library part, and parameters fall back to the Skylight tool settings by default, and flags that library part names are LOCALIZED — a genuine gotcha not stated at the top level. It does not enumerate the many optional per-item fields, which the nested schema documents well.

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 names a specific verb and resource ("Places skylights into roofs or shells") and implicitly distinguishes this from siblings like create_roofs, create_shells, and create_openings by naming the host requirement. An agent can tell what this tool produces 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 Guidelines4/5

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

It states the invocation prerequisites clearly (each skylight needs 'owner' as a Roof/Shell GUID and 'point' as a plan position), and routes the agent to search_library_parts for localized part names. There is no explicit when-not-to-use guidance or comparison against related creation tools, but the context is unambiguous.

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

create_slabsCreate slabsA

Creates slabs (floors, ceilings, flat roofs, terraces) from a plan polygon with optional curved edges (arcs) and holes. 'level' is the elevation of the slab's reference plane above the home story — pass referencePlane: 'Top' to make level = top of the slab (the tool default may differ; get_element_details shows referencePlane and offsetFromTop), 'thickness' in m, structure by 'buildingMaterial' or 'composite'. Edge trims (Vertical or CustomAngle with edgeAngle) for all edges or per edge via 'edges', surface overrides, floor plan pens/fills. Example: {polygon: [{x:0,y:0},{x:8,y:0},{x:8,y:6},{x:0,y:6}], thickness: 0.25, level: 0}. A self-intersecting polygon is regularized automatically when it stays one piece. Units: meters and degrees; coordinates are project coordinates on the home story (default: current story; 'storyIndex' to choose). Unspecified settings come from the tool defaults. Attribute names (building materials, composites, surfaces, fills, line types, layers) are LOCALIZED — look them up with get_attributes. Returns [{guid, type} | {error}] in input order (one undo step; a failing item does not stop the others). Read results back with get_element_details (same field names).

ParametersJSON Schema
NameRequiredDescriptionDefault
slabsYesSlabs to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare write/idempotent=false but the description adds substantial behavior beyond them: one undo step, that a failing item does not abort the others, the per-item return shape [{guid,type}|{error}] in input order, automatic polygon regularization, and that localized attribute names must be looked up via get_attributes. This is rich, non-obvious disclosure for a mutation tool.

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?

Dense but front-loaded: the first sentence states purpose and geometry, followed by units, defaults, return shape, and read-back guidance, which is defensible given 40+ nested parameters. A few sentences restate schema field descriptions (e.g., the level/referencePlane definition), mildly inflating length, but nothing is wasted enough to derail the agent.

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?

No output schema exists, yet the description specifies the return format, error-per-item behavior, undo semantics, and how to verify results via get_element_details with matching field names. For a complex, high-parameter creation tool this is complete enough to call correctly.

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 coverage is 100%, so baseline is 3, but the description adds genuine semantics beyond the schema: 'level' is relative to the home story and, with referencePlane 'Top', denotes slab top; thickness is ignored for composite slabs; and the tool default for referencePlane may differ from the passed value. These clarifications exceed what the field descriptions alone convey.

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?

States a specific verb and resource ('Creates slabs') and immediately scopes the domain (floors, ceilings, flat roofs, terraces) with the geometry input (plan polygon with arcs and holes). An agent can distinguish this from create_roofs, create_shells, or modify_slabs 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?

Gives clear usage context: element types it covers, that units are meters/degrees, that unspecified settings fall back to tool defaults, and that story defaults to current unless 'storyIndex' is given. It does not, however, explicitly route the agent away from siblings (e.g., 'use create_roofs for pitched roofs'), which is the only gap.

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

create_splinesCreate splinesA

Draws smooth 2D Bezier splines through the given points (automatic natural spline), or with explicit Bezier handles (directions: one {angle, lengthPrev, lengthNext} per point). Open or closed. Style fields as create_lines. NOTE: Archicad cannot change the geometry of an existing spline — to reshape one, create a new spline and delete the old one (delete_elements); modify_elements can still change its pen, lineType, arrows etc. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
splinesYesSplines to draw

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the read/write and idempotency profile; the description adds substantial context beyond that: existing splines cannot be reshaped, elements are written to the ACTIVE window's database, a 3D window cannot hold 2D elements, and the batch return contract ('one failing item does not stop the others').

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?

A dense but well-structured paragraph; the core purpose is front-loaded and each clause carries distinct information (geometry mode, reshape constraint, window targeting, return contract). It is on the long side but nothing is clearly redundant.

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?

With no output schema, the description supplies the return shape ('[{guid, type} | {error}] in input order') and partial-failure behavior. Combined with the window/story targeting rules and the reshape constraint, an agent has everything needed to call this mutation tool correctly.

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 coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: it clarifies that points are in meters/project coordinates, that closed splines need >= 3 points, and cross-references 'Style fields as create_lines' to explain the style parameter group.

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?

Specific verb+resource ('Draws smooth 2D Bezier splines through the given points') with immediate distinction between the automatic natural spline and the explicit-handle mode. It also distinguishes itself from siblings create_lines/create_polylines by referencing 'Style fields as create_lines'.

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

Usage Guidelines5/5

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

Explicitly routes the agent away from this tool for reshaping: 'Archicad cannot change the geometry of an existing spline — to reshape one, create a new spline and delete the old one (delete_elements); modify_elements can still change its pen, lineType, arrows'. It names the alternative tools and the conditions selecting them, plus the active-window constraint that governs where elements can go.

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

create_stairsCreate stairsA

Creates stairs in one undo step from a baseline (bottom to top): 'begin'/'end' for a straight flight or a 'baseline' polyline for turning stairs (landings/winders follow the Stair tool defaults). Typical: {begin: {x:0,y:0}, end: {x:4.5,y:0}, height: 3, width: 1.2, riserCount: 17}. The baseline must be long enough for the treads (≈ (riserCount-1) × treadDepth); if Archicad rejects the geometry because of the stair rules, adjust the values or pass ignoreRules: true. Coordinates in meters, angles in degrees, on the given story (default: current story); unspecified settings come from the tool defaults. Returns [{guid, type} | {error}]. get_element_details shows riser/tread counts, pitch, baseline, boundaries and part GUIDs; add a railing along a boundary with create_railings.

ParametersJSON Schema
NameRequiredDescriptionDefault
stairsYesStairs to create
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (non-readonly, non-destructive, non-idempotent), and the description adds substantial context beyond them: the single-undo-step behavior, that stair rule checks can reject the geometry, the ignoreRules escape hatch, the story-default resolution, and the exact return shape. This is rich behavioral disclosure.

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?

Front-loaded with purpose and scoping, then examples, constraints, and failure handling in a single dense paragraph. Efficient, though the run-on nature slightly reduces scannability.

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 complex creation tool with no output schema, the description compensates by specifying the return format ('[{guid, type} | {error}]'), the geometry constraints that cause failure, and the related sibling for follow-up work. Nothing an agent needs to call it correctly is missing.

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 coverage is already 100%, so the baseline is 3, but the description adds real semantics: the baseline-length rule (≈ (riserCount-1) × treadDepth), the invariant height = riserCount × riserHeight and how to satisfy it, units (meters/degrees), and that unspecified settings fall back to tool defaults.

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?

Opens with a specific verb+resource ('Creates stairs') and immediately scopes it ('in one undo step from a baseline'), distinguishing it from modify_stairs and create_railings in the sibling list. An agent can identify the tool's role 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 Guidelines4/5

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

Explains the two baseline input modes (begin/end straight flight vs. baseline polyline for turning stairs) and gives guidance for failure ('if Archicad rejects the geometry... adjust the values or pass ignoreRules: true'). It also points to get_element_details and create_railings as follow-ups, though it never states when not to use this tool versus modify_stairs.

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

create_storiesCreate storiesA

Inserts new stories (Story Settings > Insert Above/Below). Items are applied in order, each one seeing the stories created by the previous items, so several 'Top' items stack upwards. Default: a new top story with the height of the current top story. height is the height of the NEW story; level only (Above/Below) fills the gap between two stories without moving anything. Inserting shifts the indexes of the stories above (floorId stays stable) — re-read indexes from the returned 'stories' before using them. Returns {results: [{story, movedStories?: [{floorId, index, name, levelBefore, level}]} | {error}] in input order, stories: [all stories after the change]}. Story changes are applied immediately (not via Archicad's undo); a failed item is reverted by the add-on. Example: {stories: [{name: 'Этаж 4', height: 3}, {name: 'Кровля', height: 2.5}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
storiesYesStories to insert, applied in order

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover read-only/destructive/idempotent hints; the description goes well beyond them by disclosing that inserts shift indexes but floorId stays stable, that the caller should re-read indexes from the returned 'stories', that changes bypass Archicad's undo, and that a failed item is reverted by the add-on. This is exactly the behavioral context an agent needs for a mutation tool.

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?

Front-loads the purpose, then layers defaults, ordering rules, index caveats, and return shape in a logical sequence. It is dense and long, with several parenthetical asides, but nearly every clause carries operational information.

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 non-idempotent mutation with no output schema, the description covers ordering semantics, defaults, index instability, undo bypass, failure rollback, and the return shape. Nothing further is needed for an agent to call it correctly.

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 schema already documents name/level/height/position/relativeTo/showOnSections thoroughly and baseline would be 3. The description adds meaning beyond the schema by clarifying the stack-up ordering of repeated 'Top' items and by supplying a concrete example payload.

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?

States a specific verb ('Inserts') and resource ('new stories'), and maps directly to the Archicad UI action (Story Settings > Insert Above/Below). It is clearly distinguishable from sibling story tools (get_stories, modify_stories, delete_stories).

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?

Explains ordering semantics ('items are applied in order', multiple 'Top' items stack upwards) and the default behavior, which helps an agent reason about invocation. However, it never states when to prefer this tool over modify_stories or delete_stories, so alternative-selection guidance is absent.

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

create_surfacesCreate surfacesA

Creates surfaces (3D materials: color, reflection, transparency, 3D hatch, texture). Unspecified settings are copied from 'basedOn' or, when omitted, from the first surface of the project (without its texture). Example: {name: 'Red paint', color: '#B22222', transparency: 0}. Glass: {materialType: 'Glass', color: '#9FC5E8', transparency: 70}. Advanced Cineware (CineRender) channels are not accessible through the API. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
surfacesYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the mutation/safety profile; the description adds substantive behavior beyond that: it runs in a single undo step, a failing item does not abort the batch, the per-item result shape is spelled out in input order, and the Cineware API limitation is disclosed. This is exactly the value-add layer annotations cannot provide.

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?

Dense but front-loaded: purpose first, then inheritance rules, examples, limitations, and return contract. Nearly every sentence carries actionable information, though the example payloads and return-shape notation push it toward the long side.

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 batch mutation tool with no output schema, the description supplies the missing pieces: inheritance defaults, undo semantics, partial-failure behavior, localization caveat, and an explicit return shape. An agent has what it needs to call it correctly.

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 coverage is 50%, but the description compensates by explaining the key semantic that unspecified fields inherit from 'basedOn' (or the first project surface without its texture), plus concrete payload examples for a plain color and for Glass. It adds real meaning over the raw schema without documenting every field.

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?

States a specific verb+resource ('Creates surfaces (3D materials)') and enumerates what a surface covers (color, reflection, transparency, 3D hatch, texture), which cleanly separates it from siblings like create_building_materials or create_fills.

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?

Gives concrete operational guidance: unspecified settings inherit from 'basedOn' or the project's first surface, Cineware channels are unreachable via the API, and names are localized so existing attributes should be looked up with get_attributes first. It stops short of explicitly routing against the nearest sibling tools, but the context is clear.

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

create_textsCreate textsA

Places text blocks (Archicad 'Text' tool): position (m) + text ('\n' = new line, any language incl. Cyrillic) or rich-text runs with per-run pen/font/size/bold/italic/underline/strikeout/superscript/subscript; plus anchor, justification, angle, widthFactor, charSpacing, wrapWidth (mm), frame, background, alwaysReadable. Text size is in MILLIMETERS on paper (it scales with the drawing scale unless fixedSize). Fonts by name ('Arial') — get_attributes {type: 'Font'}. Elements go into the database of the ACTIVE window: on a floor plan the given storyIndex (default: current story), otherwise the open section / elevation / detail / worksheet / layout (a 3D window cannot hold 2D elements). Returns [{guid, type} | {error}] in input order; one failing item does not stop the others. Change them later with modify_elements using the same field names; read them back with get_element_details. Restyling via modify_elements (e.g. {guid, size: 5, bold: true}) keeps the content.

ParametersJSON Schema
NameRequiredDescriptionDefault
textsYesTexts to place

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond what annotations provide: describes partial-failure semantics ('one failing item does not stop the others'), the return shape [{guid, type} | {error}] in input order, the paper-mm scaling behavior of text size (unless fixedSize), the multilingual/rich-text capability, and the round-trip with modify_elements. This is exactly the behavioral context an agent needs when annotations only say readOnly=false and idempotent=false.

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 long opening sentence is dense but front-loads the core purpose plus field inventory, and subsequent sentences are each functional (placement context, return shape, round-trip). Minor redundancy in listing style fields and re-stating 'get_attributes {type: Font}' which also appears in the schema, but nothing is wasted.

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 complex, high-parameter-count creation tool with no output schema and only coarse annotations, the description covers purpose, placement constraints, failure semantics, return shape, and follow-up operations. An agent has everything it needs to invoke this correctly; the only minor gap is the absence of an explicit alternative-selection rule.

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 coverage is 100%, so baseline is 3, but the description adds real semantic value beyond the schema: it explains the mm-on-paper scaling (with fixedSize caveat), the '\n' newline convention, rich-text runs with per-run styling, the get_attributes path for fonts, and the position-anchor relationship. The 'Change them later with modify_elements using the same field names' note is useful cross-tool parameter guidance.

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?

Opens with a specific verb+resource ('Places text blocks (Archicad 'Text' tool)') and enumerates the fields it supports, distinguishing it from siblings like create_labels, create_dimensions, and create_elements. An agent can identify exactly what this tool creates without checking its 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?

Explicitly states the context constraint: elements go into the active window's database, with per-window rules (storyIndex on floor plan, otherwise section/elevation/detail/worksheet/layout, and 3D windows cannot hold 2D elements). It names modify_elements and get_element_details for follow-up operations, but doesn't call out when to pick this over related create_* tools like create_labels or create_hotspots.

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

create_view_map_folderCreate View Map folderA

Creates a folder in the View Map (to organize saved views), under parent (default: the View Map's top folder), optionally after the sibling after. Output: {folderId}. Move views into it with move_navigator_item.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name
afterNoInsert after this sibling
parentNoParent View Map folder id

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this is a non-destructive, non-idempotent write operation in a closed world. The description adds useful behavioral details: the parent defaults to the View Map's top folder, after controls sibling ordering, and the output is {folderId}. It still does not disclose failure modes or whether duplicate folder names are permitted, which keeps it from a 5.

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

Conciseness5/5

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

The description is front-loaded with the core action and follows with parent default, ordering, output, and next step in three compact sentences. Every clause carries actionable information, and nothing is redundant or buried.

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 simple create-folder tool with rich schema coverage and clear annotations, the description is complete enough: it covers the default parent, optional ordering, output identifier, and follow-up workflow. No output schema exists, so the inline {folderId} note is sufficient. An agent has what it needs to call the tool correctly.

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 coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by specifying that parent defaults to the View Map's top folder and that after is an optional sibling placement, neither of which is stated in the property descriptions. It also clarifies the output shape, which helps the agent understand the result.

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?

States a specific verb and resource: creates a folder in the View Map to organize saved views. It distinguishes itself from navigator-item operations by naming the target container and the follow-up action move_navigator_item. An agent can identify the tool's effect and scope 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?

The description gives default parent behavior and the optional after placement, and points to move_navigator_item as the next step. However, it does not say when to use this tool versus creating other folder types or versus other View Map operations, nor does it state prerequisites. Usage is implied by the purpose but not explicitly bounded.

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

create_wallsCreate wallsA

Creates straight, curved, trapezoid or slanted walls (one undo step). Coordinates in meters, angles in degrees, on the given story (default: current story). Unspecified settings come from the Wall tool defaults. Chain walls end-to-start so Archicad joins the corners. Returns [{guid, type} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnly=false, destructive=false, idempotent=false. The description adds meaningful context beyond that: the entire call is 'one undo step,' unspecified settings fall back to Wall tool defaults, and the return shape is '[{guid, type} | {error}] in input order.' Permissions and partial-failure semantics are not covered, keeping it from a 5.

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

Conciseness5/5

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

Five tight sentences, front-loaded with purpose, then units, defaults, chaining, and return value. Every sentence carries actionable information with no padding.

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 complex batch-creation tool with no output schema, the description covers units, default story, defaults inheritance, chaining, and return format. It is complete enough to call correctly, though it omits failure behavior when some walls in the batch error out.

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?

Top-level coverage is 0% and the 'walls' container itself is undocumented in the schema, but the description supplies cross-cutting semantics the nested schema lacks: units (meters/degrees), default story, tool-default fallback, and the corner-joining convention. The per-field descriptions in the schema do the rest.

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?

Opens with a specific verb ('Creates') and resource ('walls') and enumerates the supported wall variants (straight, curved, trapezoid, slanted). This clearly distinguishes it from siblings such as create_slabs, create_columns, and create_curtain_walls.

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?

Provides useful context: coordinates in meters, angles in degrees, default story is the current story, and 'Chain walls end-to-start so Archicad joins the corners.' However, it never names alternatives (e.g., modify_elements, create_elements) or states when not to use it, so it stops short of full routing guidance.

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

create_windowsCreate windowsA

Places windows into walls (one undo step). Each window needs its host 'wall' GUID and either 'position' (m from the wall's begin point to the window centre along the reference line) or 'point' ({x,y} projected onto the wall). sillHeight = bottom of the window above the wall bottom. Unspecified settings (library part, size, sill, reveal, surfaces) come from the Window tool defaults. Library part names are LOCALIZED: find them with search_library_parts (type Window). Polygonal walls cannot host windows. Returns [{guid, type} | {error}] in input order; inspect results with get_element_details (position, location, sill/header height, library part, key GDL params).

ParametersJSON Schema
NameRequiredDescriptionDefault
windowsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly=false, destructive=false, and idempotent=false, but the description adds substantial behavior beyond them: the batch is a single undo step, unspecified settings inherit Window tool defaults, library part names are localized, polygonal walls are rejected, and the return shape is '[{guid, type} | {error}] in input order'. This is rich operational context an agent needs before invoking.

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

Conciseness5/5

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

Despite covering a complex tool, every sentence carries non-redundant information: purpose/undo, placement requirements, default inheritance, localization warning, host limitation, and return format. Purpose and required inputs are front-loaded, with secondary caveats following in a logical order.

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?

There is no output schema, yet the description fully documents the return shape and error cases, and points to get_element_details for inspecting created windows. For a tool with a deeply nested item schema, it covers the cross-cutting concerns (defaults, localization, host restrictions, undo grouping) that the schema cannot express.

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 schema description coverage reported at 0%, the description must compensate, and it does for the core semantics: it explains the required host wall GUID, the position-vs-point alternative and their coordinate meanings, sillHeight's reference ('bottom of the window above the wall bottom'), and which fields fall back to tool defaults. It does not restate every schema-level parameter, but it covers the high-risk ones that determine correct invocation.

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 opens with a specific verb+resource: 'Places windows into walls', immediately distinguishing it from sibling creation tools such as create_doors, create_openings, and create_walls. It also scopes the operation ('one undo step'), so an agent knows exactly what this tool produces.

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 states the prerequisites clearly (host wall GUID plus either 'position' or 'point'), names the host limitation ('Polygonal walls cannot host windows'), and routes the agent to search_library_parts for localized names and get_element_details for inspection. It stops short of explicitly naming alternative tools and when to prefer them, so it is clear context rather than full routing guidance.

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

create_worksheetsCreate worksheetsA

Creates worksheet markers (one undo step) like create_details: boundary polygon or box (m) + marker position; each gets a new worksheet viewpoint (a 2D drafting sheet seeded with the region's drawing). Returns [{guid, name, database, ...}]. Open with open_view {element: guid}.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNo
worksheetsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent, and non-open-world. The description adds real contextual value: the one-undo-step side effect, that each marker spawns a new 2D viewpoint seeded with the region's drawing, and the return shape. It stops short of covering rate limits or error/rollback behavior.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the action and undo-safety note, then boundary requirements, then return shape and a follow-up call. Zero filler and no repetition of the schema.

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?

Complete enough to invoke correctly: input shape, side effect, return keys, and the natural next step (open_view) are all present. No output schema exists, and the description handily compensates by naming the returned fields; only minor gaps around required project state or failure modes remain.

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 reported as 0%, but the nested schema in fact carries inline descriptions for nearly every field (box, polygon, name, layer, etc.), so the structured data does most of the work. The description adds only the high-level 'boundary polygon or box (m) + marker position' and names the returned keys, clarifying the two-parameter shape at a glance.

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?

States a specific verb (creates) and resource (worksheet markers), and distinguishes from the sibling it resembles by naming create_details explicitly. A reader knows exactly what element family this targets 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 Guidelines4/5

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

Infers usage from the analogy to create_details and specifies boundary requirements (polygon or box + marker position), but does not state when to prefer this over create_details or other drawing-creation siblings. No exclusions or prerequisites like required active project.

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

create_zone_categoriesCreate zone categoriesA

Creates zone categories {name, code, color, stamp?}. Without 'stamp' the zone stamp (and its parameters) is copied from 'basedOn' or from the first zone category of the project. Assign it to zones with the zone tools' category field. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
zoneCategoriesYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=false), it discloses that the operation runs in one undo step, that a failing item does not stop the others, and that results come back in input order. These are genuinely useful behavioral traits not present in the structured fields.

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?

Front-loaded with the core action and field list, followed by fallback behavior, undo semantics, return shape and localization note. Dense but every sentence carries information; only the return-value sentence is somewhat compacted.

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 mutation tool with no output schema, the description usefully documents the return structure, partial-failure behavior, and the Russian localization caveat. It covers the main gaps an agent would otherwise face, though it does not discuss permission or rate-limit considerations.

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 schema coverage at 50%, the description compensates by explaining the stamp/basedOn interaction: without 'stamp' the zone stamp and its parameters are copied from 'basedOn' or the project's first zone category. This adds semantic meaning beyond the schema's per-field descriptions.

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?

States a specific verb and resource (creates zone categories) and enumerates the fields it accepts. It also implicitly distinguishes itself from the sibling create_zones by clarifying that the created category is then assigned to zones via the zone tools' category field.

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?

Gives concrete operational guidance: look up existing attributes with get_attributes first, and use the zone tools' category field to assign. The stamp fallback rule is explained. No explicit when-not-to-use or full alternative routing, but the context is clear.

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

create_zonesCreate zonesA

Creates zones (rooms/spaces) in one undo step. Two modes per item: (1) MANUAL: 'polygon' = the outline in meters; (2) AUTOMATIC: 'referencePoint' = a point inside a room enclosed by walls/columns/room separators on that story — Archicad detects the outline (boundary 'InnerEdge' or 'ReferenceLine'); it fails with a clear error if the point is not enclosed. Create the walls first. Set name, number, category (localized ZoneCategory attribute, see get_attributes), height (m), bottomOffset, stamp position/angle, stamp library part + GDL parameters, fill/contour. Unspecified settings come from the Zone tool defaults. Returns [{guid, type} | {error}] in input order. Read areas/volumes back with get_zones.

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesYesZones to create

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safe-mutation profile (readOnly false, non-destructive, non-idempotent), so the description carries the rest and does so well: 'one undo step', the clear-error failure mode when a referencePoint is not enclosed, defaults inherited from the Zone tool, and the per-item return shape [{guid, type} | {error}] in input order.

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?

Front-loaded with the core action and the mode split, then progressively adds prerequisites and defaults. Dense but almost every clause carries operational information; only the enumeration of stamp/fill settings slightly duplicates the schema.

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 creation tool with no output schema, the description compensates by naming the return shape, the undo semantics, the mode-selection rule, and the cross-tool calls needed to obtain valid attribute/stamp values. Nothing an agent needs to call it correctly is missing.

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%, so every parameter is already documented in the schema (including the MANUAL/AUTOMATIC distinction, boundary semantics, and stamp-reset behavior). The description restates a few key fields (name, number, category, height, bottomOffset) but adds no syntax beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Creates zones (rooms/spaces)') and immediately distinguishes itself from sibling mutation tools by defining the two creation modes (MANUAL polygon vs AUTOMATIC referencePoint). An agent can tell this apart from update_zones/modify_zones without opening any schema.

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

Usage Guidelines5/5

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

Gives a hard prerequisite ('Create the walls first'), explains the failure condition for automatic mode, and routes to concrete alternatives/supporting tools (get_attributes for localized ZoneCategory, search_library_parts for stamps, get_gdl_parameters for stamp params, get_zones to read areas back). This is explicit when-to-use and where-to-look guidance.

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

delete_attribute_foldersDelete attribute foldersA
Destructive

Deletes attribute folders AND every deletable attribute inside them (attributes in use or built-in ones are kept). Irreversible through this connector — inspect with get_attribute_folders first, and move attributes you want to keep out with move_attributes_to_folder. Output: {results: [{folder, ok: true} | {folder, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
foldersYesFolders: path ['A','B'] / 'A/B', {guid}, or {attributeType, path}
attributeTypeNoAttribute type of all folders (or per folder)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive, non-idempotent, non-read-only behavior. The description adds the concrete blast radius (deletable attributes inside folders are also removed), the safety carve-out (in-use/built-in attributes are kept), and irreversibility — behavior an agent cannot infer from the flags alone.

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?

Three tightly-packed sentences, front-loaded with the verb and cascade scope, then the safety warning, then the output shape. Dense but nothing wasted; the em-dashes and parentheticals are slightly compressed but readable.

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?

No output schema exists, and the description supplies the return shape ({results: [{folder, ok}|{folder, error}]}), the cascade semantics, the preservation rule, and the pre-flight workflow. An agent has everything needed to call this destructive tool safely.

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 coverage is 100% and the folders parameter has rich nested descriptions (path array, 'A/B' string, {guid}, {attributeType, path}). The description adds nothing about parameter syntax or formats, so the baseline of 3 is appropriate given the schema does the heavy lifting.

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?

States a specific verb (Deletes) and resource (attribute folders) plus the crucial cascade scope: every deletable attribute inside them. This distinguishes it cleanly from delete_attributes, which deletes individual attributes, and from delete_project_info_fields.

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

Usage Guidelines5/5

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

Explicitly prescribes the safe workflow: inspect with get_attribute_folders first, and move attributes you want to keep out with move_attributes_to_folder. Both an alternative tool and a when-to-use condition are named.

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

delete_attributesDelete attributesA
Destructive

Deletes attributes of one type (one undo step). Archicad reassigns elements that used a deleted attribute (check them afterwards). WARNING: deleting a LAYER deletes every element on it — the tool refuses layers that still hold elements unless force: true (move elements with modify_elements first). Pens, fonts, the Archicad layer and some built-in attributes (the last one of a type, Solid/Empty fills, line type 1) cannot be deleted. Returns {results: [{index, name, deleted: true} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesAttribute type (pens and fonts cannot be deleted)
forceNoLayers only: also delete layers that still hold elements (the elements are deleted too)
undoNameNo
attributesYesAttributes to delete: names (localized), indices or {guid}

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructive/non-idempotent; the description adds the deeper traits that matter: single undo step, automatic reassignment of elements using a deleted attribute, the full cascade when deleting a layer, and the refusal semantics. This is genuinely additive context beyond the structured hints.

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, the destructive warning is capitalized and prominent, and the return shape closes the definition. It is dense and slightly run-on, but every sentence carries operational information rather than 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 destructive, multi-param tool with no output schema, it covers the return format inline, the refusal conditions, the force override, and the post-deletion side effects. An agent has everything needed to call it safely without further lookup.

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 coverage is 75% and already documents type and force, so the baseline is 3. The description goes further by tying force to the layer cascade and the modify_elements remediation, and by naming the accepted attribute identifiers (name/index/guid). Only undoName receives no explanation anywhere.

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?

States a specific verb+resource ('Deletes attributes of one type') and immediately scopes it ('one undo step'). An agent can distinguish this from sibling element deletions like delete_elements or delete_stories without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use for force ('layers that still hold elements'), the precondition to satisfy first ('move elements with modify_elements'), and the exclusion set (pens, fonts, Archicad layer, last-of-type, Solid/Empty fills, line type 1). Alternative routing is spelled out rather than inferred.

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

delete_classification_itemsDelete classification itemsA
Destructive

Deletes classification items together with all their children in one undo step (elements classified with them become unclassified in that system). Returns {results: [{guid, id, deleted, deletedChildren} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
systemNoSystem in which item IDs are looked up
undoNameNoName of the undo step shown in Archicad

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnly=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: cascading child deletion, side effect on classified elements, single-undo-step semantics, and the per-item result/error shape. It stops short of noting irreversibility or failure-partial-success 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?

Two sentences, front-loaded with the action and cascade scope, then the return shape. No filler. Slightly dense with parenthetical and inline object notation, but every clause earns its place.

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 destructive, non-idempotent mutation with annotations covering the safety profile, the description supplies cascade behavior, element side effects, undo grouping, and the return contract. The remaining gaps (partial-failure semantics, irreversibility, system-lookup implications) are minor.

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 coverage is 67% and the schema itself documents items, system and undoName well. The description adds no parameter-level detail beyond the resource name, so the schema carries the load and the baseline 3 applies.

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?

States a specific verb+resource ('Deletes classification items') and immediately qualifies scope with the cascade behavior ('together with all their children'). It does not explicitly distinguish itself from the sibling delete_classification_systems, but the resource noun is unambiguous.

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 only implied by the destructive semantics; there is no explicit when-to-use statement, no prerequisites, and no named alternative (e.g., modify_classification_items or delete_classification_systems). The note that classified elements become unclassified hints at the impact but not at when to prefer this tool.

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

delete_classification_systemsDelete classification systemsA
Destructive

Deletes whole classification systems with all their items in one undo step (element classifications in them are removed). Returns {results: [{guid, name, deleted} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
systemsYes
undoNameNoName of the undo step shown in Archicad

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the destructive/idempotent profile, and the description adds real value beyond that: it's a single undo step, cascades to all items and element classifications, and returns per-system results. It does not mention permission or Teamwork reservation requirements, so not a 5.

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

Conciseness5/5

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

One dense sentence covering what is deleted, undo behavior, side effects, and return shape. Front-loaded with scope, no filler.

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 no output schema, describing the return ({results: [...]}) is appropriate and helpful. Destruction scope is clear. Missing: idempotency caveat and preconditions, which would round it out for a destructive bulk op.

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 coverage is 50%; the description clarifies the 'deleted' result per system but doesn't expand on the systems input format (name/version/GUID) that the schema already documents. It adds the output shape, useful semantics for the caller; baseline would be 3 with mid coverage and no output schema, so slight lift.

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?

States a specific verb (deletes) and resource (whole classification systems) with explicit scope (all their items, element classifications removed). Clearly distinguishable from siblings delete_classification_items (single items) and delete_property_definitions.

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?

Scope hints that this is for whole-system deletion vs item deletion, but no explicit when-to-use vs delete_classification_items, and no warning about irreversible bulk deletion. Usage is implied rather than stated.

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

delete_drawingsDelete placed drawingsA
Destructive

Deletes drawing elements from layouts (one undo step). The source views are not touched. Returns [{guid, deleted} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
drawingsYesDrawing element guids (get_layout_drawings)
undoNameNoName of the undo step

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered; the description adds genuinely new context beyond them - undoing counts as a single step, source views remain intact, and the exact return shape [{guid, deleted} | {error}] is disclosed.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action and its scope, followed by the side-effect guarantee and the return contract; nothing is padded.

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 destructive two-parameter tool with no output schema, the description covers the action, its layout scope, the non-effect on source views, undo granularity, and the return shape - an agent has everything needed to call it correctly.

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%, so both parameters (drawings array with GUID/object forms, undoName) are already documented in the schema; the 'one undo step' phrase loosely signals the undoName behavior but adds no syntax or format detail 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?

States a specific verb and resource ('Deletes drawing elements from layouts') and scopes it away from model elements via 'from layouts' plus 'The source views are not touched', which separates it from the many delete_* siblings (delete_elements, delete_hotlinks) without opening their schemas.

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 only implied: 'drawing elements from layouts' hints at the context, and the schema points at get_layout_drawings for the GUIDs, but the description never states when to choose this over delete_elements or modify_drawings, nor any prerequisite for obtaining the drawings first.

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

delete_elementsDelete elementsA
Destructive

Deletes elements of ANY type (one undo step: undo restores them). Dependent elements are removed by Archicad too and are reported: windows/doors of deleted walls, associative dimensions and labels, etc. -> alsoDeleted: [{guid, type}], subElementsDeleted (curtain wall / stair / railing parts). Only delete elements you created or were asked to delete. Group GUIDs delete the whole group. Returns {results: [{guid, deleted: true} | {guid, error}], deletedCount, alsoDeleted?, subElementsDeleted?, warnings?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes well beyond them: one undo step restores, dependent elements (openings of walls, associative dimensions/labels, curtain wall/stair/railing sub-elements) are cascade-deleted by Archicad, and group GUIDs delete entire groups. This is exactly the extra destructive-behavior context an agent needs.

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?

Front-loads the core action and undo guarantee, then packs cascades, group semantics, and the return shape into a dense block. Slightly run-on with the inline return-type listing, but every clause carries information.

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?

No output schema exists, yet the description enumerates the return shape (results with deleted/error, deletedCount, alsoDeleted, subElementsDeleted, warnings) and explains cascade and group behavior. An agent has everything needed to invoke and interpret this destructive tool correctly.

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%, so the schema already documents both `elements` (GUID strings or {guid}, group GUID = whole group) and `includeGroupMembers`. The description's group-GUID note largely repeats the schema, and it adds no syntax detail beyond it; baseline 3 applies.

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?

States a specific verb+resource and immediately scopes it ("Deletes elements of ANY type"), which distinguishes it from the many typed deletion siblings like delete_stories, delete_drawings, delete_attributes. The group-GUID behavior further pins down the tool's coverage.

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?

Gives a real usage constraint ("Only delete elements you created or were asked to delete") and notes the one-undo-step reversibility, which informs risk. It does not name alternatives (e.g. ungroup/undo) or state when not to use it beyond the caution, so it stops short of a 5.

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

delete_favoriteDelete favoritesA
Destructive

Deletes favorites by exact name (placed elements are not affected). Output: {results: [{name, deleted: true} | {error}]}. In Teamwork, reserve the 'Favorites' object set first.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesExact names of the favorites to delete (see get_favorites)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, so the safety profile is covered. The description adds real value beyond that: the output shape per item, the fact that placed elements are not affected, and the Teamwork reservation requirement — none of which the annotations convey.

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

Conciseness5/5

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

Three compact sentences: the action and its scope first, then the return contract, then the prerequisite. No filler, and the most important constraint is front-loaded.

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 no output schema, the description compensates by spelling out the per-item result shape (deleted: true or error) and the Teamwork prerequisite. Only minor gaps remain, such as behavior on partial failure across a 500-name batch.

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% for the single 'names' parameter, including the exact-name/localized note and the get_favorites cross-reference, so the schema does the heavy lifting. The description's 'by exact name' merely echoes the schema and adds no new parameter meaning.

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?

States a specific verb+resource ('Deletes favorites') with the key scoping qualifier that placed elements are unaffected, which distinguishes it from the element-deletion tools in the sibling list. It doesn't explicitly name its closest siblings (apply_favorite, rename_favorite, get_favorites), so it stops short of a 5.

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?

Gives a concrete prerequisite for Teamwork workflows ('reserve the Favorites object set first') and implies the names must come from get_favorites. There is no explicit statement of when to prefer this over rename_favorite or apply_favorite, but the operational context is clear.

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

delete_issueDelete issuesA
Destructive

Deletes issues (one undo step) together with their comments. By default the proposals attached as Creation/Deletion/Modification are discarded (the model stays as it is); acceptAllElements: true accepts them first. Output: {results: [{guid, name, deleted: true} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuesYesIssues to delete (GUIDs or exact names, see get_issues)
undoNameNo
acceptAllElementsNoAccept the attached creation/deletion/modification proposals before deleting (default false)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes beyond them by disclosing that comments are deleted too, that the operation is a single undo step, and that attached proposals are discarded by default unless acceptAllElements is set. That is exactly the kind of side-effect context annotations cannot convey. It stops short of permission/auth requirements or confirmability.

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?

Three dense sentences, front-loaded with the action and its cascade, then the default/opt-in behavior, then the return shape. Every sentence earns its place, though the middle clause is syntactically packed.

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 destructive mutation with no output schema, the description supplies the return shape inline and covers cascades, undo, and the proposal default. The main gap is undoName, whose effect on the undo step is left unexplained.

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 coverage is 67%, so the schema already documents the issues and acceptAllElements parameters. The description only adds the consequence of acceptAllElements ('the model stays as it is'), while undoName is never explained in either place. Baseline 3 is appropriate given the schema carries most of the weight.

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 opens with a specific verb+resource ('Deletes issues') and immediately widens scope to include their comments, which separates it from sibling deletion tools like delete_elements or delete_attributes. An agent can tell what is removed and what cascades 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?

It explains the default proposal behavior and the acceptAllElements escape hatch, which is genuine usage context, but it never says when to reach for this tool versus alternatives (delete_elements, delete_project_info_fields, etc.) or any prerequisite such as resolving names to GUIDs first. Usage is implied rather than stated.

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

delete_navigator_itemsDelete navigator itemsA
Destructive

Deletes navigator items: saved views and View Map folders, layouts (with their drawings), subsets, Project Map viewpoints where Archicad allows it. This cannot be undone through this connector — check ids with get_navigator_items first. Output: {results: [{id, ok: true} | {id, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesNavigator item ids to delete

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that: irreversibility ('cannot be undone through this connector'), a cascade warning ('layouts with their drawings'), and per-item partial-result semantics via the output shape.

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

Conciseness5/5

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

Three compact sentences, each earning its place: scope, irreversibility/precondition, and output contract. Scope is front-loaded and there is no 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?

No output schema exists, but the description supplies the return shape including per-item success/error entries, which is exactly what an agent needs for a batch destructive call. Combined with the cascade and irreversibility notes, nothing essential is missing.

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?

Only one parameter, and schema description coverage is 100% (the schema documents the GUID format, maxItems 500, and references get_navigator_tree). The description adds no syntax beyond the schema, so the baseline of 3 applies.

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?

States a specific verb ('Deletes') and resource ('navigator items'), then enumerates the affected subtypes (saved views, View Map folders, layouts, subsets, Project Map viewpoints). This clearly distinguishes it from sibling delete tools like delete_drawings and delete_hotlinks.

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?

Gives an explicit precondition and routing: 'check ids with get_navigator_items first,' which names the sibling used to obtain valid ids. It doesn't state when-not to use it or list alternatives, but the sequencing guidance is clear and actionable.

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

delete_project_info_fieldsDelete custom Project Info fieldsA
Destructive

Deletes CUSTOM Project Info fields (category Custom) by database key or name. Built-in fields cannot be deleted (set their value to "" instead). Returns [{key, deleted} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesKeys ('autotext-<GUID>') or exact names of custom fields

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this destructive and non-idempotent, so the safety profile is covered. The description adds meaningful behavioral context beyond that: only Custom-category fields are eligible, built-ins are rejected, and the return shape is [{key, deleted} | {error}], which tells the agent deletions are per-field and may partially fail rather than being atomic.

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

Conciseness5/5

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

Three short sentences, front-loaded with the scope constraint, then the exclusion rule, then the return contract. No filler and nothing buried.

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?

No output schema exists, and the description compensates by describing the return shape; the error/partial-success case is implied by the union type. What remains thin is whether prior state matters for repeated calls, but for a single-parameter delete this is close to complete.

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 coverage is 100% and the single parameter is fully documented with key format ('autotext-<GUID>') and exact-name matching. The description's 'by database key or name' essentially restates the schema, so baseline 3 is appropriate.

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?

States a specific verb (deletes), resource (Project Info fields), and a hard scope qualifier (CUSTOM / category Custom) that separates it from sibling get_project_info_fields and set_project_info_fields as well as from delete_attributes and delete_property_definitions. An agent can identify the target of the operation 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 Guidelines4/5

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

Explicitly states when the tool does NOT apply (built-in fields cannot be deleted) and gives the alternative action for that case (set their value to ""). This is real routing guidance, though it does not name a sibling tool for the built-in-field case or describe ordering/prerequisite requirements.

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

delete_property_definitionsDelete property definitionsA
Destructive

Deletes user-defined property definitions in one undo step — their values on ALL elements are lost (undo restores them). Built-in properties cannot be deleted. Returns {results: [{guid, name, group, type, deleted} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step shown in Archicad
propertiesYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, but the description adds real substance beyond them: the values on ALL elements are lost, the deletion is a single undo step, and undo restores the values. That directly answers the 'what gets destroyed and can I recover' question an agent needs before invoking a destructive tool.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the destructive consequence before the built-in caveat and return shape. No filler; every clause carries decision-relevant information.

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?

Despite having no output schema, the description supplies the return shape ({results: [{guid, name, group, type, deleted} | {error}]}) plus the irreversibility/recovery model. For a destructive two-parameter tool, nothing essential to correct invocation is missing.

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?

The schema already documents both parameters in depth (the properties array with its anyOf GUID/group+name/builtIn forms, and undoName), so the description carries little additional parameter meaning. Schema description coverage is roughly 50%, and the description does not explain undoName or the matching resolution rules beyond what the schema states, so the baseline of 3 is appropriate.

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?

States a specific verb+resource ('Deletes user-defined property definitions') and immediately scopes it against the sibling operations by noting built-in properties cannot be deleted, distinguishing it from delete_property_groups and delete_attributes. The one-undo-step framing also signals the operation granularity.

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?

Provides an explicit when-not constraint ('Built-in properties cannot be deleted'), which steers the agent away from attempting built-in deletions. It does not, however, route the agent to alternatives such as modify_property_definitions or delete_property_groups, or state prerequisites, so it stops short of full when/when-not/alternatives coverage.

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

delete_property_groupsDelete property groupsA
Destructive

Deletes user-defined property groups in one undo step (undoable with undo). A group that still contains definitions is refused unless deleteDefinitions is true — then its definitions and all their element values are deleted too. Built-in groups cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsYes
undoNameNoName of the undo step shown in Archicad
deleteDefinitionsNoAlso delete the definitions inside (default false = refuse non-empty groups)

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses the full consequence chain: deletion happens in one undo step, non-empty groups are refused unless deleteDefinitions is true, and then definitions plus all their element values are destroyed. It also states that built-in groups cannot be deleted. This is unusually rich context for a destructive operation.

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

Conciseness5/5

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

Three tightly written sentences, front-loaded with the core action and then the critical caveats. Every sentence earns its place and no filler is present.

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 destructive mutation tool with annotations covering safety hints and no output schema, the description supplies the essential behavioral details: undoability, refusal conditions, cascading deletions, and built-in protection. An agent has enough information to invoke it correctly without further context.

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 67%; the schema documents the deleteDefinitions and undoName parameters and gives an item-level description for groups. The description adds meaning for deleteDefinitions by explaining that element values are also deleted, but it does not elaborate on the groups parameter format or undoName. Baseline 3 is appropriate given the partial coverage and added nuance for one parameter.

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 opens with a specific verb and resource: 'Deletes user-defined property groups'. It also distinguishes user-defined from built-in groups and states the undo scope, so the agent knows exactly what operation is being performed 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?

It implies the tool is for user-defined groups and gives a key prerequisite for non-empty groups (deleteDefinitions must be true), plus the exclusion that built-in groups cannot be deleted. However, it does not explicitly name alternative tools such as delete_property_definitions or modify_property_groups, nor does it state when to choose this tool over them.

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

delete_storiesDelete storiesA
Destructive

Deletes stories AND EVERY ELEMENT whose home story they are. Use ONLY when the user explicitly asks to delete stories. Run with dryRun: true first to see how many elements each story holds. All references are resolved before anything is deleted (so [2, 3] means the current stories 2 and 3); at least one story must remain. Indexes of the remaining stories shift. By default Archicad closes the gap (the stories above a deleted story move down); keepLevels: true keeps every remaining story at its elevation instead (the story below a deleted one gets taller). Returns {results: [{deleted: story+elementCount} | {error}], movedStories?, stories: [remaining], warning?} or, with dryRun, {dryRun, wouldDelete, remainingCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNotrue = change nothing, only report the stories and element counts that would be deleted
storiesYesStories to delete
keepLevelsNotrue = the remaining stories keep their elevations (default false: Archicad moves the stories above down to close the gap)

TDQS

A4.6/5.0
Behavior5/5

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

Although the annotations already declare destructiveHint=true and idempotentHint=false, the description goes well beyond them: it discloses the cascading element deletion, the pre-resolution of references, the invariant that one story must remain, index shifting, and the keepLevels elevation trade-off. This is exactly the behavioral context an agent needs before an irreversible operation.

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?

Dense but front-loaded: the destructive scope warning is the first clause, followed by the usage gate and the dryRun recommendation. Long, yet almost every sentence carries a distinct constraint or return-shape detail.

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?

No output schema exists, so the description compensates by enumerating both return shapes (the results/movedStories/stories/warning object and the dryRun object). Combined with annotations and full schema coverage, nothing an agent needs to invoke it safely is missing.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning: it clarifies why dryRun should be run first, what [2, 3] resolves to, and how keepLevels changes the elevation of remaining stories. That is more than a restatement of the schema text.

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?

States a specific verb (deletes) and resource (stories) and immediately scopes the blast radius: 'AND EVERY ELEMENT whose home story they are.' This distinguishes it from delete_elements and delete_hotlinks by explaining the cascade semantics rather than just the target.

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?

Gives an explicit gating rule ('Use ONLY when the user explicitly asks to delete stories') and a prescribed workflow ('Run with dryRun: true first'). It does not name a sibling alternative for element-only deletion, but the when-to-use condition is unambiguous.

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

detach_elements_from_issueDetach elements from issueA
DestructiveIdempotent

Detaches elements from an issue whatever their attachment type (one undo step); the elements themselves are not changed. Output: {issue: {guid, name}, detached: [guid], notAttached?: [guid]}. Fails when none of them is attached (see get_issue_elements).

ParametersJSON Schema
NameRequiredDescriptionDefault
issueYesIssue (GUID or exact name)
elementsYesElements to detach
undoNameNo

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds non-obvious behavioral detail annotations cannot convey: the operation is a single undo step, the elements themselves are not modified, and the exact failure mode. It also specifies the output shape inline, which is valuable given no output schema exists.

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

Conciseness5/5

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

Two tightly packed sentences with no filler: action and its non-effects first, then output contract, then failure condition. Every clause carries information an agent would otherwise have to infer.

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 destructive mutation with annotations covering the safety profile, the description supplies the missing pieces: output structure, undo semantics, and failure behavior. The only gap is the optional undoName parameter, which is left entirely 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 67%, so most parameters are already documented structurally. The description reinforces which entities are involved (issue, elements) but adds nothing about undoName (an optional naming parameter) or the accepted guid/name forms beyond what the schema states. Baseline 3 is appropriate.

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?

States a specific verb (detaches) and resource (elements from an issue) with the scope qualifier 'whatever their attachment type', which distinguishes it cleanly from attach_elements_to_issue and get_issue_elements in the sibling list. An agent can identify the operation 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?

It gives a failure condition (fails when none is attached) and points to get_issue_elements for inspection, which implies the correct sequencing. However, it never explicitly states when to prefer this over attach_elements_to_issue or how to discover currently attached elements as a precondition; usage is only implied.

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

dimension_wallsDimension wallsA

Automatically dimensions walls on the Floor Plan (one undo step): wall end points plus window/door jambs (or centers), linked to the walls/openings so the dimensions follow later edits. mode 'Chain' (default) = ONE chain through all given walls, measured along 'direction' (default: first wall's begin→end) — e.g. pass all walls of a facade, including the perpendicular ones whose ends should appear; mode 'EachWall' = one dimension parallel to each wall; mode 'Thickness' = one dimension ACROSS each straight wall, linked to both wall faces (shows the wall width, follows thickness changes), crossing the wall at 'thicknessPosition'. For Chain/EachWall the line is placed 'distance' m beyond the outermost wall face on 'side' ('Auto' = away from the first wall's body); 'overall' adds a second line with the total length. Get wall GUIDs first (e.g. list_elements with types ['Wall'], find_elements or get_selection). Returns {results: [{guid, role: 'chain'|'overall'|'thickness', walls, pointCount, associativePoints, segments, total, linePoint, warnings?} | {error, wall?}]}; in EachWall/Thickness mode one failing wall does not stop the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo'Chain' (default): one chain for all walls; 'EachWall': one dimension per wall; 'Thickness': one width dimension across each wall
sideNoSide of the dimension line relative to the first wall's begin→end (or 'direction'): 'Auto' (default) = the side without the wall body
layerNoLayer name or index (defaults to the tool's default layer)
wallsYesWall GUIDs
layoutNoText layout algorithm for crowded chains ('Flexible' moves colliding texts)
linePenNoPen of the dimension and witness lines
overallNoAlso create an overall dimension (first to last point) further out
textPenNoPen (color) of the dimension text, 1-255
distanceNoDistance (m) from the outermost wall face to the dimension line (default 1)
textBoldNo
textFontNoFont by name (e.g. 'Arial') or font attribute index
textSizeNoText height in PAPER millimeters (e.g. 2.5), independent of the drawing scale
undoNameNoName of the undo step
directionNoChain direction (default: the first wall's begin→end direction). Not with mode 'Thickness'
markerPenNoPen of the markers
textFrameNoDraw a frame around the text
appearanceNoChain type: 'Normal' (segment lengths, default), 'Cumulative' (running distances from the first point), 'CumulativeSV' (Archicad's other cumulative variant), 'Elevation' (elevation-type values)
markerSizeNoMarker size in PAPER millimeters (e.g. 2)
markerTypeNoDimension line end marker: ticks ('SlashLine45', 'SlashLine60', 'SlashLine75', 'CrossLine'), arrows ('OpenArrow30', 'FullArrow30', ...), dots ('FullCircle', 'EmptyCircle', 'PepitaCircle', 'CrossCircle'), 'BandArrow'
storyIndexNoStory of the dimensions (default: the wall's story — in 'Chain' mode the first wall's)
textItalicNo
textOpaqueNoOpaque (filled) text background
witnessValNoWitness line value: the gap between the dimensioned point and the witness line (form 'Large') or the witness line length (form 'Fixed'), in the unit Archicad stores — read witnessVal of an existing dimension (get_element_details) or of the tool defaults first
associativeNoLink points to walls/openings/wall faces (default true); false = static points
witnessFormNoDefault witness line form of every point
textPositionNoWhere the value text sits relative to the dimension line: 'Above' (default of most standards), 'In' (breaks the line), 'Below'
clipOtherSideNoDo not draw the witness line part beyond the dimensioned point
openingPointsNo'Jambs' (default: both sides of each opening) or 'Centers'
textDirectionNoText orientation: 'Parallel' to the dimension line (default), always 'Horizontal', or 'Vertical'
textUnderlineNo
horizontalTextNoKeep the texts horizontal
overallSpacingNoDistance (m) between the chain and the overall line (default 0.8)
includeOpeningsNoDimension windows/doors of walls parallel to the chain (default true)
onlyDimensionTextNoShow only the texts (no lines/markers)
thicknessPositionNoMode 'Thickness': where the dimension crosses the wall, in m from the wall's begin point along its reference line (default: the middle). Values < 0 or > the wall length put the dimension beyond the wall ends

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this is a write operation that is non-destructive and non-idempotent. The description adds valuable behavioral context beyond annotations: it runs as one undo step, dimensions are linked so they follow later edits, and in EachWall/Thickness mode one failing wall does not stop the others. It also describes the return structure.

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 a single dense paragraph but is front-loaded with the core action, then proceeds to modes, placement, and return format. Every sentence carries useful information, and given the tool's complexity (35 parameters, three modes), the length is justified, though a slightly more structured format could improve scanability.

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?

The description covers the essential aspects for correct invocation: what the tool does, mode selection, prerequisite steps, associative linking, undo behavior, and the return structure (including error handling). With high schema coverage and no output schema, it provides adequate completeness, though it could explicitly mention that other parameters follow standard Archicad dimension defaults.

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 very high (91%), so the baseline is 3. The description goes beyond the schema by explaining how key parameters interact—particularly the 'mode' behaviors, 'direction' defaulting to the first wall's direction, 'side' auto selection, 'distance' placement, 'overall' behavior, 'thicknessPosition', 'openingPoints', and 'associative' linkage—adding meaningful context not fully captured in the schema descriptions.

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 states a specific verb and resource: it automatically dimensions walls on the Floor Plan, creating associative dimension chains from wall end points and opening jambs/centers. It clearly distinguishes itself from generic dimension-creation siblings by being wall-specific and automatic, and it specifies the three modes it supports.

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 gives explicit guidance on when to use each mode (Chain vs EachWall vs Thickness) with examples such as 'pass all walls of a facade', and it tells the user to get wall GUIDs first via list_elements, find_elements, or get_selection. However, it does not explicitly name alternative tools like create_dimensions or modify_dimensions for cases where this tool is not appropriate.

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

duplicate_attributesDuplicate attributesA

Copies existing attributes of any type except Pen/Font (e.g. a pen set, a symbol fill, an MEP system, a model view option, a dimension standard, an operation profile, a composite) under a new name, optionally changing fields on the copy: each item is {source, name, folder?, ...fields of that type as in the create_* tools / modify_attributes}. Runs in one undo step. Returns {results: [{index, name, guid, created: true} | {..., existed: true} | {error}]} in input order; one failing item does not stop the others. Names are localized (Russian Archicad): look existing attributes up with get_attributes first.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesAttribute type to copy (every type except Pen and Font)
ifExistsNoName collision handling for all items: 'error' (default), 'skip' (reuse the existing attribute), 'update' (apply the fields to it)
attributesYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare write/non-destructive/non-idempotent; the description adds substantial behavior beyond them: atomic undo grouping, per-item failure isolation ('one failing item does not stop the others'), the three-way created/existed/error result shape, input-order preservation, and the localization caveat for Russian Archicad names. This is exactly the extra context annotations cannot carry.

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?

Dense but front-loaded: purpose first, then item shape, then return contract and the localization caveat. Every clause carries information, though the single long opening sentence with four parenthetical examples is heavier than necessary.

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 batch copy tool with no output schema, the description supplies the return contract, failure semantics, undo behavior, and a lookup prerequisite, so nothing an agent needs to call it correctly is missing.

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 coverage is 67% and the description compensates meaningfully: it explains the item shape ({source, name, folder?, ...type-specific fields}) and that extra fields follow the create_*/modify_attributes conventions. IfExists and the source name/index/guid union are left to the schema, so it does not fully close the gap, but it adds real semantics.

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?

States a specific verb (copies) plus the exact resource (existing attributes of any type) and explicitly excludes Pen/Font. It enumerates concrete examples of copyable types and names the related siblings (create_*/modify_attributes) that supply the field semantics, so an agent can separate it from create_* and modify_attributes 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?

Gives actionable context: look existing attributes up with get_attributes first, and use create_*/modify_attributes field conventions for the extra fields. It does not explicitly state when to prefer create_* over this tool, so it stops short of full when/when-not routing, but the prerequisites and referenced alternatives are clear.

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

elevate_elementsElevate elementsA
Destructive

Moves model elements vertically by deltaZ meters (Edit > Move > Elevate); positive = up. Heights/offsets relative to the home story change accordingly (e.g. a wall's bottom offset, an object's elevation); the home story does not change (use modify_elements storyIndex or copy_elements_to_stories for that). 2D elements (lines, fills, texts, labels, dimensions, drawings...) have no elevation and are reported as per-item errors. copy=true with count stacks copies at k × deltaZ. Returns {results: [{guid, newGuid?, warning?} | {guid, error}], warnings?} in input order (a 'warning' on an item means Archicad may have ignored it); with copy=true the copy-style result {results: [{guid, copies: [new GUIDs]}], createdCount, additionalCreated?}. Locked elements, elements on locked/hidden layers, hotlinked elements and elements outside your Teamwork workspace are reported with an actionable error instead of being edited.

ParametersJSON Schema
NameRequiredDescriptionDefault
copyNotrue = keep the originals and transform copies (default false = transform the originals)
countNoOnly with copy=true: number of stacked copies (default 1)
deltaZYesVertical displacement in meters (positive = up)
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructive, non-idempotent, non-readonly, but the description goes well beyond that: it names the exact failure classes reported as per-item errors (locked elements, locked/hidden layers, hotlinks, out-of-workspace elements), explains the 'warning' semantics (Archicad may have ignored it), and details how copy=true/ count stacking behaves. This is unusually rich disclosure that directly informs safe use.

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?

Dense and front-loaded: the core action, its relative-offset effect, and the sibling exclusions come first, then return shapes and error classes. Every sentence carries information, though the single block is long and could be marginally tightened.

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?

With no output schema, the description fully compensates by describing both return shapes ({results:[...], warnings?} and the copy-style result with createdCount/additionalCreated) and the per-item error model, so an agent knows exactly what to expect on success and failure.

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 coverage is 100% so parameter syntax is already documented, but the description adds semantic meaning the schema does not: copy=true stacks copies at k × deltaZ, and the effect on relative offsets (wall bottom offset, object elevation) with the home story unchanged. Only minor redundancy on deltaZ's sign convention keeps this from a 5.

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?

States a specific verb and resource ('Moves model elements vertically by deltaZ meters') with a concrete unit and UI-menu mapping (Edit > Move > Elevate). It also explicitly distinguishes itself from siblings by naming modify_elements storyIndex and copy_elements_to_stories as the tools for changing the home story.

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

Usage Guidelines5/5

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

Gives explicit when-to-use routing: use this to change vertical offset, but use the named sibling tools to change the home story. It also states the copy=true alternative for stacking and clarifies which elements are out of scope (2D elements), leaving nothing to inference.

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

execute_addon_commandExecute add-on commandA
Destructive

Escape hatch: runs any add-on JSON command through API.ExecuteAddOnCommand. Default namespace is 'ClaudeConnector' (see list_addon_commands); other installed add-ons also work, e.g. namespace 'TapirCommand'.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesAdd-on command name, e.g. 'GetElementDetails'
namespaceNoCommand namespace (default ClaudeConnector)
parametersNoCommand parameters object

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already flag this as destructive, non-readonly, and non-idempotent. The description adds useful context: it introduces the default namespace ('ClaudeConnector'), mentions that other add-ons work via namespaces like 'TapirCommand', and warns this is an escape hatch. It doesn't elaborate on what exactly gets destroyed or permissions needed, but it goes beyond the annotations.

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?

A single, well-structured sentence that front-loads the purpose and adds needed context without waste. It is appropriately sized for a generic command executor.

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

Completeness3/5

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

The description covers the essential escape-hatch nature and namespace default, which is important for a generic executor. However, given the high-risk, open-ended nature and lack of output schema, an agent might need more guidance on error handling, response format, or how to distinguish this from 'execute_json_api_command'. The omission of that sibling distinction is a notable gap.

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 coverage is 100%, so the schema already documents all three parameters including examples and the default namespace. The description reiterates the default namespace and gives an example namespace, adding little beyond the schema. Baseline 3 is appropriate.

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 clear verb (runs) and resource (any add-on JSON command) and explicitly labels it an 'escape hatch'. It also references the underlying API call. However, it doesn't clearly distinguish it from the sibling 'execute_json_api_command' – both sound like low-level passthroughs, leaving the agent to guess which to use.

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?

The term 'escape hatch' implies it's a fallback for when standard tools don't cover a need, and it points to 'list_addon_commands' for discovery. But it gives no explicit when-to-use vs when-not-to-use, and crucially doesn't explain the difference from 'execute_json_api_command'.

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

execute_json_api_commandExecute official JSON API commandA
Destructive

Escape hatch: runs any official Archicad JSON API command verbatim, e.g. command 'API.GetNavigatorItemTree' with parameters {navigatorTreeId: {type: 'ProjectMap'}}. Prefer the dedicated tools; use this for commands without one. Reference: https://archicadapi.graphisoft.com/JSONInterfaceDocumentation/

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesCommand name, e.g. 'API.GetElementsByType' (the 'API.' prefix is optional)
parametersNoCommand parameters object

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds that commands run 'verbatim' and points to documentation, but does not warn that arbitrary destructive operations (e.g. deletes) can be invoked or how errors are surfaced; with annotations carrying the risk profile this lands at a baseline 3.

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?

Three tight clauses, front-loaded with the escape-hatch framing, then example, then routing rule and reference link. Dense and purposeful, though the inline JSON example makes it slightly busier than strictly necessary.

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 generic command executor with no output schema, the description gives the reference URL and the invocation format an agent needs. Return values are inherently command-dependent and cannot be enumerated, so the omission is reasonable rather than a gap.

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 coverage is 100%, so baseline is 3. The description adds a concrete worked example showing how 'parameters' nests ({navigatorTreeId: {type: 'ProjectMap'}}), which is genuine syntax value beyond the schema's generic 'Command parameters object'.

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?

States a specific verb+resource ('runs any official Archicad JSON API command verbatim') and labels itself an escape hatch, immediately distinguishing it from the many dedicated sibling tools. The concrete example command makes the mechanism unambiguous.

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

Usage Guidelines5/5

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

Explicit routing guidance: 'Prefer the dedicated tools; use this for commands without one.' This gives both when-to-use and when-not-to-use, so an agent can decide without inference.

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

export_3d_modelExport 3D model (OBJ / STL / GSM)A

Exports 3D geometry: .obj (Wavefront, with a .mtl of surface colors/transparency next to it), .stl (binary by default, triangulated, for 3D printing / analysis) or .gsm (Archicad GDL object of the 3D window via Save as Object). Source: what the 3D window shows (default — set it up first with the views tools, e.g. show selected elements in 3D, 3D cutaway), every 3D element of the project (source 'AllElements'), explicit 'elements', or the current selection. Coordinates are project coordinates; OBJ defaults to Y-up (Blender/ three.js), STL to Z-up; units m by default. Returns {file, materialFile?, bodyCount, elementCount, vertexCount, faceCount|triangleCount, boundingBox (m, Z-up)}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute output path ending in .obj, .stl or .gsm, e.g. /private/tmp/claude-connector-tests/model.obj
unitsNoFile units (default m)
binaryNostl: binary (default true) or ASCII
formatNoOutput format (default: from the extension)
sourceNoWithout elements/useSelection: '3DWindow' (default: what the 3D window currently shows) or 'AllElements' (every 3D element on every story)
upAxisNoUp axis in the file (default Y for obj, Z for stl)
gdlModeNogsm: binary 3D data (default) or editable GDL text
elementsNoExport only these 3D elements (curtain walls/stairs/railings include their parts)
materialsNoobj: write the .mtl material file (default true)
overwriteNoReplace an existing file (default false: existing files are an error)
placeableNogsm: make the object placeable (default true)
useSelectionNoExport the currently selected elements
createFoldersNoCreate missing parent folders (default false)
restoreWindowNoBring back the window that was in front before the export (default true)
includeInvisibleNoAlso export polygons Archicad marks invisible (default false)
includeSubelementsNoWith elements: include curtain wall / stair / railing / segmented beam-column parts (default true)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only give a coarse safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false); the description adds real behavioral context beyond them: the side-effect of writing an adjacent .mtl file, the source-vs-window dependency, coordinate/up-axis conventions per format, and default units. It does not restate the overwrite/error semantics already in the schema, but the extra file side-effect is a meaningful disclosure.

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?

Two dense, front-loaded sentences that lead with the formats and defer source/coordinate/return details. Mostly efficient, though it repeats schema defaults (units m, binary) that the schema already carries, costing a little tightness.

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 16-parameter export tool with no output schema, the description is complete: it names the formats, sources, coordinate/unit conventions, and even the return shape ({file, materialFile?, counts, boundingBox}), so an agent has everything needed to call it correctly.

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 a baseline of 3 applies, but the description adds genuine cross-parameter meaning: it clarifies the interaction between source, elements, and useSelection ('Without elements/useSelection'), and the per-format defaults for up-axis and binary. This is more than restatement of the schema text.

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?

States a specific verb (Exports) plus the resource (3D geometry) and enumerates the exact output formats with their distinguishing traits (.obj with .mtl, binary triangulated .stl, .gsm GDL object). An agent can distinguish this from the many create_*/modify_* siblings and from export_ifc/dwg/pdf at a glance.

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?

Gives clear context for the default path: 'Source: what the 3D window shows (default — set it up first with the views tools, e.g. show selected elements in 3D, 3D cutaway)'. It also explains how elements/useSelection/AllElements select alternative sources. No explicit when-not or named export-format alternatives, so it stops short of a 5.

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

export_bcfExport issues to BCFA
Idempotent

Exports issues to a BCF file (.bcfzip, BCF 2.1) for other BIM tools (Solibri, Revit, BIMcollab, ...). Output: {path, exported, issues: [{guid, name}], fileExists}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute target file path on the Archicad machine, e.g. '/Users/me/Desktop/review.bcfzip' ('~/' allowed; '.bcfzip' is appended when there is no extension)
issuesNoIssues to export (GUIDs or exact names); default: all issues
overwriteNoReplace an existing file (default false: an existing file is an error)
createFoldersNoCreate missing parent folders (default false)
useExternalIdNoReference elements by the IFC GlobalIds they had in an imported IFC model (default false = Archicad's own IFC GUIDs)
alignBySurveyPointNoUse the Survey Point as the coordinate origin (default true)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, so the safety profile is largely covered. The description adds value by disclosing the exact return shape ({path, exported, issues, fileExists}), which also signals the overwrite/existing-file concern; it stops short of stating permission requirements or error semantics.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and format, followed by the return shape. No repetition or filler; every clause carries information.

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?

Despite having no output schema, the description enumerates the return fields, and the format/interop context is supplied. Combined with 100% schema coverage of the six parameters, an agent has enough to invoke and interpret this correctly.

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 coverage is 100%, so every parameter (path, issues, overwrite, createFolders, useExternalId, alignBySurveyPoint) is already documented in the schema. The description adds no parameter-level detail, so the baseline 3 applies.

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?

States a specific verb+resource (exports issues) and pins the artifact format (.bcfzip, BCF 2.1) plus the consuming tools (Solibri, Revit, BIMcollab). This clearly distinguishes it from the sibling import_bcf and other export_* tools 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 Guidelines3/5

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

The description implies the use case (handing issues to other BIM tools) but never states when to choose this versus import_bcf or gives exclusions/prerequisites. Usage is inferable from context, which is the minimum viable level.

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

export_dwgExport DWG / DXF (2D)A

Exports a 2D window — floor plan story, section, elevation, detail, worksheet, 3D document or a whole layout (with its drawings and master layout) — as DXF, or DWG. The file is written from the primitives Archicad draws for every visible element, so it matches the view: lines, arcs, circles, polylines (with arcs), texts and fill pattern lines; layers = Archicad layers, colors = pen numbers, units mm by default. Line types and solid fills are not transferred (fills: fillBoundaries). A section/elevation window holds only its own 2D drafting — to get the model cut, place it on a layout and export the layout. format 'dwg' converts with the ODA File Converter (must be installed); for Archicad's own DWG translator publish a Publisher Set configured for DWG. Returns {file: {path, sizeBytes}, entityCount, counts, layerCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute output path ending in .dxf or .dwg, e.g. /private/tmp/claude-connector-tests/plan.dxf
viewNoOpen this navigator view/viewpoint first (a View Map view applies its saved story, layer combination, scale, zoom), then export
unitsNoDrawing units of the file (default mm)
formatNoOutput format (default: from the path extension)
layoutNoExport this layout (sheet)
databaseNoExport this database (section, elevation, detail, worksheet, 3D document, layout, 'FloorPlan')
elementsNoExport only these elements (they must be in the exported window's database)
overwriteNoReplace an existing file (default false: existing files are an error)
dwgVersionNoDWG version for format 'dwg' (default ACAD2018)
storyIndexNoExport the floor plan of this story (index or localized name)
maxEntitiesNoSafety limit of written entities (default 3,000,000)
fillPatternsNoInclude the pattern lines of fills (default true)
createFoldersNoCreate missing parent folders (default false)
restoreWindowNoBring back the window that was in front before the export (default true)
fillBoundariesNoAlso write fill areas as closed polylines, solid triangles as SOLIDs (default false)
includeMasterLayoutNoLayouts: include the master layout content (title block) (default true)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover readOnly/destructive/idempotent, and the description goes well beyond them: it explains what is actually written (lines, arcs, circles, polylines, texts, fill pattern lines), the layer/color/unit mapping, what is NOT transferred (line types, solid fills unless fillBoundaries), external converter dependency, the overwrite-errors-by-default behavior, the maxEntities safety cap, and the return payload.

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?

Dense but front-loaded: output formats and window scope come first, then fidelity caveats, then the DWG converter prerequisite, then the return shape. Every sentence carries information, though the window-type enumeration and caveat list make it longer than strictly necessary.

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 16-parameter export tool with no output schema, the definition covers format selection, fidelity limits, converter dependency, overwrite/folder behavior, element filtering scope, and explicitly describes the return value {file:{path,sizeBytes}, entityCount, counts, layerCount}. Nothing essential for a correct call is missing.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: default mm units, that fills need fillBoundaries for boundaries/solids, that line types are dropped, and that existing files error unless overwrite is set. It does not explain storyIndex/database/layout selection precedence, so it is not a 5.

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?

States a specific verb and resource ('Exports a 2D window ... as DXF, or DWG') and enumerates exactly which window types are supported (floor plan story, section, elevation, detail, worksheet, 3D document, layout). This cleanly separates it from export_pdf, export_ifc, export_3d_model and publish_publisher_set.

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?

Gives real conditional guidance: section/elevation windows hold only their own 2D drafting, so to get the model cut you must place it on a layout and export the layout; format 'dwg' needs the ODA File Converter installed, whereas Archicad's own DWG translator requires a Publisher Set instead. It never states when to prefer this over the sibling export tools generally, so it falls just short of a 5.

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

export_favoritesExport favoritesA
Idempotent

Exports favorites to a preferences file (.prf) that other projects can import with import_favorites (or Archicad's Favorites palette). Output: {path, exported, fileExists}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute target path, e.g. '/Users/me/Desktop/favorites.prf' ('~/' allowed; '.prf' appended when there is no extension)
namesNoFavorites to export (default: all)
overwriteNoReplace an existing file (default false)
createFoldersNoCreate missing parent folders (default false)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the mutation profile is covered. The description adds value beyond them by disclosing the return object shape {path, exported, fileExists}, which is important since there is no output schema.

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

Conciseness5/5

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

Two tight sentences with zero waste: purpose and target consumer come first, return shape second. Every clause carries information the agent needs.

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 mutation tool with no output schema and full annotation coverage, the description supplies the missing return contract and the import counterpart, which is what an agent needs. It could still note overwrite/overwrite-conflict behavior, but the essentials are present.

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%, so all four parameters (path, names, overwrite, createFolders) are already documented, including the '.prf' auto-append rule. The description adds no parameter-level meaning beyond the schema, so the baseline 3 is appropriate.

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?

States a specific verb (Exports) plus resource (favorites), the artifact produced (.prf preferences file), and names the sibling that consumes it (import_favorites). An agent can distinguish this from get_favorites, create_favorite, or import_favorites without opening any 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?

The description implies the use case (sharing favorites with other projects via import_favorites or the Favorites palette), but never states explicit when-to-use conditions or exclusions versus siblings like import_favorites. Usage is inferable but not spelled out.

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

export_ifcExport IFCA

Saves the model as IFC (.ifc) or ifcXML (.ifcxml) with an IFC translator (default: the first/default one; see get_ifc_translators). Scope: the entire project (default), visible elements, the current story, the selection, or an explicit element list. Returns {file: {path, sizeBytes}, translator, scope, durationSeconds}. Big models can take minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute output path, e.g. /private/tmp/claude-connector-tests/model.ifc
scopeNoWhat to export: EntireProject (default), VisibleOnAllStories (respecting layer visibility), AllOnCurrentStory / VisibleOnCurrentStory (use storyIndex), Selection (current selection), Elements (the 'elements' list; default when elements is given)
formatNoFile format (default: from the path extension, else ifc)
elementsNoElements to export (scope 'Elements')
overwriteNoReplace an existing file (default false: existing files are an error)
storyIndexNoStory for the *CurrentStory scopes (switches the floor plan to it)
translatorNoTranslator name (exact, case-insensitive, or a unique part of it)
createFoldersNoCreate missing parent folders (default false)
includeBoundingBoxGeometryNoAlso write bounding-box representations (default false)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare this is a write/non-idempotent operation, and the description adds genuinely useful behavior: the return shape {file, translator, scope, durationSeconds} and the warning that big models can take minutes. It does not mention overwrite implications beyond what the schema states, but the timing and return disclosure are real added value.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the core action, then scope, then return/timing. No filler; every clause carries information.

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?

No output schema exists, so the description compensates by describing the return object and the latency caveat. Combined with a 9-parameter, fully documented schema, an agent has everything needed to call it correctly.

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 coverage is 100%, so baseline is 3; the description goes beyond by summarizing defaults (translator = first/default, scope = entire project, format = from path extension) and linking the translator parameter to get_ifc_translators. That adds navigational meaning the schema alone does not.

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?

States a specific verb+resource: saves the model as IFC (.ifc) or ifcXML (.ifcxml). It also distinguishes itself from sibling export tools (export_dwg, export_pdf, export_3d_model) by naming the IFC translator dependency and the scope concept.

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?

Gives clear usage context: default translator is the first/default one and points to get_ifc_translators for choices; enumerates the scope options and their defaults. It stops short of explicitly naming when to prefer this export over the other export_* siblings, so it is a 4 rather than a 5.

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

export_moduleSave elements as module (.mod)A

Saves elements (or the current selection) as an Archicad module file (.mod) — the file format for hotlinked modules (place_hotlink) and for merging into other projects (merge_file). All elements must be in one database (floor plan, or one section/detail/worksheet). Returns {file: {path, sizeBytes}, elementCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute output path ending in .mod, e.g. /private/tmp/claude-connector-tests/core.mod
elementsNoElements to save
overwriteNoReplace an existing file (default false: existing files are an error)
useSelectionNoSave the current selection instead
createFoldersNoCreate missing parent folders (default false)

TDQS

A4.3/5.0
Behavior4/5

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

Adds a real constraint beyond annotations: all elements must reside in one database (floor plan, or one section/detail/worksheet). Also documents the return shape ({file: {path, sizeBytes}, elementCount}), which annotations do not cover. It does not mention overwrite or permission behavior, but the annotations already establish non-destructive, non-idempotent write semantics.

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

Conciseness5/5

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

Front-loads the core action and format, then adds the one-database constraint and return shape in two compact sentences. No filler or redundancy.

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 file-export tool with a rich input schema and no output schema, the description supplies the missing return structure and the important database constraint. Annotations cover the safety profile, so nothing essential is missing for correct invocation.

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%, so the schema already documents every parameter, including path, elements, overwrite, useSelection, and createFolders. The description only echoes the elements/current-selection choice and does not add syntax or constraint details beyond the schema, so baseline 3 is appropriate.

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?

States a specific verb ('Saves') and resource ('elements ... as an Archicad module file (.mod)'), and distinguishes the format from other exports by tying it to hotlinked modules and merging. An agent can identify the operation 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 Guidelines4/5

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

Names the format's downstream uses (place_hotlink, merge_file), giving clear context for when this export is appropriate. It does not explicitly state when not to use it or name alternative export tools (e.g., export_ifc), so it falls short of a full routing guide.

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

export_pdfExport PDFA

Saves a window as PDF (Archicad's Save As PDF): a layout (sheet size from the layout), a floor plan story, section, elevation, detail, worksheet, 3D document, a View Map view, or the current front window. Batch with 'exports' (one PDF per item; common options apply to all). Page size/margins via 'paper' (meters; default: layout sheet, else A3 landscape). For many layouts in one go prefer publish_publisher_set. Returns {file: {path, sizeBytes}, exported, paper} (or results[] for a batch).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAbsolute output path of a single PDF, e.g. /private/tmp/claude-connector-tests/layout.pdf
viewNoOpen this navigator view/viewpoint first (a View Map view applies its saved story, layer combination, scale, zoom), then export
paperNoPDF page. Default: the layout's own sheet size for layouts, otherwise A3 landscape with 10 mm margins
layoutNoExport this layout (sheet)
exportsNoBatch: several PDFs, each {path, view | layout | database | storyIndex, paper?}
databaseNoExport this database (section, elevation, detail, worksheet, 3D document, layout, 'FloorPlan')
overwriteNo
storyIndexNoExport the floor plan of this story (index or localized name)
createFoldersNo
restoreWindowNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnly=false, destructive=false and idempotent=false, so the safety burden is partly lifted; the description adds useful behavior beyond that, noting that batch options apply to all items, that existing files are an error unless overwrite is set, and that the prior front window is restored. It does not discuss permissions or failure modes in more depth, but it is solid given the annotation coverage.

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?

Single dense paragraph that front-loads the core action and source types before defaults and return shape. Every clause carries information, though the packing of many distinct points into one block makes it slightly heavy to scan.

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 no output schema, the description compensates by summarizing the return value ({file:{path,sizeBytes}, exported, paper} and results[] for batches). Combined with naming defaults and the batch alternative, an agent has enough to invoke it correctly, though deeper detail on batch failure semantics is absent.

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 coverage is 70% and the description complements it by clarifying the source-type-to-parameter mapping (layout/database/storyIndex/view) and unit/default behavior for 'paper'. It also previews the return shape, which the absent output schema cannot supply.

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?

States a concrete verb and resource ('Saves a window as PDF') and enumerates the supported source types (layout, floor plan story, section, elevation, detail, worksheet, 3D document, View Map view, front window), so an agent knows exactly what can be exported. It also names the sibling publish_publisher_set as the multi-layout alternative, distinguishing itself from it.

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

Usage Guidelines5/5

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

Explicitly routes usage: batch several PDFs with 'exports' and prefer publish_publisher_set when many layouts are needed in one go. It also states defaults (paper sizing falls back to layout sheet size, otherwise A3 landscape), giving the agent enough to choose between this tool and its alternatives.

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

find_elementsFind elementsA
Read-onlyIdempotent

Finds elements in the open project with combinable filters (type, story, layer, renovation status, visibility/editability, selection, Element ID pattern, library part name, group, hotlink, lock state, spatial region) and returns a paginated list [{guid, type, storyIndex, layer: {index, name}, elementId, boundingBox?, libraryPart?}] plus total/hasMore. All filters are optional and AND-combined; with no filter every main element is listed. Use the GUIDs with get_element_details, get_element_quantities, modify_elements, set_selection etc. For counts only use get_element_counts. Coordinates in meters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn at most this many matches. Default 500
typesNoOnly these element types. Default: every main type (sub-elements such as curtain wall panels, stair treads or railing posts are only included when listed here or with includeSubelements=true)
layersNoOnly elements on these layers (layer names are localized, e.g. Russian — take them from get_attributes or earlier results)
lockedNotrue = only locked elements, false = only unlocked ones
offsetNoSkip this many matches (pagination). Default 0
regionNoSpatial filter on the element's 3D bounding box (2D elements have a flat box at z=0). Give any subset of the limits; e.g. {xMin:0, yMin:0, xMax:10, yMax:8} for a plan rectangle
filtersNoArchicad visibility/editability filters; an element must pass ALL of them
groupedNotrue = only grouped elements, false = only ungrouped ones
storiesNoOnly elements whose home story is one of these
elementIdNoElement ID (the ID shown in the Info Box) wildcard pattern, case-insensitive: '*' = any characters, '?' = one character; without wildcards the ID must match exactly. Examples: 'W-*', '*01', 'D-0??'
groupGuidNoOnly members of this group (nested groups included); groupGuid comes from get_element_details
inHotlinkNotrue = only elements that come from a hotlinked module, false = only own elements
storyIndexNoOnly elements whose HOME story is this one (index or localized name, see get_stories)
hotlinkGuidNoOnly elements belonging to this hotlink instance
libraryPartNoLibrary part name contains this text (case-insensitive). Applies to objects, lamps, windows, doors, skylights and zone stamps; other types are excluded. Names are localized
excludeTypesNoSkip these element types
selectedOnlyNoOnly elements in the current selection
withinElementsNoRestrict the search to these elements (e.g. to refine an earlier result)
includeElementIdNoInclude the Element ID string. Default true
renovationStatusNoOnly elements with one of these renovation statuses
includeBoundingBoxNoAdd boundingBox {xMin,yMin,zMin,xMax,yMax,zMax} (m, z absolute) to each element. Default false
includeLibraryPartNoAdd the library part name of objects/lamps/doors/windows/skylights/zones. Default false
includeSubelementsNoAlso list sub-elements (curtain wall/stair/railing parts, beam/column segments) when 'types' is not given, and the hidden GDL part Objects/Lamps owned by curtain walls, railings and stairs (skipped otherwise, counted in stats.ownedPartObjectsSkipped). Default false

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavior beyond that: all filters are AND-combined, no-filter lists every main element, results are paginated with total/hasMore, and coordinates are absolute meters. It does not discuss result ordering or snapshot semantics, keeping it short of a 5.

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?

Front-loaded with the verb, scope, filter set and return shape, then routing guidance. The long parenthetical filter list is information-dense but does consume space; still, every clause maps to a real capability rather than padding.

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 23-parameter read tool with no output schema, the description covers the essentials: filter combinability, no-filter default, pagination fields, coordinate units, and downstream usage of GUIDs. Nothing an agent needs to call it correctly is missing.

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 schema carries the per-filter detail. The description still adds global semantics not obvious from individual fields: all filters are optional and AND-combined, and units are meters. It does not add syntax beyond what the schema already documents for specific params.

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?

States a specific verb and resource ('Finds elements in the open project'), enumerates the combinable filter categories, and describes the returned list shape. It also explicitly separates itself from get_element_counts, so an agent can pick it apart from siblings without reading 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 Guidelines5/5

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

Gives explicit routing: 'For counts only use get_element_counts' and 'Use the GUIDs with get_element_details, get_element_quantities, modify_elements, set_selection etc.' It also states the fallback behavior with no filters, so the agent knows when a bare call is appropriate.

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

get_3d_viewGet 3D view settingsA
Read-onlyIdempotent

Returns the 3D view state: projection {mode, perspective: {camera {x,y,z}, target {x,y,z}, viewCone, roll, distance, azimuth, viewDirection, sun} | axonometric: {projection preset, azimuth, tranmat, derived view direction, sun}}, 3D style {current, available, model (Shading/HiddenLine/...), ...}, windowSize, filter {allStories, fromStory, toStory, mode (all/selection/marquee), elementTypes}, cutPlanes, rendering {scenes, imageSize} and modelExtent (3D bounding box, m). Angles in degrees.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds the units convention ('Angles in degrees') and the shape of the returned state, which is genuinely useful, but says nothing about permissions, caching, or failure behavior beyond what annotations give.

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?

A single dense sentence but front-loaded with the verb+resource before the structural enumeration, and every clause describes an actual returned field. It is long, but the length is justified because no output schema exists to carry the return shape.

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?

With no output schema and no parameters, the description carries the entire burden of describing the response, and it does so thoroughly: projection modes, style, window size, filters, cut planes, rendering and model extent, plus the degree convention. Nothing an agent needs to consume the result is missing.

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 tool takes zero parameters, so per the baseline a 4 applies. There is nothing for the description to clarify about inputs, and it correctly refrains from inventing any.

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?

States a specific verb+resource ('Returns the 3D view state') and enumerates the returned structure in detail. It is unambiguous what the tool does, but it never distinguishes itself from close siblings like get_view_settings or set_3d_view, so an agent must infer which getter applies to a 3D context.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternative. With siblings such as get_view_settings, set_3d_view, show_in_3d and capture_view in the list, the absence of routing information is a real gap.

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

get_active_pen_tablesActive pen tablesA
Read-onlyIdempotent

Returns the pen tables (pen sets) currently used by model views and by the layout book: {modelView: {guid, name}, layoutBook: {guid, name}}. With includePens, also their 255 pens {index, color '#RRGGBB', weight (mm), description}. Pen colors of elements follow the model-view table. Change pens with modify_pens.

ParametersJSON Schema
NameRequiredDescriptionDefault
pensNoWith includePens: only these pen indices
includePensNoInclude the pens of both tables (default false)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral detail beyond that: what the returned tables contain, the 255-pen structure, the pen field format ('#RRGGBB', weight in mm), and how element pen colors relate to the model-view table.

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?

Front-loaded with the core purpose, then return shape, then the sibling pointer. Dense but mostly earns its place; the inline JSON-ish return notation is slightly compact but informative rather than wasteful.

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 no output schema, the description carries the burden of describing returns, and it does so adequately (tables, pens, field formats). Permissions or pagination are unaddressed but not central for this small read tool.

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 coverage is 100%, so baseline is 3. The description goes further by restating that includePens pulls in the 255 pens and that the table selection drives element pen colors, giving context the bare boolean schema description does not.

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?

States a specific verb and resource ('returns the pen tables currently used by model views and by the layout book') and even sketches the return shape. An agent can distinguish it from modify_pens and the attribute-creation tools 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 Guidelines4/5

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

Provides clear context for the read operation and explicitly routes to 'modify_pens' for the write counterpart. It does not spell out when-not-to-use (e.g. versus get_attributes), but the read/write split with its sibling is unambiguous.

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

get_attribute_foldersBrowse attribute foldersA
Read-onlyIdempotent

Browses the folder structure of an attribute type (Attribute Manager folders): a folder's GUID, its attributes {guid, name} and subfolders, recursively up to depth. Paths are arrays of folder names from the root (localized). Output: {attributeType, path, guid, attributes, subfolders: [{path, guid, attributes?, subfolders?, subfolderCount?}]}. Use the folder paths/GUIDs with create/delete/rename_attribute_folder(s) and move_attributes_to_folder; attribute details come from get_attributes.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoSubfolder levels to expand (default 1; 0 = only this folder)
folderNoFolder to open (default: root)
attributeTypeYesAttribute type: BuildingMaterial, Composite, Fill, Layer, LayerCombination, Line, PenTable, Profile, Surface or ZoneCategory
includeAttributesNoList attributes {guid, name} of each expanded folder (default true); false = only counts

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds recursion behavior up to `depth`, localized path arrays, optional attribute listing via includeAttributes, and a full output shape, though it does not add permission or rate-limit context.

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 front-loaded with the browse action in a single dense paragraph. No output schema exists, so the inline output shape earns its place, though the paragraph is long and could be easier to scan.

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 a read-only browse tool with no output schema, the description supplies output shape, recursion behavior, localized path handling, and sibling routing. Annotations cover safety and the schema covers parameters, so nothing material is missing.

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%, so the schema already documents depth, folder path formats, attributeType enum, and includeAttributes. The description adds only 'localized' for path names and the output shape, leaving parameter semantics largely to 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?

States a specific verb, 'Browses', and resource, 'the folder structure of an attribute type', along with returned fields. It distinguishes itself from the sibling get_attributes by directing attribute details there.

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

Usage Guidelines5/5

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

Explicitly routes the agent: use the folder paths/GUIDs with create/delete/rename_attribute_folder(s) and move_attributes_to_folder, while attribute details come from get_attributes. It names alternatives and the condition that selects them.

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

get_attribute_property_valuesGet attribute property valuesA
Read-onlyIdempotent

Reads property values of ATTRIBUTES — mainly building materials (properties/classifications of building materials, e.g. thermal or product data) — as a table like get_property_values: {properties: [...], results: [{attribute: {type, index, name, guid}, values: [...]}]}. Each cell is {value, display?, isDefault?} (display = Archicad's formatted text incl. units, only when it differs from value; isDefault only for user-defined properties: true = the element has no own value and shows the default/expression) or {status: 'NotAvailable' (property not available for this element/classification) | 'NotEvaluated' | 'Undefined' (value set to Undefined) | 'Empty'}. Without properties: all available ones (scope UserDefined default).

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoUsed only without properties (default UserDefined)
attributesYesAttributes, e.g. [{type: 'BuildingMaterial', attribute: 'Бетон - Конструкционный'}]
propertiesNo
includeDisplayNoAdd formatted display text (default true)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description goes well beyond them: it fully specifies the return table shape, per-cell structure ({value, display?, isDefault?}), the exact meaning of display and isDefault, and every status code (NotAvailable/NotEvaluated/Undefined/Empty) with its condition. For a read-only tool with no output schema, this is unusually rich behavioral disclosure.

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 and return shape are front-loaded and every clause carries information. The single dense paragraph with stacked parentheticals is harder to scan than a structured layout, but there is essentially no 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?

With no output schema, the description carries the full burden of explaining return values and does so thoroughly (table shape, cell variants, status codes, default scope). Together with the 75%-covered input schema, an agent has everything needed to call and interpret this tool correctly.

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 coverage is 75%, so the schema documents most parameters, but the description adds the cross-parameter rule that scope is only meaningful without properties and defaults to UserDefined. That interaction is not derivable from the individual schema fields alone.

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 opens with a specific verb+resource ("Reads property values of ATTRIBUTES — mainly building materials") and explicitly contrasts itself with get_property_values by scoping to attributes rather than elements. An agent can distinguish this from sibling value tools (get_property_values, get_component_property_values, get_attribute_property_values) 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 Guidelines3/5

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

Usage is implied through the "mainly building materials... thermal or product data" framing and the note that without properties all available ones are returned (scope defaults UserDefined), which tells the agent when to pass a scope vs. omit it. However, there is no explicit when-to-use/when-not guidance or named alternative (e.g. "use get_property_values for elements"), so the routing is left to inference.

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

get_attributesGet attributesA
Read-onlyIdempotent

Lists Archicad attributes of one type with their settings: {index, name, guid, folder?, ...type fields} using the SAME field names that the create_*/modify_attributes tools accept. Summary fields per type — Layer: hidden, locked, wireframe, intersectionGroup; Pen: color, width (mm); Line: lineType, scaleWithPlan, period; Fill: fillType, usage, bitmapPattern, spacingX/Y (pattern units × spacingX = meters), percent; Composite: totalThickness, skinCount, usage; Surface: color, transparency, reflection, fill, texture; LayerCombination: active, layerCount; ZoneCategory: code, color, stamp; BuildingMaterial: cutFill, pens, surface, uiPriority (0-999 as in the UI), thermal properties; Profile: usage; PenTable: activeForModel/Layout; MEPSystem, OperationProfile. detailed: true adds composite skins and skin lines, per-layer states of layer combinations, dash/symbol items of line types, vector hatch lines, all pens of a pen table, profile size, dimension formats. Without type: returns the number of attributes of every type. Layer/LayerCombination results include the active layer combination.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAttribute type to list (omit to get counts per type)
limitNoReturn at most this many (default 300; the response has total/hasMore — narrow with nameFilter instead of paging when possible)
offsetNoSkip this many matches (paging)
detailedNoInclude definition details (skins, layer states, dashes, hatch lines, pens...). Default false
attributesNoOnly these attributes (names, indices or {guid}); nameFilter/offset/limit are ignored then
nameFilterNoCase-insensitive name substring, or a wildcard pattern with * and ? (e.g. 'Бетон*')

TDQS

A4.3/5.0
Behavior5/5

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

With readOnly/idempotent/non-destructive already covered by annotations, the description adds substantial behavioral context: the exact summary fields returned per attribute type, what detailed:true unlocks (skins, layer states, dashes, hatch lines, pens), and that layer results include the active layer combination. This is exactly the return-shape disclosure needed when no output schema exists.

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

Conciseness3/5

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

The core purpose is front-loaded in the first sentence, but the bulk is an extremely dense per-type field enumeration that is far larger than needed for selection/invocation. Much of the field-level detail could be deferred, making the description overweight for its primary job.

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 6-parameter read tool with no output schema, the description compensates fully by enumerating returned fields per type and describing the counts-only mode. An agent has enough to call it correctly and anticipate the response.

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 coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: it documents the per-type fields, explains the detailed flag's effect, and clarifies that field names align with the create_*/modify_attributes tools, helping an agent correlate attributes with mutations.

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?

States a specific verb (Lists) and resource (Archicad attributes of one type) with their settings, and explicitly distinguishes itself by noting it uses the SAME field names as create_*/modify_attributes. An agent can tell it is a read/inspection tool for attributes rather than a mutator.

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 rather than stated: it notes that omitting type returns counts per type and that detailed:true expands output, which hints at when to use each mode. However, it never explicitly says when to prefer this over siblings like get_attribute_folders or get_attribute_property_values, nor any prerequisites.

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

get_bounding_boxesGet bounding boxesA
Read-onlyIdempotent

Returns axis-aligned bounding boxes of elements in project coordinates (meters): 3D boxes {xMin, yMin, zMin, xMax, yMax, zMax} (z absolute, from project zero) and/or 2D floor-plan boxes {xMin, yMin, xMax, yMax}. Also returns overall, the union of all boxes — handy to frame a view, place new elements next to existing ones, or check overlaps. Output: {elements: [{guid, box3D?, box2D?} | {guid, error}], overall3D?, overall2D?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhich boxes: '3D' (default), '2D' (floor plan) or 'both'
elementsYesElement GUIDs

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior the annotations cannot: unit and coordinate-frame semantics ('meters', 'z absolute, from project zero'), the 'overall' union result, and per-element error objects in the return array.

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?

Front-loads the return contract (what boxes, which coordinate system) before the use cases, and every sentence carries information. It is dense but not padded; a minor trim of the restated box field lists would make it tighter.

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?

There is no output schema, so the description carries the full burden of describing returns — and it does so precisely: per-element shape {guid, box3D?, box2D?}, the error branch {guid, error}, and the overall3D/overall2D unions. Nothing an agent needs to interpret results is missing.

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 coverage is 100% and the enum 'kind' is already documented in schema as '3D (default), 2D (floor plan) or both', which the description essentially repeats. The description clarifies the box coordinate meaning but adds little parameter-level insight beyond the schema, so baseline 3 is appropriate.

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?

States a specific verb+resource ('Returns axis-aligned bounding boxes of elements') and immediately specifies the coordinate system (project coordinates in meters), including the exact box shapes. An agent can tell this apart from full-geometry siblings like get_element_3d_geometry/2d_geometry by the 'bounding box' framing, though no sibling is named explicitly.

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?

Gives concrete when-to-use scenarios — 'frame a view, place new elements next to existing ones, or check overlaps' — which is clear contextual guidance. It stops short of naming alternatives (e.g., use get_element_3d_geometry for full geometry) or stating exclusions, so it does not reach a 5.

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

get_classification_availabilityClassification / property availabilityA
Read-onlyIdempotent

Shows which property definitions are available for classification items (user-defined properties appear on an element only when its classification makes them available), and/or for which classification items given properties are available. Pass items -> {items: [{item, properties: [{guid, group, name, type}]}]}; pass properties -> {properties: [{property, availableForItems: count, items: [{guid, id, path}]}]}. Change availability with modify_property_definitions {addAvailability} (properties family).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoClassification items to inspect
limitNoMax classification items listed per property (default 200)
systemNoSystem for item id lookup (default: all systems)
propertiesNoProperty definitions to inspect

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real domain behavior beyond that: user-defined properties only appear on an element when its classification makes them available, which explains the query's purpose. It doesn't state cost, limits, or pagination semantics beyond the schema's default, keeping it at 4.

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?

Front-loaded with the purpose, then the two input/output contracts, then the mutation alternative. Dense but every clause carries information; the arrow-notation sentences are long but not padded.

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 no output schema, the description correctly supplies the return shapes, and it routes to get_classification_tree, get_property_ids_by_name and modify_property_definitions for adjacent steps. Complete enough to invoke correctly; only the items/properties mutual exclusivity is 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?

Schema coverage is 100%, so the 3-baseline applies, but the description goes further by spelling out the response shape each mode produces ({item, properties:[...]} vs {property, availableForItems, items:[...]}), clarifying how the inputs map to output. It does not clarify whether items and properties can be combined, which is the main remaining ambiguity.

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?

States a specific subject—property-definition availability versus classification items—in both directions, a resource no sibling touches (the nearest siblings are get_property_definitions and get_classification_tree, neither of which reports cross-availability). An agent can distinguish it immediately.

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 tells the agent to pass `items` for one direction and `properties` for the other, and it names the mutation path (modify_property_definitions {addAvailability}) plus the family it belongs to. It stops short of saying when this query is needed or that the two modes are mutually exclusive, so not a full 5.

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

get_classification_item_detailsClassification item detailsA
Read-onlyIdempotent

Returns id, name, description, full path, parent and children of classification items (by GUID, id or path). Output: {items: [{guid, id, name, description, path, system, parent?, children?} | {input, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
systemNoRestrict id lookup to this system (default: search all systems)
includeChildrenNoList the direct children of each item (default true)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive semantics, so the description's job is to add behavior it alone can supply. It does: it discloses the return payload shape and, notably, that individual entries can come back as {input, error}, i.e. partial-failure semantics that the schema and annotations do not express.

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?

Two compact sentences, purpose front-loaded ahead of the output spec. The dense inline output shape is justified because no output schema exists, and nothing extraneous is present.

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 no output schema available, documenting the return object here is the right call, and the description covers identifier forms plus the error variant. Minor gaps remain around what system restricts and includeChildren defaults, but those are in 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 67%, so the schema already documents the GUID/id/path input forms and the system/includeChildren params. The description restates the three identifier forms but adds no format or edge-case detail beyond what the schema provides, which makes a baseline 3 appropriate.

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 specific verb and resource: it returns the id, name, description, path, parent and children of classification items. That is clearly distinguishable from browsing tools like get_classification_tree, though the description never names a sibling to route against explicitly.

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?

The phrase 'by GUID, id or path' implies the caller already holds an identifier, which is a usable consumption signal, but there is no explicit when-to-use vs when-not guidance or named alternative in the description body (the get_classification_tree pointer lives in the schema, not here).

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

get_classification_systemsClassification systemsA
Read-onlyIdempotent

Lists the classification systems of the project (e.g. 'Классификация Archicad', Uniclass, OmniClass) with GUID, name, source, version, date and the number of items. Start here before classifying elements; then browse items with get_classification_tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeItemCountsNoAlso count the items of each system (default true)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. With no output schema, the description usefully discloses the shape of the result (GUID, name, source, version, date, item counts), though it says nothing about pagination, ordering, or empty-project behavior.

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

Conciseness5/5

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

Two tight sentences with zero waste: the purpose and return fields come first, then the workflow routing. Every clause earns its place.

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 simple read-only listing tool with one optional parameter and no output schema, the description supplies the missing return-field information plus the correct next step. An agent has everything needed to call it correctly.

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% and the single boolean includeItemCounts is documented in the schema with its default. The description alludes to 'the number of items' but never references the toggle, so it adds no meaning beyond the schema; baseline 3 applies.

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?

States a specific verb and resource ('Lists the classification systems of the project'), enumerates the returned fields (GUID, name, source, version, date, item count), and names concrete examples. It is clearly distinguishable from the sibling get_classification_tree, which browses items within a system.

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

Usage Guidelines5/5

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

Explicit sequencing guidance: 'Start here before classifying elements; then browse items with get_classification_tree.' It tells the agent both when to use this tool and which alternative to use next, leaving nothing to inference.

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

get_classification_treeClassification treeA
Read-onlyIdempotent

Returns the items of a classification system as a tree ({guid, id, name?, children?}) or, with search / format 'flat', as a flat list with full paths ('Parent > Child') and depth. Item ids are what Archicad shows (localized in Russian Archicad, e.g. 'Стена', 'Перекрытие'). Use root to get one branch and maxDepth to limit large systems (childCount tells what was cut). The item GUIDs/ids are used by set_element_classifications, get_elements_by_classification and get_classification_item_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootNoReturn only the branch below this item
limitNoFlat/search results: max items (default 500)
formatNo'tree' (default) nested children, 'flat' list with paths
searchNoCase-insensitive substring of item id, name or description; returns a flat list of matches
systemNoClassification system name (e.g. 'Классификация Archicad') or GUID; may be omitted when the project has only one system
maxDepthNoLevels to return (1 = top-level items only). Default: all
includeDescriptionsNoInclude item descriptions (default false; can be long)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuinely useful behavior beyond that: localisation of item ids in Russian Archicad, that childCount reports what maxDepth cut, and the exact return shape ({guid, id, name?, children?}). Remaining gaps (pagination/limit behavior) are minor.

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?

Dense but well-organized and front-loaded with the return shape before the modifiers. Three sentences with essentially no filler, though the localization aside is slightly tangential to invocation.

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?

No output schema exists, so the description carries the return-shape burden and does so explicitly ({guid, id, name?, children?} plus flat-path format). Combined with the 100%-covered input schema and annotations, an agent has everything needed to call and interpret this tool.

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 baseline is 3, but the description adds real meaning on top: it explains the interaction of `search`/format 'flat' (flat list with full paths 'Parent > Child'), clarifies `root` returns a single branch, and explains maxDepth's cut behavior via childCount. More than the schema alone conveys.

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?

States a specific verb and resource ('Returns the items of a classification system as a tree'), and immediately differentiates the two output modes (nested tree vs. flat list with paths and depth). It also scopes itself against siblings by noting the ids are consumed by set_element_classifications / get_elements_by_classification rather than being this tool's output.

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?

Gives concrete usage direction: use `root` to get one branch, `maxDepth` to limit large systems, and `search`/format 'flat' for flat output. This is clear context for how to call it, but it never explicitly says when to prefer this over get_classification_systems or get_classification_item_details, so no true alternatives/exclusions framing.

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

get_component_property_valuesGet component property valuesA
Read-onlyIdempotent

Reads property values of element components (building-material parts — see get_element_components): built-in quantities such as Component_Thickness, Component_NetVolume, Component_NetProjectedArea, BuildingMaterial_Name/ID/Manufacturer/Description, or any user-defined property available for components. Lengths m, areas m², volumes m³, angles degrees. Either pass components [{element, component}] or elements (= all their components). Output: {components: [{element, component, values: {property: value}, unavailable?: {property: 'notAvailable'|'notEvaluated'|'userUndefined'|error}} | {element, component, error}], propertyErrors?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsNoRead all components of these elements
componentsNoSpecific components
propertiesYesProperties to read

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent profile, so the description adds value by disclosing unit conventions (m, m², m³, degrees) and, crucially, the partial-failure model with `unavailable` reasons (notAvailable/notEvaluated/userUndefined/error) and `propertyErrors`. It does not mention rate limits or auth, but for a read tool this is strong extra context.

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?

Front-loaded with the purpose, then input modes, then units, then output shape. Dense but every clause carries information; the return-shape enumeration is lengthy but justified since no output schema exists.

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?

With no output schema, the description compensates by spelling out the return structure (values map plus unavailable/error per component). Combined with 100% schema coverage and read-only annotations, an agent has everything needed to call it correctly.

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 baseline is 3. The description adds meaning beyond the schema by clarifying that `elements` means 'all their components', that the two array parameters are alternatives, and by giving concrete property-name examples and lookup guidance.

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?

States a precise verb+resource ('Reads property values of element components') and immediately scopes it against element-level siblings by naming get_element_components and enumerating the built-in component quantities. An agent can distinguish this from get_property_values 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?

Clearly explains the two mutually exclusive input modes (`components` for specific parts vs `elements` for all their components) and routes to get_property_ids_by_name for discovering property names. It does not, however, explicitly say when to prefer this over get_property_values or get_attribute_property_values.

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

get_connected_elementsGet connected elementsA
Read-onlyIdempotent

Elements attached to or hosted by each given element: windows/doors of a wall, skylights of a roof/shell, openings cut into walls/slabs/beams, labels attached to the element; plus the owner/host (wall of a door, roof of a skylight, element of a label, curtain wall of a panel...). Optionally solid element operations (operators cutting this element / targets it cuts) and roof/shell trims. Output: [{guid, type, connectedCount, connected: {Window: [guid...], Door: [...], ...}, owner?, solidOperations?, trims?}]. For zone boundaries and wall joins use get_element_relations; for curtain wall/stair/railing parts use get_subelements.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoConnected element types to look for. Default: Window, Door, Skylight, Opening, Label
elementsYesElement GUIDs
includeOwnerNoReturn the host/owner element. Default true
includeTrimsNoReturn trim relations (elements trimmed to roofs/shells). Default false
includeTypesNoReturn connected elements as {guid, type} instead of plain GUIDs. Default false
includeSolidOperationsNoReturn solid element operation links. Default false

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered and the description isn't needed for that. The description adds real behavioral value by specifying the exact return shape, including the nested connected map keyed by element type and the optional owner/solidOperations/trims fields — valuable since no output schema exists.

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?

Front-loaded with the core purpose, then optional inclusions, then output shape, then sibling routing — a logical order. It is dense and long, but nearly every clause carries distinct information; the parenthetical examples are illustrative rather than 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 read-only query tool with six parameters and no output schema, the description covers purpose, optional flags, the return structure, and the sibling boundary cases. An agent has everything needed to invoke it correctly and interpret the result.

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, but the description adds semantics beyond the schema: it explains what 'trims' means (elements trimmed to roofs/shells) and that solid operations cover both 'operators cutting this element / targets it cuts', clarifying the includeSolidOperations flag. It slightly exceeds the schema-only baseline.

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?

States a specific query verb ('get connected elements') and defines the resource precisely as elements attached to or hosted by each given element, enumerating concrete cases (windows/doors of a wall, skylights of a roof/shell, openings cut into slabs/beams). It explicitly routes related-but-different queries to siblings get_element_relations and get_subelements, so an agent can distinguish it without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit when-not/alternative guidance: 'For zone boundaries and wall joins use get_element_relations; for curtain wall/stair/railing parts use get_subelements.' The optional-inclusion conditions (solid operations, trims) are also stated, so the agent knows when to flip those flags.

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

get_connector_guideConnector usage guideA
Read-onlyIdempotent

Returns the full usage guide for this connector: units, coordinate system, element references, workflows (building a model, documentation, schedules), gotchas (localized library names, top-linked walls, undo), and which tool to use for what. Read it before complex tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description adds real content-level transparency by disclosing what the guide surfaces — units, coordinate system, and concrete gotchas like localized library names, top-linked walls, and undo. It does not describe the return format or size, but the categories of content are clearly disclosed.

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?

Front-loaded with the verb and resource, then a single dense parenthetical enumerating contents and a closing call-to-action. The list is information-rich rather than padding, though the parenthetical is long enough that the sentence gets slightly unwieldy.

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 zero-parameter read tool with no output schema, the description fully specifies what the guide contains and when to invoke it, and annotations carry the safety profile. Nothing an agent needs in order to call and use it correctly is missing.

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 tool takes zero parameters, which is the baseline-4 case per the rubric. There are no parameter semantics to document, and the description correctly implies a no-argument call.

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?

States a specific verb and resource ('Returns the full usage guide for this connector') and immediately enumerates its scope (units, coordinate system, element references, workflows, gotchas). It is trivially distinguishable from every sibling, which are all action tools, since this one is explicitly a meta/reference tool.

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?

Gives a clear usage trigger with 'Read it before complex tasks,' and notes it contains routing information ('which tool to use for what'), which is implicitly a when-to-use guide. It stops short of naming specific alternatives or describing when NOT to read it, so it is strong but not exhaustively prescriptive.

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

get_current_windowGet current windowA
Read-onlyIdempotent

Returns the active Archicad window: {type: FloorPlan | 3DModel | Section | Elevation | InteriorElevation | Detail | Worksheet | Layout | MasterLayout | DocumentFrom3D | ..., database (GUID), name, reference, title, linkedElement, story {index, name, level} (floor plan), drawingScale (N of 1:N), zoom {xMin,yMin,xMax,yMax} (2D, m), projection (3D)}. Call it before capture_view/zoom to know what is shown.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by detailing the shape of the returned window object (type, database, story, zoom, projection), which is especially useful since no output schema exists.

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?

Front-loads the core purpose ('Returns the active Archicad window') before enumerating returned fields, and the usage tip is a tight second sentence. The field list is dense but earns its place given the absence of an output schema.

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?

With no input parameters, no output schema, and full annotation coverage, the description still supplies the return-object structure and a concrete usage condition, which together are everything an agent needs to call it correctly.

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 tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics to clarify, and the description appropriately spends its words on the return payload instead.

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?

States a specific verb and resource ('Returns the active Archicad window') and enumerates the returned fields, making it clearly distinct from siblings like list_views or get_view_settings. An agent can tell this is a state-read of the current viewport rather than a view listing or settings query.

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?

Explicitly routes usage: 'Call it before capture_view/zoom to know what is shown,' naming the alternatives and the condition that selects this tool. It doesn't state when not to use it, but the positive guidance is clear and actionable.

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

get_databasesList databases (plans, sections, layouts ...)A
Read-onlyIdempotent

Lists Archicad databases — the floor plan, sections, elevations, interior elevations, details, worksheets, 3D documents, layouts and master layouts — with databaseRef ("FloorPlan" or a guid), type, name, reference ID, title and the linked marker element. Layouts also get their Layout Book navigatorItemGuid, layoutId, master layout and sheet {width, height, margins} in meters. The databaseRef / navigatorItemGuid values are what place_drawing, get_layout_drawings, update_drawings and the export tools take. includeViews adds, per database, the View Map views that show it (navigatorItemGuid, scale) — the best sources for place_drawing. Also returns the current database/window. Names are localized (Russian Archicad).

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoOnly these database types (default: all)
searchNoOnly databases whose name, reference ID or title contains this text (case-insensitive)
includeViewsNoAdd the View Map views of each database (default false)
navigatorItemsNoAlso resolve these navigator item guids to their database and scale
includeLayoutInfoNoAdd sheet size/margins/numbering of layouts (default true)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavioral detail: the conditional layout payload (Layout Book guid, layoutId, master layout, sheet dimensions in meters), that includeViews augments results per database, and that it also returns the current database/window. The localization caveat is a useful operational note. It stops short of exhaustively describing the result shape, hence not a 5.

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?

Front-loaded with purpose, then the return payload, then the downstream-use routing and the includeViews behavior. The parenthetical type enumerations and 'Russian Archicad' aside are dense but each sentence carries information; slightly verbose but no filler.

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?

No output schema exists, so the description must carry return-value meaning, and it does so well: database fields, layout-specific fields, view augmentation, and the current window. Minor gaps remain (no pagination or result-size guidance, incomplete coverage of search/navigatorItems behavior), but it is largely self-sufficient.

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?

With 100% schema description coverage, the schema already documents types, search, navigatorItems, includeViews and includeLayoutInfo. The description only meaningfully elaborates on includeViews (why its views matter for place_drawing) and layout info; the other parameters get no additional semantics in prose. Baseline 3 is appropriate.

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 states a specific verb ('Lists') and resource ('Archicad databases') and enumerates exactly which artifacts count as databases (floor plan, sections, layouts, master layouts, etc.). It is immediately distinguishable from siblings like get_navigator_tree or list_views.

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 strong downstream context: the returned databaseRef/navigatorItemGuid values are what place_drawing, get_layout_drawings, update_drawings and export tools consume, and includeViews is pitched as 'the best sources for place_drawing'. However, it never states when to prefer this tool over lookalike siblings such as get_navigator_items or list_views, nor any exclusions.

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

get_dimension_anchorsDimension anchor pointsA
Read-onlyIdempotent

Lists the points of elements that dimensions can link to (hotspots: wall ends and corners, column corners, opening points, slab vertices, object hotspots...), with coordinates in m. Use a point's x,y with {element, x, y} in create_dimensions to create an associative point. Pass 'near' to sort by distance (and 'radius' to filter). Only anchors with usableAsPoint = true can be linked. Model elements (walls, columns, slabs, openings...) are read on the Floor Plan (plan coordinates) whatever window is active. Returns {elements: [{guid, type, anchorCount, anchors: [{x, y, z, neig, inIndex, line, special, usableAsPoint, source, distance?}]} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearNoSort anchors by distance to this point
limitNoMax anchors per element (default 100)
radiusNoWith near: only anchors within this distance (m)
elementsYesElement GUIDs

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly/idempotent/non-destructive/openWorld false), and the description adds real behavioral context beyond them: only anchors with usableAsPoint=true can be linked, and model elements are always read in Floor Plan (plan) coordinates regardless of the active window. It also sketches the return shape. Minor gap: no pagination note despite a limit param.

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?

Front-loads the purpose, then layers usage, constraints, coordinate caveat, and return shape. It is long and dense for a single paragraph, but each sentence carries distinct information and nothing is redundant padding.

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 no output schema, the description carries the burden of explaining the return value, which it does (elements with anchors and their fields). Combined with the usage and coordinate notes, an agent has enough to call it correctly; the only omissions are default/paging behavior for the limit param.

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 coverage is 100%, so near, radius, limit, and elements are already documented by the schema. The description restates near/radius ('sort by distance', 'filter') but adds no syntax or nuance beyond the schema, so the baseline 3 applies.

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?

States a specific verb (Lists) and resource (the points of elements that dimensions can link to), then enumerates concrete anchor kinds (wall ends/corners, column corners, opening points, slab vertices). This distinguishes it clearly from siblings like create_dimensions and create_hotspots.

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?

Explicitly tells the agent how to consume the output: pass a point's x,y with {element, x, y} to create_dimensions for an associative point, and offers near/radius for sorting/filtering. It names the sibling tool and the selection condition, though it stops short of stating when not to use it.

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

get_element_2d_geometryGet element 2D geometryA
Read-onlyIdempotent

The 2D drawing primitives Archicad draws for elements in the active window (floor plan, section, layout...): lines, arcs/circles/ellipses, polylines, polygons (with holes; fills), texts and pictures, with pen numbers and a role for special parts (fill, openingDimension, arrow, drawingBorder). Helps to understand what a plan looks like (e.g. a door's swing, an object's symbol). Output per element: {guid, type, total, counts, extent {xMin,yMin,xMax,yMax}, primitives: [{kind, pen, ...}], truncated?, hotspots?}. Coordinates are [x, y] arrays in meters; angles in degrees; arcs in polygons use {index, angle} like polygon inputs. Hatch pattern lines are only counted unless includeFillPatterns=true. Use summaryOnly for large elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNoOnly list these primitive kinds ('arc' includes circles and ellipses)
elementsYesElement GUIDs
maxPointsNoMax coordinates listed per element. Default 20000
summaryOnlyNoOnly counts and extent, no primitive list. Default false
maxPrimitivesNoMax primitives listed per element (all are counted). Default 300
includeHotspotsNoAlso return the element's hotspots (snap points) as [x, y, z] (m; z of 2D hotspots is 0). Default false
includeFillPatternsNoAlso list the individual hatch pattern lines of fills. Default false

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), and the description adds genuinely non-obvious behavior: hatch lines are only counted unless includeFillPatterns=true, listing is truncated ('truncated?'), and counts vs listed primitives can differ. Doesn't cover auth/permissions, hence not a 5.

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?

Front-loaded with purpose before options; every sentence (units, hatch caveat, summaryOnly tip, output shape) carries information. Dense but not padded, though the output-shape sentence is long.

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?

No output schema exists, and the description fully compensates by spelling out the return shape per element (guid, type, counts, extent, primitives, truncated?, hotspots?) plus coordinate/angle conventions. An agent has everything needed to call and interpret it.

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 coverage is 100% so the baseline is 3, but the description adds real meaning beyond the schema: coordinates in meters as [x, y] arrays, angles in degrees, arcs in polygons encoded as {index, angle}, and the includeFillPatterns/summaryOnly consequences. This materially reduces ambiguity for the caller.

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?

States a specific verb+resource ('2D drawing primitives Archicad draws for elements in the active window') and enumerates the primitive kinds returned. It is clearly separable from sibling get_element_3d_geometry and get_morph_geometry by the 2D-window scope.

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?

Offers concrete usage context ('helps to understand what a plan looks like', door swing/object symbol) and an operational tip ('Use summaryOnly for large elements'), but never states when to prefer this over the 3D geometry or detail siblings, nor any exclusions. Usage is implied rather than routed.

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

get_element_3d_geometryGet element 3D geometryA
Read-onlyIdempotent

3D model data of elements as generated by Archicad. mode 'summary' (default): bodyCount, vertexCount, edgeCount, polygonCount, world boundingBox {xMin..zMax} (m, z absolute) and the materials used (surface attribute or GDL material name, polygon count). mode 'mesh': additionally bodies: [{source (element/part GUID), bodyIndex, closed, material, vertices: [[x,y,z], ...], polygons: [{v: [0-based vertex indices of the outer contour], holes?, material?, normal?}]}] within a vertex/polygon budget. Curtain walls, stairs, railings, beams and columns include their parts. 2D elements have no 3D model (error item).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault 'summary'
elementsYesElement GUIDs
maxPolygonsNomesh mode: polygon budget per element. Default 5000
maxVerticesNomesh mode: vertex budget per element; bodies beyond it are summarized only. Default 5000
includeNormalsNomesh mode: add world-space polygon normals. Default false
includeMaterialsNoReport materials with polygon counts. Default true
includeSubelementsNoInclude parts of curtain walls/stairs/railings/beams/columns. Default true

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the description doesn't need to repeat safety. It adds valuable behavioral detail: 2D elements produce an error item, parts are included for certain element types, and geometry is generated by Archicad. This goes beyond annotations, though it doesn't mention rate limits or performance implications of large requests.

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 and front-loaded with the purpose and mode explanation. It is detailed but not excessively verbose, earning its place by explaining modes and behavior. Slightly long but efficient.

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 (7 parameters, nested output structure), the description covers all essential aspects: modes, budgets, included data, edge cases (2D elements), and special element types. No output schema exists, so the description fully documents return values and behaviors, making it complete for an agent to invoke correctly.

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 coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the effect of mode, budgets, and include flags, and by specifying that world boundingBox coordinates are in meters and z is absolute. This clarifies semantics of output fields that aren't in the input schema, adding value.

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?

States a specific verb (Get) and resource (element 3D geometry) and clearly distinguishes from siblings like get_element_2d_geometry and get_morph_geometry. The description further clarifies the two modes, making the tool's scope unambiguous.

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 the two modes (summary vs mesh) and when each is appropriate: summary gives counts and bounding box, mesh gives detailed geometry. However, it does not explicitly compare to other geometry-fetching siblings or state when not to use it, leaving some inference needed.

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

get_element_classificationsGet element classificationsA
Read-onlyIdempotent

Returns how elements are classified in each classification system: {elements: [{guid, classifications: [{system, systemGuid, item: {guid, id, name?, path} | null (= unclassified)}]} | {guid, error}]}. Default: all systems of the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
systemsNoOnly these systems (names or GUIDs). Default: all
elementsYesElement GUIDs

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare this a safe idempotent read (readOnlyHint/idempotentHint true, destructiveHint false), so the safety profile needs no restating. The description adds value by disclosing the per-element error shape and that a null item means unclassified, which the annotations do not convey.

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, followed by a compact inline return shape and the default. The embedded JSON skeleton is dense but earns its place since there is no output schema, and no sentence is wasted.

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 no output schema, the description usefully carries the return contract (per-element classifications, error variant, unclassified null). For a simple two-parameter read tool this is close to complete; only query-time prerequisites are absent.

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%, so the schema already documents both `systems` (names or GUIDs, default all) and `elements` (GUID string or {guid}). The description's 'Default: all systems of the project' merely restates the schema default, adding no new semantics; baseline 3 applies.

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?

States a specific verb ('Returns how elements are classified') and a clearly bounded resource, which is enough to separate it from mutation siblings like set_element_classifications and aggregation siblings like get_elements_by_classification. It does not explicitly name any sibling, so it stops short of a 5.

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

Usage Guidelines2/5

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

The only conditional guidance is 'Default: all systems of the project,' which is a parameter default rather than a usage rule. Nothing tells the agent when this tool is preferable to get_elements_by_classification, get_classification_tree, or get_classification_item_details.

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

get_element_componentsGet element componentsA
Read-onlyIdempotent

Lists the components of elements — the building-material parts that Archicad lists in component schedules (one per skin of a composite, per profile part, per basic structure). By default each component comes with a summary: BuildingMaterial_Name, Component_Thickness (m), Component_NetVolume / Component_GrossVolume (m³), Component_NetProjectedArea / Component_CrossSectionArea (m²). Pass properties to read other values instead, or [] for ids only. Output: {elements: [{guid, components: [{component, values: {name: value}, unavailable?: {name: status}}]} | {guid, error}]}. Use get_component_property_values to read more properties of specific components.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElement GUIDs
propertiesNoProperties to read per component (default: the summary above; [] = component ids only)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the lower bar applies; the description still adds the default field set returned per component, the unit conventions (m, m³, m²), and per-element error objects in the result. It does not mention pagination or limits (the schema's maxItems of 500/50 is left to the schema), so it stops short of full behavioral coverage.

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?

Front-loads the purpose, then defaults, then the alternative tool. The inline output-shape literal is dense but functional. Slightly information-heavy for a two-parameter tool, though every sentence carries real content.

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?

There is no output schema, and the description compensates by spelling out the return structure and the default value set, including per-element error entries. Combined with the routing to the companion tool, an agent has everything needed to call this correctly.

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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it specifies what the default summary returns, that [] yields component ids only, and names concrete property identifiers ('General_ElementID', 'Component_Thickness', 'BuildingMaterial_Name') plus a pointer to get_property_ids_by_name for discovery.

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?

States a specific verb and resource ('Lists the components of elements') and immediately defines what a component is in Archicad terms (composite skins, profile parts, basic structures), which is domain knowledge an agent cannot infer from the name. It also names the sibling it is not (get_component_property_values) for the follow-up case.

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

Usage Guidelines5/5

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

Gives explicit behavioral branches for the optional parameter ('Pass properties to read other values instead, or [] for ids only') and routes the agent to get_component_property_values when more properties of specific components are needed. Nothing about when to choose this tool versus the alternative is left to inference.

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

get_element_countsCount elementsA
Read-onlyIdempotent

Counts elements per type — optionally also per story, per layer and per renovation status — with the same filters as find_elements. Output: {total, byType: {Wall: 12, ...}, byStory?: [{storyIndex, storyName, total, byType}], byLayer?: [{layer, total, byType}] (largest first), byRenovationStatus?}. Good first call to get an overview of a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoOnly these element types. Default: every main type (sub-elements such as curtain wall panels, stair treads or railing posts are only included when listed here or with includeSubelements=true)
layersNoOnly elements on these layers (layer names are localized, e.g. Russian — take them from get_attributes or earlier results)
lockedNotrue = only locked elements, false = only unlocked ones
regionNoSpatial filter on the element's 3D bounding box (2D elements have a flat box at z=0). Give any subset of the limits; e.g. {xMin:0, yMin:0, xMax:10, yMax:8} for a plan rectangle
filtersNoArchicad visibility/editability filters; an element must pass ALL of them
groupByNoExtra breakdowns; per-type counts are always returned
groupedNotrue = only grouped elements, false = only ungrouped ones
storiesNoOnly elements whose home story is one of these
elementIdNoElement ID (the ID shown in the Info Box) wildcard pattern, case-insensitive: '*' = any characters, '?' = one character; without wildcards the ID must match exactly. Examples: 'W-*', '*01', 'D-0??'
groupGuidNoOnly members of this group (nested groups included); groupGuid comes from get_element_details
inHotlinkNotrue = only elements that come from a hotlinked module, false = only own elements
storyIndexNoOnly elements whose HOME story is this one (index or localized name, see get_stories)
hotlinkGuidNoOnly elements belonging to this hotlink instance
libraryPartNoLibrary part name contains this text (case-insensitive). Applies to objects, lamps, windows, doors, skylights and zone stamps; other types are excluded. Names are localized
excludeTypesNoSkip these element types
selectedOnlyNoOnly elements in the current selection
withinElementsNoRestrict the search to these elements (e.g. to refine an earlier result)
renovationStatusNoOnly elements with one of these renovation statuses
includeSubelementsNoAlso list sub-elements (curtain wall/stair/railing parts, beam/column segments) when 'types' is not given, and the hidden GDL part Objects/Lamps owned by curtain walls, railings and stairs (skipped otherwise, counted in stats.ownedPartObjectsSkipped). Default false

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral value: the exact return shape, the optional group breakdowns, and the 'largest first' ordering of byLayer. It stops short of noting limits on cost or result size for a 19-param query.

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

Conciseness5/5

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

Front-loads the core purpose, then the optional dimensions, then the output shape, then the usage hint. Every sentence carries information, and the output sketch earns its space because there is no output schema.

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 no output schema, the description usefully sketches the return object including optional grouped arrays, and defers filter detail to find_elements. It is largely complete, though it doesn't mention cost/performance or result-size caveats for such a broad counting query.

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%, so all 19 parameters are already documented in the schema. The description only adds that filters behave 'the same as find_elements' and which groupBy values produce which output keys; it adds little per-parameter 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?

States a specific verb+resource ('Counts elements per type') with optional breakdowns, and explicitly ties the filter semantics to the sibling find_elements, so an agent can distinguish counting from listing without opening either 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?

Gives clear positive guidance ('Good first call to get an overview of a project') and points at find_elements as the filter reference, but never states when NOT to use it or when a full listing/counting alternative is preferred.

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

get_element_detailsGet element detailsA
Read-onlyIdempotent

Returns everything known about elements: common fields (guid, type, storyIndex, layer, elementId, group/hotlink, renovation status, lock) plus type-specific details (geometry, heights, structure/materials, library part & key params, relations such as the openings of a wall). Works for all element types.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElement GUIDs

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds what data comes back, but says nothing about rate limits, the 1000-element cap, error behavior for invalid GUIDs, or partial-failure semantics — behavioral traits beyond the annotations are thin.

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?

A single front-loaded sentence that opens with the core behavior and then enumerates return categories. The parenthetical field lists are dense but each item is informative, so little is wasted.

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 no output schema, the description carries the return-value burden and does so reasonably by naming common fields and type-specific detail categories. It stops short of covering the 1000-item cap and behavior for missing/invalid GUIDs, but is largely complete for a batch read tool.

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?

There is one parameter with 100% schema description coverage, so the schema already documents the GUID format, array bounds, and the {guid:"..."} alternative. The description does not add syntax or format meaning beyond the schema, so the baseline 3 applies.

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?

It states a specific verb ('Returns') and resource ('elements') and enumerates the categories of data returned (common fields, geometry, materials, relations). However, it does not explicitly differentiate itself from sibling read tools like get_element_3d_geometry, get_element_quantities, or get_element_relations; the breadth is implied rather than contrasted.

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?

'Works for all element types' gives a scope hint about applicability, but there is no explicit when-to-use versus alternatives guidance (e.g., use this for a general dump vs. get_element_quantities for counts). Usage is only implied.

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

get_element_edit_relationsElement edit relationsA
Read-onlyIdempotent

Read-only. For each element returns what affects editing it: type, storyIndex, locked, editable, drawIndex, group membership (groupGuid, rootGroupGuid, groupElements), hotlinkGuid, trimmedBy / trims (trim-to-roof connections with trimType), mergedWith, solidOperators (elements cutting/adding to it) and solidTargets (elements it cuts). Use it to verify group/trim/merge/solid operations or to find out why an edit was refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElement GUIDs

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, and the description reinforces with 'Read-only.' Since there is no output schema, the description carries the full burden of disclosing return shape and does so in detail, including the semantics of solidOperators vs solidTargets. It stops short of describing pagination or error 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?

Front-loaded with the read-only constraint and the core purpose, then a dense enumeration of returned fields. The single long sentence is information-rich rather than padded, though the parenthetical field list is heavy enough that a reader must parse carefully.

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?

With no output schema, the description fully substitutes by enumerating every returned relation field and its meaning, and it supplies the diagnostic rationale for calling the tool. Nothing an agent needs to invoke it correctly is missing.

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% for the single 'elements' parameter, so the schema already documents GUID format and the 1–1000 item bound. The description adds no parameter-level syntax or format detail beyond that, making 3 the correct baseline.

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?

States a specific verb and resource ('returns what affects editing' each element) and enumerates the exact fields returned (type, storyIndex, locked, editable, groupGuid, trimmedBy, mergedWith, solidOperators, solidTargets). This distinguishes it from the many sibling relation/detail tools an agent could otherwise confuse it with.

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?

Explicit when-to-use guidance: 'Use it to verify group/trim/merge/solid operations or to find out why an edit was refused.' It covers the diagnostic use case clearly but does not name alternative siblings (e.g. get_element_relations, get_element_details) to route the agent between them.

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

get_element_quantitiesGet element quantitiesA
Read-onlyIdempotent

Calculated quantities of elements, as Archicad lists them: every field of the element type's quantity record with descriptive names. Units: lengths m, areas m², volumes m³, angles degrees, counts integers. Examples — Wall: volume, grossVolume, surfaceReferenceSide, surfaceOppositeSide, length, area (plan), minHeight/maxHeight, windowsSurface, doorsSurface; Slab: volume, topSurface, bottomSurface, edgeSurface, perimeter, holesSurface; Zone: area, netArea, calculatedArea, volume, perimeter, wallsSurface; Column/Beam: core/veneer volumes & surfaces; Window/Door: surface, width/height per side, sill/head heights; Roof/Shell/Mesh/Morph/Object/CurtainWall/Stair/Railing and their parts are supported too. 'Conditional' values follow the project's calculation rules. Also returns composite skins per building material and per-type totals (sums of additive fields) + building material volume totals. Get GUIDs from find_elements first.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElements to measure (max 500 per call)
includePartsNoAlso return per-part quantities (e.g. each roof plane of a multi-plane roof, each story of a morph). Default false
coverElementsNoElements that cover the measured ones for the exposed-surface calculation
includeTotalsNoAdd 'totals' per element type (count + sums of lengths, areas, volumes, counts) and 'buildingMaterialTotals'. Default true
minOpeningSizeNom²: openings smaller than this do not reduce wall surfaces/volumes (default 0 = every opening reduces them)
includeCompositesNoList skin volumes / projected areas per building material (walls, slabs, roofs, shells...). Default true
includeExposedSurfacesNoAlso compute exposed (uncovered) surface areas per surface material. Default false

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds real context beyond that: unit conventions per quantity type, the caveat that 'Conditional' values follow the project's calculation rules, and the fact that totals and composite skins are included. It omits the 500-element cap and any I/O cost notes, keeping it out of the top band.

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, followed by units and then the examples, so the important information comes first. The element-type example run is long and semicolon-crammed; it earns most of its place by illustrating the return shape but could be trimmed.

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 no output schema, the description correctly carries the burden of describing return content (quantity fields per type, composite skins, per-type totals) and units, and it points to find_elements for input. It is complete enough to call correctly, with only minor gaps like pagination/cap behavior.

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%, and the schema already documents every parameter, its default and its effect, so the baseline is 3. The description's mention of composite skins, per-type totals and exposed surfaces loosely maps to includeComposites/includeTotals/includeExposedSurfaces but adds no parameter detail the schema lacks.

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 first sentence states a specific verb and resource ('Calculated quantities of elements... every field of the element type's quantity record') and the unit/examples make the numeric-measurement scope unmistakable, distinguishing it in practice from get_element_details, get_element_counts and the geometry tools. It stops short of naming a sibling, so it is clear but not explicitly differentiated.

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?

'Get GUIDs from find_elements first' gives a prerequisite and implies the workflow, which is genuinely useful. However there is no explicit guidance on when to prefer this over get_element_details, get_element_counts, or get_property_values, so usage is only implied.

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

get_element_relationsGet element relationsA
Read-onlyIdempotent

Topological relations computed by Archicad. Zone: relatedElementsByType (walls, columns, slabs, doors, windows, curtain walls ... bounding or inside the zone), wallParts/beamParts/curtainWallSegmentParts (boundary pieces: zoneEdgeIndex, tBegin, tEnd), niches (height, polygon). Wall: connectionPolygon (real plan outline after joins) and the walls connected at its begin/end, to its reference line, with their ends, or crossing it. Beam: the same for beams, plus per segment. Window/Door/Skylight/CurtainWallPanel: fromZone/toZone (the zones on both sides). Roof/Shell: zones below. Other types return an error item.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElement GUIDs
includePolygonsNoInclude wall/beam connection polygons and zone niche polygons ({points, arcs?, holes?}, m). Default true

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavior: relations are computed by Archicad per element type, unsupported types produce an error item rather than failing, and the shape of returned pieces varies by type. It stops short of stating whether computation is expensive or how large result sets behave.

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

Conciseness3/5

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

It is front-loaded and every clause concerns real return data, but it is delivered as a single unscannable block that mixes five element types with semicolon-separated fragments. A bullet or line-per-type structure would make it far easier for an agent to match its case without re-reading the whole paragraph.

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 no output schema, the description carries the full burden of explaining return values, and it does so thoroughly per element type (zone, wall, beam, opening, roof/shell). Its gaps are the missing comparison to sibling relation tools and the absence of any note on result size for up to 200 elements.

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 coverage is 100% across both parameters, so the schema already documents 'elements' and 'includePolygons' fully. The description alludes to polygon/niche data in the return but does not add syntax, format, or effect details for either parameter beyond what the schema provides, so the baseline 3 applies.

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 opens with a specific verb+resource ('Topological relations computed by Archicad') and then enumerates precisely what relations are returned for each element type, which is far more than a restatement of the name. It never explicitly contrasts itself with near-siblings like get_connected_elements or get_element_edit_relations, so an agent must infer the boundary from the per-type detail.

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?

There is no explicit when-to-use statement or named alternative; usage is only implied by the per-element-type breakdown. The one boundary it does draw is negative — 'Other types return an error item' — which usefully signals an unsupported-input case but is not routing guidance.

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

get_elements_by_classificationElements by classificationB
Read-onlyIdempotent

Returns the elements classified with an item (GUID, localized id or path), optionally including all sub-items of the branch. Output: {item, total, countsByType, elements: [{guid, type, item?}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesClassification item: GUID, item id as shown in Archicad (localized, e.g. 'Стена', 'Перекрытие', 'Ss_25_10_30'), or path 'Parent > Child'. Browse with get_classification_tree.
systemNoClassification system name (e.g. 'Классификация Archicad') or GUID; may be omitted when the project has only one system
includeTypesNoAdd each element's type and countsByType (default true)
includeSubItemsNoAlso elements classified with any descendant item (default false)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the safe read profile (readOnly, idempotent, non-destructive, closed-world), so the description need not restate it. It does add value by disclosing the return shape inline, but says nothing about pagination, result limits, or behavior for an empty/unmatched classification item.

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?

Two sentences, front-loaded with the core action and scope, followed by a compact inline output shape. No filler, though the item-format enumeration partially duplicates the schema.

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 no output schema, the description compensates by specifying the response fields (item, total, countsByType, elements), and all four parameters are fully described in the schema. An agent has enough to call it correctly; only sibling routing and edge-case behavior are absent.

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%, so the schema already documents item, system, includeTypes and includeSubItems with formats and defaults. The description restates the item formats (GUID, localized id, path) and the branch semantics of sub-items, which is mild reinforcement rather than new meaning — the baseline 3 applies.

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?

States a specific verb and resource: returns the elements classified with a given classification item, with an optional branch recursion. It is clear and unambiguous, but it does not differentiate itself from close siblings such as get_element_classifications (which likely runs the reverse direction) or get_classification_item_details.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no alternative tool is named. The 'Browse with get_classification_tree' pointer exists only inside the schema's item parameter, not in the description, and nothing tells the agent how this differs from get_element_classifications or get_classification_availability.

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

get_element_typesGet element typesA
Read-onlyIdempotent

Returns the type of each element (Wall, Slab, Door, Zone, ...) — e.g. to sort GUIDs returned by other tools. Output: {elements: [{guid, type} | {guid, error}]} in input order ('Unknown' for types the official API does not name, e.g. 2D elements).

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElement GUIDs

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already establish that this is a safe, read-only, idempotent operation. The description adds meaningful behavioral detail beyond those annotations: it specifies the output shape, that results preserve input order, and that unknown or unnamed types are returned as 'Unknown'.

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

Conciseness5/5

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

The description is compact and front-loaded: it states what the tool returns before giving the use case and output contract. Every clause is informative and there is no 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?

With no output schema provided, the description carries the burden of explaining return values, and it does so completely by describing the elements array structure, per-item success/error shape, input ordering, and the 'Unknown' fallback. Combined with annotations and a fully documented input schema, an agent has enough information to invoke and interpret the tool.

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%, so the input schema already fully documents the single elements parameter, including its GUID formats and item shape. The description reinforces that GUIDs are expected but adds no syntax or format details beyond the schema, making the baseline score of 3 appropriate.

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 gives a specific verb and resource: it returns the type of each element for a set of GUIDs, with examples like Wall, Slab, Door, and Zone. It is clearly distinct from sibling tools such as get_supported_element_types, but does not explicitly name an alternative to avoid confusion.

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 provides a clear usage context — e.g. to sort GUIDs returned by other tools — which tells the agent when this tool is appropriate. It stops short of stating when not to use it or naming a specific alternative tool for comparison.

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

get_favoritesGet favoritesA
Read-onlyIdempotent

Lists the favorites (saved tool settings of the Favorites palette). Output: {favorites: [{name, type, variation?, folder: [..], folderPath, settings?, classifications?, categories?, properties?, notes?} | {error}], count, total/offset/hasMore when paginated}. With includeSettings the settings use the same field names as get_tool_defaults and the create_* tools. Favorite names are localized (Russian templates ship Russian names) — always take them from here. Filter by type/search/folder before using includeSettings.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly favorites of this element type
limitNoReturn at most this many results (default 500)
namesNoOnly these exact names
folderNoOnly favorites in this folder (or its subfolders)
offsetNoSkip this many results
searchNoCase-insensitive substring of the favorite name
variationNoTool variation, only for tools that share an element type (e.g. 'GridElement' vs 'Object' for Object elements). Normally omit it; get_tool_defaults without a type lists the toolbox tools with their variations
includeSettingsNoAlso return each favorite's settings, classifications, categories and properties (default false; slower)
includeGdlParametersNoWith includeSettings: include the GDL parameter values of library-part based favorites (default true)

TDQS

A4.6/5.0
Behavior5/5

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

With no output schema present, the description carries the return-shape burden and does so: it enumerates the favorite object fields, notes per-item error entries, and lists count/total/offset/hasMore pagination fields. It also flags the localization trap, the default limit of 500, and that includeSettings is slower — context beyond the read-only/idempotent annotations.

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?

Front-loads purpose, then output contract, then the localization caveat and the includeSettings sequencing tip. Dense and information-rich, though the mid-sentence output enumeration is long enough that it takes a careful read.

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 9-parameter, no-required-param list tool with no output schema, the description supplies the return contract, the pagination fields, the localization constraint on names, and the key includeSettings interaction. Nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description adds cross-tool meaning: with includeSettings the settings 'use the same field names as get_tool_defaults and the create_* tools,' which is not derivable from the schema. It also implies the type/search/folder filters should be applied before includeSettings for efficiency.

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?

States a specific verb and resource ('Lists the favorites') and immediately defines what a favorite is ('saved tool settings of the Favorites palette'), which distinguishes it from siblings like get_tool_defaults and create_favorite. An agent can tell it apart from get_tool_defaults without opening either 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?

Gives actionable context: 'Favorite names are localized — always take them from here' and 'Filter by type/search/folder before using includeSettings' (a performance-driven sequencing rule). It also points to get_tool_defaults for variations. It lacks explicit when-not-to-use guidance versus alternatives such as export_favorites or apply_favorite.

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

get_gdl_parametersGet GDL parameters of elementsA
Read-onlyIdempotent

Returns the GDL parameters of placed library-part based elements (objects, lamps, doors, windows, skylights, zones, symbol labels, ...): per element {guid, type, libraryPart, parameters: [{name, type, description, value, valueDescription?, hidden?, disabled?, arrayDims?, valueList?}]}. Lengths in m, angles in degrees. Filter with names (exact) or search (substring of name or localized description). includeValueLists adds allowed values/ranges and 'locked' state from the parameter script. Hidden parameters are skipped unless includeHidden or named explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesNoOnly these parameters (exact variable names, case-insensitive)
searchNoOnly parameters whose name or description contains this text (case-insensitive)
elementsYesElement GUIDs
includeHiddenNoInclude hidden parameters (default false)
includeValueListsNoAdd value lists / ranges / locked flags (default false; slower)

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already declare the safe read-only, idempotent profile, but the description adds substantial behavioral context: the exact return shape per element, unit conventions (m and degrees), the performance tradeoff of includeValueLists ('slower'), and the rule that hidden parameters are skipped unless includeHidden or named explicitly. This goes well beyond what annotations provide.

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?

Front-loads the return structure before covering units, filtering, and hidden behavior; the sentences are dense but each contributes unique information. Slightly compact but no wasted words.

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?

With no output schema, the description carries the full burden of explaining return values and it does so completely: it specifies the per-element object shape, the parameters array fields, unit conventions, and the special behavior of hidden parameters and value lists. Nothing an agent needs to call the tool correctly is missing.

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 coverage is 100% so the baseline is 3, but the description adds meaningful semantics: names filters by exact variable name (case-insensitive), search matches substrings of name or localized description, includeValueLists adds allowed values/ranges and locked flags from the parameter script, and hidden parameters are skipped unless includeHidden or named explicitly. This meaningfully supplements the schema.

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?

States a specific verb 'Returns' and a precise resource 'GDL parameters of placed library-part based elements', clearly distinguishing it from the sibling set_gdl_parameters. However, it does not explicitly differentiate from other getters like get_element_details or get_library_part_details, so it falls short of full sibling differentiation.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives such as get_element_details or set_gdl_parameters. It describes filtering options but never states the context or conditions under which an agent should choose this tool over its siblings.

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

get_geo_locationGet project locationA
Read-onlyIdempotent

Returns the project location: latitude/longitude (degrees), altitude (m), northDirection (degrees, CCW from the +X axis; 90 = north points to +Y/up on the plan), timeZoneMinutes, summerTime, dateTime and sun {azimuth, altitude} used for sun studies, surveyPoint {position (project coordinates, m), visible, locked, projectOriginInSurveyCoordinates}, geoReference (IFC CRS / map conversion: eastings, northings, orthogonalHeight...) and editable.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description's real contribution is the return payload structure and units (degrees, meters, IFC CRS), which is genuinely useful but is more output content than additional behavioral trait disclosure.

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 a single long run-on enumeration, which is less scannable than a bulleted list would be, but every token encodes return-field meaning and there is no filler. The purpose is front-loaded before the field enumeration.

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?

With no output schema, the description carries the full burden of describing return values, and it does so comprehensively: coordinates, units, north-direction convention, sun data, surveyPoint sub-fields, geoReference, and the editable flag are all enumerated. An agent can consume the result without guesswork.

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?

There are zero input parameters, so the baseline is 4. The description correctly focuses on the return payload rather than inventing parameter semantics. Nothing is missing on the input side.

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 opens with a specific verb+resource ("Returns the project location") and enumerates the exact data returned, so an agent knows precisely what it produces. It clearly contrasts in intent with the sibling set_geo_location (read vs write), though it doesn't name that sibling explicitly.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The read-only getter nature implies it's for inspection, and the sibling set_geo_location is the obvious mutating counterpart, but the description never states the routing condition or any prerequisite. Usage is left entirely to inference.

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

get_host_openingsOpenings of host elementsA
Read-onlyIdempotent

Lists the windows, doors, skylights and Opening-tool openings placed in the given host elements (walls, roofs, shells, slabs, beams, ...). details=false (default) returns GUIDs only; details=true returns the full element details of every opening (position, size, library part...).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostsYesHost element GUIDs (walls, roofs, shells, slabs, beams, columns ...)
detailsNoInclude full element details of each opening (default false)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the meaningful behavioral distinction that the response payload changes shape based on details (GUIDs only vs full element details), which is not captured by annotations.

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

Conciseness5/5

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

Two sentences, zero filler, with the scope statement front-loaded and the default-vs-full payload distinction placed second where it matters most for invocation decisions.

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?

There is no output schema, so the description carries the burden of describing returns and it does so (GUIDs vs full details). Combined with 100% schema coverage on the two parameters and full annotation coverage, this is nearly complete; only the absence of sibling routing and host-GUID provenance keeps it from a 5.

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; the description goes further by specifying the concrete effect of details=true (position, size, library part), giving the agent a clearer sense of payload cost/size than the schema's generic 'Include full element details'. It does not add format detail for the hosts array, which the schema already documents.

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?

States a specific verb (Lists) and a precise resource set (windows, doors, skylights, Opening-tool openings) scoped to given host elements, with examples of host types. An agent can distinguish it from get_element_details or get_subelements 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 Guidelines3/5

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

The description implies usage (retrieve openings for known host GUIDs) and explains the details toggle, but never states when to prefer this over sibling tools such as get_subelements or get_element_details, nor any prerequisite for obtaining host GUIDs. Usage is inferable but not explicit.

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

get_ifc_dataGet IFC dataA
Read-onlyIdempotent

Returns IFC data of elements: ifcGlobalId (22-char IFC GUID used on export), archicadIfcId, externalIfcGlobalId (elements imported from IFC), ifcType (e.g. IfcWall) and typeObjectIfcType, IFC properties grouped by property set ({propertySet, name, type Single|List|Bounded|Enumerated|Table, value/values/lower/upper/options, valueType, readOnly?}), IFC attributes (Name, Description, ObjectType, Tag, ...) and IFC classification references. Can also FIND elements by IFC GlobalId (ifcGlobalIds). Returns {elements: [{guid, ...} | {guid, error}], lookup?: [{ifcGlobalId, elements}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoParts to return (default all)
elementsNo
storedOnlyNotrue = only data stored on the element; false (default) = also properties/attributes the IFC translator would export
ifcGlobalIdsNoFind elements by IFC GlobalId (22 characters) and include them
propertySetsNoOnly IFC properties of these property sets, e.g. ['Pset_WallCommon']

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds real behavioral context beyond them: the per-element error envelope ({guid, error}) and the fact that the tool can act as a GlobalId finder, returning a lookup array. It does not discuss performance or pagination limits, keeping it below 5.

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?

Front-loads the payload contents, then the finder capability, then the return envelope. Dense but every clause carries information; the return-shape sentence is arguably long given no output schema, but it earns its place. Minor verbosity in enumerating property/attribute variants.

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 5-parameter, no-output-schema tool, the description compensates by spelling out both the data fields and the response envelope ({elements, lookup}), including the per-element error case. Combined with annotations covering the safety profile, an agent has what it needs to call it correctly.

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 coverage is 80% (baseline 3), and the description adds meaning on top: the returned categories map directly to the include enum, ifcGlobalIds is described as a find-and-include mode, and property set filtering is hinted at through the property-set grouping. It does not spell out storedOnly semantics beyond what the schema says.

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?

States a specific verb and resource (get IFC data of elements) and enumerates exactly which data is returned — identity GUIDs, ifcType, IFC properties grouped by property set, attributes, classification references. It also flags the dual mode (retrieve by element vs find by ifcGlobalId), which separates it from siblings like get_element_details or set_ifc_properties.

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?

The description implies the retrieval context and mentions a second lookup mode via ifcGlobalIds, but never states when to prefer this over get_element_details, get_component_property_values, or set_ifc_properties, and gives no exclusions or prerequisites. Usage is inferable but not explicit.

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

get_ifc_translatorsIFC export translatorsA
Read-onlyIdempotent

Lists the IFC export translators of the project (localized names; the first one is Archicad's default). Use a name in export_ifc.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: names are localized and the first entry is Archicad's default, which is ordering semantics an agent could not get 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.

Conciseness5/5

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

Two short clauses, front-loaded with the verb and scope; the parenthetical detail about localization and default ordering earns its place and nothing is wasted.

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?

No output schema, so the description carries the burden of saying what comes back, and it does (localized translator names, first is default). It could note that the list may be empty or that names must be passed verbatim, but it is adequate for a trivial read tool.

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?

Zero parameters, so the baseline is 4. The description uses its limited space to explain how the returned names feed into export_ifc rather than inventing parameter detail that doesn't exist.

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?

States a specific verb (Lists) and resource (IFC export translators of the project), and is clearly distinguishable from siblings like get_ifc_data and export_ifc. The parenthetical narrows the return content further.

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?

Explicitly routes the agent onward: 'Use a name in export_ifc,' which is the only real downstream consumer. It doesn't state when-not to call it, but for a zero-parameter enumeration that's a minor omission.

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

get_issue_commentsGet issue commentsA
Read-onlyIdempotent

Returns the comments of issues, oldest first. Output: {issues: [{guid, name, comments: [{guid, author, text, status: Error|Warning|Info|Unknown, created (ISO 8601 UTC)}]}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuesNoIssues to read (GUIDs or exact names); default: all issues

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral detail beyond annotations by disclosing the exact output structure and the ordering guarantee ('oldest first'), though it omits pagination, limits, and error behavior.

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

Conciseness5/5

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

Front-loads the verb and resource, then compactly specifies the output shape in one additional clause. Every part earns its place with no boilerplate.

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 no output schema, the description helpfully compensates by describing the return structure and ordering. Combined with full schema coverage and clear annotations, it is almost complete, though it omits the 1000-issue limit and default-all-issues behavior present only in 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%, so the input schema already documents the 'issues' parameter in full, including GUID/name fallback and the default of all issues. The description adds no parameter meaning beyond what the schema provides.

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?

States a specific verb and resource ('Returns the comments of issues') plus a useful ordering detail ('oldest first'). However, it does not explicitly differentiate itself from sibling tools such as get_issues or add_issue_comment, leaving sibling disambiguation to inference.

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

Usage Guidelines2/5

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

The description gives no when-to-use conditions, no exclusions, and no references to alternatives. An agent must infer usage entirely from the tool name and purpose statement.

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

get_issue_elementsGet issue elementsA
Read-onlyIdempotent

Returns the elements attached to issues, by attachment type. Output: {issues: [{guid, name, tagTextElement?, elements: {creation|highlight|deletion|modification: [{guid, type} | {guid, missing: true}]}}]}. Pass the GUIDs to get_element_details, select_elements or zoom tools to inspect them.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoOnly these attachment types (default: all four)
issuesNoIssues to read (GUIDs or exact names); default: all issues

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds genuine behavioral detail beyond that: it enumerates the return shape and, importantly, shows that unresolved elements come back as `{guid, missing: true}` rather than being omitted — a trait an agent could not infer from the annotations. It stops short of noting pagination or the 1000-issue cap 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?

Purpose is front-loaded in the first clause, followed by output shape and routing. Very little waste, though the dense inline output grammar in the middle sentence sacrifices some readability for compression — justified since no output schema exists.

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 no output schema, the description correctly compensates by specifying the return structure, and both parameters are fully documented in the schema. Remaining gaps are minor: nothing about permission requirements, the 1000-issue limit, or how nonexistent issue names are handled.

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%, so the baseline is 3. The phrase "by attachment type" loosely mirrors the `types` parameter and its default, but the schema's enum descriptions already explain Highlight/Creation/Deletion/Modification far more fully, so the description adds no real semantic value on parameters.

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?

States a specific verb ("Returns") and resource ("elements attached to issues") with a scoping qualifier ("by attachment type") that separates it from get_issues (issue metadata) and attach/detach_elements_to_issue (mutations). An agent can identify the read-only, per-issue element lookup 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?

The final sentence routes the agent forward ("Pass the GUIDs to get_element_details, select_elements or zoom tools"), which is useful chaining advice, but it never states when to choose this tool over siblings like get_issues or get_element_details, nor any exclusions or prerequisites. Usage is implied by the purpose rather than articulated.

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

get_issuesGet issuesA
Read-onlyIdempotent

Lists the issues of the Issue Manager (Archicad markup entries = BCF topics). Output: {issues: [{guid, name, parentGuid?, parentName?, childIssues?, created, modified (ISO 8601 UTC), tagText, tagTextVisible, tagTextElement?, commentCount, comments?, attachedElementCounts: {creation, highlight, deletion, modification}, attachedElements?: {creation: [guid], ...}}], count, elementAttachment? ('highlighted'|'corrected' when filtered by element), total/offset/hasMore when paginated}. Issue GUIDs from here are accepted by every other issue tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn at most this many results (default 500)
issuesNoOnly these issues (GUIDs or exact names); default: all issues
offsetNoSkip this many results
searchNoCase-insensitive substring of the issue name or tag text
elementNoOnly the issues this element is attached to
includeCommentsNoInclude the full comment list of each issue (default false; commentCount is always returned)
includeElementsNoInclude the attached element GUIDs by attachment type (default false; counts are always returned)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral context beyond that: commentCount and attachment counts are always returned regardless of the includeComments/includeElements flags, and elementAttachment is only populated when filtering by element.

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 purpose is front-loaded in the first clause, followed by the alternative-naming parenthetical and then the return shape. The output blob is dense and run-on, but with no output schema in the tool definition it is doing necessary work rather than padding.

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?

With no output schema, the description must carry the return contract, and it does so thoroughly: field list, ISO 8601 UTC timestamps, conditional comments/attachedElements, pagination fields, and the elementAttachment enum values. Nothing an agent needs to interpret results is missing.

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%, so all seven parameters are already documented (limit default 500, GUID-vs-name lookup, search semantics, offset, include flags). The description adds no parameter-level detail beyond echoing the optional element filter, so the baseline 3 applies.

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?

States a specific verb and resource ('Lists the issues of the Issue Manager') and disambiguates the domain term by equating issues with 'Archicad markup entries = BCF topics', which separates it from siblings like get_issue_comments and get_issue_elements. An agent knows immediately this is the enumeration entry point.

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 closing line 'Issue GUIDs from here are accepted by every other issue tool' establishes this as the discovery step for the issue family, and the parameter list implies filtering modes. However, it never explicitly says when to prefer this over get_issue_comments or get_issue_elements for retrieving the same data.

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

get_layout_drawingsDrawings placed on layoutsA
Read-onlyIdempotent

Lists the drawings placed on layouts: guid, name, number, source view (navigatorItemGuid, name, type, link type, viewDeleted), status (UpToDate | Modified), position and bounds in PAPER meters, anchor, angle, ratio, viewScale and effective scale (denominator, e.g. 100), crop frame polygon, title, border, pen table / color mode, update mode. Default: every layout. Use it before modify_drawings / update_drawings, and to check what a layout contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutsNoOnly these layouts (default: all layouts)
includeFrameNoInclude the crop/bounding polygon of each drawing (default true)
includeLinkInfoNoInclude name/number and source link details (default true)
includeMasterLayoutsNoWith no 'layouts': also scan master layouts (default false)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds substantive behavior the schema cannot: the default scope (all layouts), unit semantics (PAPER meters), the status enum (UpToDate | Modified), and scale-denominator meaning, which materially help interpret results.

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?

Front-loaded with the core action, then a dense field inventory followed by purpose/sequencing. The field list is long but earns its place since there is no output schema. No wasted prose, though the enumeration is heavy for a single sentence.

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 no output schema, the description compensates by enumerating the return fields, and it supplies default scope and sequencing guidance. Adequate for correct invocation; only missing a note on result size/pagination or performance for large projects.

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%, so all four parameters including the three 'include*' flags and their defaults are already documented in the schema. The description only echoes the 'default: every layout' behavior for the layouts param, adding little beyond structured data. Baseline 3 applies.

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?

States a specific verb+resource ('Lists the drawings placed on layouts') and immediately enumerates the returned data, so an agent knows exactly what this retrieves. It is clearly distinguishable from the sibling mutation tools place_drawing/modify_drawings/delete_drawings/update_drawings.

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?

Explicitly routes usage: 'Use it before modify_drawings / update_drawings, and to check what a layout contains', plus the default scope 'every layout'. It gives clear positive context and a sequencing rule, though it does not state any when-not-to-use condition or contrast with other read tools like get_layout_settings.

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

get_layout_settingsGet layout settingsA
Read-onlyIdempotent

Returns the settings of layouts or master layouts: paper size (horizontalSize x verticalSize, MILLIMETERS) and margins (mm) — both defined by the master layout —, custom numbering (customLayoutNumbering, customLayoutNumber), doNotIncludeInNumbering, displayMasterLayoutBelow (meaningful on master layouts; always false on layouts), and the read-only page count (layoutPageNumber, actPageIndex) and revision state. Layouts by id or name. Output: {layouts: [{layout, name?, settings} | {layout, error}]}. Change them with set_layout_settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds real context beyond that: which values are derived from the master layout, that displayMasterLayoutBelow is always false on layouts, that page count/revision are read-only, and per-item error surfacing.

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?

Front-loaded with the verb and resource, then a dense but useful enumeration of fields and the output shape. The long mid-sentence field list is heavy but nearly every clause (units, master-layout derivation, read-only markers) carries information.

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?

No output schema exists, yet the description supplies the return shape including the per-layout error variant, plus field units and semantics. An agent can parse results and construct the call without opening anything else.

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?

Only one parameter, and the description adds just 'Layouts by id or name', which largely restates the detailed item schema description (GUID from get_navigator_tree, or name / 'ID name'). With the schema carrying the accepted identifier formats, the description's contribution here is minimal.

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?

States a specific verb+resource ('Returns the settings of layouts or master layouts') and enumerates the exact settings returned, so an agent knows precisely what data it gets. It is clearly distinguishable from its write sibling set_layout_settings, which is named.

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?

Provides input guidance ('Layouts by id or name') and names the complementary action ('Change them with set_layout_settings'), which routes the agent correctly for mutation vs read. It stops short of explicit when-not conditions, but the read/write split is unambiguous.

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

get_librariesLoaded librariesA
Read-onlyIdempotent

Lists the libraries loaded in the project (Library Manager): name, path, type (Local, Embedded, BuiltIn, Server, Url ...), available, readOnly, plus the total number of library parts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so safety is covered. The description goes beyond them by disclosing the actual payload shape (name, path, type, available, readOnly, total part count), which matters because no output schema exists. It omits pagination/ordering behavior, keeping it short of a 5.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, with the returned fields folded into the same sentence. No filler or repetition of the title.

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 zero-parameter read tool with no output schema, the description covers the essential return fields, including the type vocabulary and total part count. It stops short of describing ordering, filtering absence, or how 'available' is determined, but nothing critical to invoking it is missing.

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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the enumeration of return fields is a bonus rather than a parameter clarification.

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?

States a specific verb and resource (lists libraries loaded in the project), scopes it to the Library Manager, and enumerates the returned fields. An agent can distinguish it from siblings like get_databases or search_library_parts without opening any 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 resource ('loaded libraries') but there is no explicit when-to-use, no prerequisites, and no routing to related siblings (add_libraries, remove_libraries, reload_libraries, search_library_parts). Adequate but leaves selection to inference.

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

get_library_part_detailsLibrary part detailsA
Read-onlyIdempotent

Everything about library parts before placing them: identity (name, guid, index, type, file), file location and containing library, subtype/ancestry, creator tool, sections, comment/keywords, default sizes (sizeA, sizeB, height) and the DEFAULT GDL parameters [{name, type, description, value, valueDescription?, hidden?, arrayDims?, valueList?}] — the parameter names are what create_objects params and set_gdl_parameters expect. includeValueLists adds the allowed values/ranges from the parameter script (slower: use with parameterNames).

ParametersJSON Schema
NameRequiredDescriptionDefault
libraryPartsYesLibrary parts (name, index or {guid})
includeHiddenNoAlso include hidden parameters (default false)
parameterNamesNoOnly these parameters (exact names, case-insensitive)
includeParametersNoInclude the default GDL parameters (default true)
includeValueListsNoAdd allowed values / ranges of each returned parameter (default false)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the lower bar applies. The description adds a genuine behavioral trait not in the schema: includeValueLists is slower and should be combined with parameterNames. That performance guidance is real value beyond the annotations.

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 dense but front-loaded with the core purpose and the enumeration of returned fields. The inline object shape and the final performance aside both earn their place. Slightly long, but no fluff sentences.

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?

There is no output schema, so the description carries the burden of explaining return values, and it does so thoroughly — enumerating the full field set and the structure of GDL parameter objects. Combined with the parameter notes, an agent has everything needed to call and interpret the tool.

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 coverage is 100%, so the baseline is 3. The description goes beyond by explaining the semantics of includeValueLists (adds allowed values/ranges from the parameter script, slower, pair with parameterNames) and by detailing the shape of the returned parameter objects, which adds meaning the schema alone does not carry.

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 names a specific verb (get/report) and resource (library part details) and enumerates exactly what is returned: identity, file location, subtype/ancestry, sections, default sizes, and the default GDL parameters. It clearly distinguishes itself from siblings like search_library_parts, get_library_part_scripts, and get_gdl_parameters by scoping to full part metadata.

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 states the temporal context ('before placing them') and explains that the returned parameter names are what create_objects and set_gdl_parameters expect, which helps route the agent. It stops short of explicit when-not-to-use guidance or naming alternatives for narrow lookups, so a 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.

get_library_part_scriptsLibrary part GDL scriptsA
Read-onlyIdempotent

Returns the GDL source of a library part: masterScript, script2D, script3D, parameterScript, interfaceScript, propertiesScript (default), and on request forwardMigrationScript, backwardMigrationScript, comment, keywords. Great for learning how a standard part works or as a starting point for create_library_part. Encrypted parts return errors. Long scripts are cut at maxLength characters.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptsNoWhich scripts (default: the 6 main scripts)
maxLengthNoMax characters per script (default 60000)
libraryPartYesLibrary part name (localized! use search_library_parts), index, or {guid: '{MAIN}-{REV}'}

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish the safe read-only profile, so the description adds meaningful behavioral context beyond them: encrypted parts return errors, long scripts are truncated at maxLength, and the default versus optional script sets are specified. It does not cover authentication, rate limits, or pagination, but those are less relevant for a read-only getter.

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

Conciseness5/5

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

The purpose is front-loaded, and every sentence contributes: script enumeration, use cases, error condition, and truncation behavior. There is no filler or repetition, and the density is appropriate for a three-parameter tool with no output schema.

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?

With no output schema, the description carries the burden of explaining return values and does so by listing the exact scripts returned. It also covers error and truncation behavior, and annotations cover safety, leaving no significant gap for correct invocation.

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 coverage is 100%, so the baseline is 3. The description adds value by naming exactly which six scripts are the default set and by clarifying the truncation effect of maxLength ('Long scripts are cut at maxLength characters'), which goes slightly beyond the schema's own parameter descriptions.

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?

Starts with a precise verb+resource: 'Returns the GDL source of a library part', and enumerates the exact script artifacts returned. This clearly separates it from metadata-oriented siblings like get_library_part_details and makes the output content unambiguous.

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?

Provides two concrete usage scenarios: learning how a standard part works, and serving as a starting point for create_library_part. It also warns that encrypted parts return errors, which implicitly scopes when the tool won't work, but it does not explicitly contrast itself with get_library_part_details or search_library_parts.

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

get_library_part_subtypesLibrary part subtypes (categories)A
Read-onlyIdempotent

Lists the library part subtype tree (categories such as Model Element > Building Element > Furnishing > Chair — names localized) with each subtype's path, parent, type and number of placeable parts directly under it. Use it to browse the library by category, then search_library_parts {subtypeOf: {guid}} to list the parts of a category, or pass a subtype to create_library_part.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly subtypes of these library part types
limitNoMaximum results (default 300)
queryNoCase-insensitive substring of the subtype name or its path
offsetNoSkip this many results

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, so the bar is lower. The description adds useful context beyond annotations: the shape of the returned data (path/parent/type/count per node) and the notable fact that names are localized, which affects how an agent should interpret output.

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?

Two front-loaded sentences; the core purpose leads and the routing guidance follows. It is dense and every clause contributes, though the parenthetical hierarchy example slightly lengthens the first sentence.

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 no output schema, the description must convey the return shape, and it does so (path, parent, type, count). It works well for a browse tool; pagination behavior (limit/offset defaults) is left to the schema, which is a minor gap.

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%, so the schema already documents all four params (type, limit, query, offset). The description references the subtype guid linkage to other tools but adds no syntax or format detail for the input parameters themselves, matching the baseline when the schema does the heavy lifting.

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?

States a specific verb and resource ('Lists the library part subtype tree') and clarifies it's a category hierarchy with a concrete example (Model Element > Building Element > Furnishing > Chair). It also enumerates the returned fields (path, parent, type, part count), clearly distinguishing it from search_library_parts and create_library_part.

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

Usage Guidelines5/5

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

Explicitly tells the agent when to use it ('browse the library by category') and names two alternatives with their exact invocation patterns (search_library_parts {subtypeOf:{guid}}, create_library_part). The browse→search workflow is spelled out, leaving nothing to inference.

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

get_morph_geometryGet morph geometryA
Read-onlyIdempotent

Returns the editable geometry of morphs: {elements: [{guid, bodyType, vertexCount, faceCount, vertices: [{x,y,z}], faces: [{vertices: [i,...], holes?: [{vertices}], surface?, hidden?}]}]} — the same format as the 'mesh' input of create_morphs / modify_morphs, with the morph transformation applied (x/y project coordinates, z relative to the home story). Per-item errors for non-morphs.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesMorph GUIDs
maxVerticesNoRefuse bodies with more vertices than this (default 20000)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real value beyond them: it discloses the coordinate transformation semantics (x/y project coordinates, z relative to home story) and the per-item error behavior for non-morph inputs, which an agent cannot infer 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?

One dense sentence, but front-loaded with the purpose before the inline format sketch and the transform/error notes. The embedded JSON shape is verbose yet exactly the information an agent needs, so the length is largely earned.

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 no output schema, the description carries the return-value burden and does so well, spelling out the element/vertex/face structure plus coordinate and error semantics. It leaves minor gaps (pagination or batching behavior across the 100-item cap, exact error payload shape) but is otherwise sufficient.

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%, so the schema already documents both the element GUID formats and the maxVertices truncation threshold. The description adds interpretation context for the returned vertices but nothing new about the parameters themselves, making 3 the correct baseline.

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?

States a specific verb and resource ('Returns the editable geometry of morphs') and immediately anchors it against siblings by noting it is the same format as the 'mesh' input of create_morphs/modify_morphs, which distinguishes it from get_element_3d_geometry and get_element_2d_geometry.

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 round-trip framing ('same format as the mesh input of create_morphs / modify_morphs') tells an agent exactly when this is useful, and the note about per-item errors for non-morphs sets expectations for bad input. It stops short of explicitly contrasting with the other geometry getters.

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

get_navigator_itemsNavigator item detailsA
Read-onlyIdempotent

Returns details of navigator items by id: type, name, prefix (ID), location (tree + path + parentId + sourceId), and type-specific data — stories: storyIndex and elevation (m); built-in folders: contents; layouts and master layouts: layoutSettings (paper size in mm, margins, numbering). Type-specific data of viewpoints is only available for Project Map items (a View Map item's sourceId is its viewpoint). Output: {items: [{id, type, ...} | {id, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesNavigator item ids
locateNoFind each item in the Project Map / View Map / Layout Book trees to add tree, path, name, parentId, sourceId (default true)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the bar is lower, and the description still adds real context: per-item partial failure results ('{id, error}'), the batch ceiling implied by maxItems, and the important caveat that viewpoint data is only present for Project Map items (a View Map item carries the viewpoint as its sourceId). It stops short of describing pagination or how many items the locate traversal costs.

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?

Front-loaded with the core purpose and then packed with type-specific specifics; the em-dash clauses are dense but each earns its place by pre-empting a follow-up question. The single long sentence/semi-colon run-on is harder to scan than a short bulleted structure would be, but nothing is wasted.

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?

No output schema exists, so the description carries the full burden of describing returns — and it does, specifying the exact response envelope, the per-item error alternative, and the type-specific payloads for stories, folders, layouts, and viewpoints. Combined with 100% schema coverage, an agent has everything needed to invoke and interpret the call.

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%, so the baseline is 3: both 'ids' and 'locate' are already documented, and locate's default and effect are spelled out in the schema itself. The description reinforces what the located fields are (tree, path, parentId, sourceId), but adds no parameter behavior beyond what the schema already states.

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 gives a specific verb and resource ('Returns details of navigator items by id') and then enumerates exactly what 'details' means — type, name, prefix/id, location fields, and per-type payloads. It never explicitly routes the agent away from the sibling get_navigator_tree (the id source is only mentioned in the schema), so it is clear but not sibling-aware within the description body.

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 rather than stated: an agent infers that this is the follow-up to get_navigator_tree for fetching per-item data, but the description never says when to prefer it over list_views, get_view_settings, or get_navigator_tree, nor when to set locate=false. No explicit alternatives or exclusions are offered.

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

get_navigator_treeNavigator treeA
Read-onlyIdempotent

Returns a Navigator tree: Project Map (viewpoints: stories, sections, elevations, interior elevations, worksheets, details, 3D documents, 3D views, schedules, project indexes, lists), View Map (saved views, each with sourceId = its Project Map viewpoint), Layout Book (subsets, layouts with their drawings, master layouts) or a publisher set. Nodes: {id, type, prefix?, name, sourceId?, children?}. With types / nameFilter or format 'flat' you get a flat list {id, type, prefix, name, path, depth, parentId, sourceId, childCount}. The ids are used by get_navigator_items, rename/move/delete_navigator_items, clone_project_map_item_to_view_map, create_layout, get/set_layout_settings and the view/documentation tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootNoOnly the subtree below this item id
treeNoWhich tree (default 'ProjectMap')
limitNoFlat list: maximum items (default 2000)
typesNoOnly items of these types (flat list), e.g. ['LayoutItem'] or ['StoryItem','SectionItem']
formatNo'tree' (default) or 'flat'
maxDepthNoLevels below the root to return (0 = root only). Default: all
nameFilterNoCase-insensitive substring of prefix/ID or name (flat list)
publisherSetNoPublisher set name for tree 'PublisherSet' (see get_publisher_sets)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent and non-destructive behavior, and the description adds useful context beyond them: the default tree is ProjectMap, default format is 'tree', regex/id conventions and the flat-list field set. It doesn't mention size/pagination caveats beyond the limit parameter or performance considerations, so it is good but not exhaustive.

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?

Front-loaded with the core outcome and structured as tree contents, node shape, flat shape, then id consumers. Efficient overall, though the long inline enumeration of viewpoints and node fields makes it denser than strictly necessary.

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?

With no output schema, the description carries the full burden of describing return values and does so precisely — both the tree node shape and the flat-list field set are specified, along with defaults and the id contract used by sibling tools. Nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description goes further by explaining the semantic effect of the parameters — that types/nameFilter or format 'flat' yield a flat {id, type, prefix, name, path, depth, parentId, sourceId, childCount} list versus the nested node shape, and that sourceId links views to their Project Map viewpoint.

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 opens with a specific verb+resource ('Returns a Navigator tree') and then enumerates exactly what each tree variant contains (Project Map, View Map, Layout Book, publisher set). An agent can distinguish this from siblings like get_navigator_items without opening any 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 clearly signals the tool's role as the id source for downstream tools (get_navigator_items, rename/move/delete_navigator_items, clone_project_map_item_to_view_map, create_layout, layout settings), and explains how types/nameFilter/format switch the output shape. It never states explicit when-not conditions or a direct 'call this before X' instruction, so it stops short of full routing guidance.

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

get_preferencesGet Project PreferencesA
Read-onlyIdempotent

Reads Project Preferences: workingUnits, dimensions (display formats per dimension type), calculationUnits, calculationRules, referenceLevels, legacy, zones, imagingAndCalculation, floorPlanCutPlane, layouts, dataSafety (temporary folder) and environment switches (autoIntersect, autoGroup, suspendGroups, autoTextEnabled, exportTolerance). Units shown here only affect display; the connector always uses meters/degrees. Field names are the ones set_preferences accepts.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionsNoSections to read (default: all)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: 'Units shown here only affect display; the connector always uses meters/degrees,' which prevents a real class of mistakes. It does not cover return format or error behavior, but with annotations carrying the safety burden this is strong.

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?

Front-loaded with the verb and purpose, then the section inventory. The catalog of sections is long but every entry adds domain value. One parenthetical nesting ('dataSafety (temporary folder)') is slightly dense but readable.

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 no output schema, the description compensates by enumerating the returned sections and their meaning, and by clarifying unit semantics. It leaves minor gaps (return shape, whether sections filter output) but is substantively complete for a single-parameter read tool.

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 coverage is 100% and the single 'sections' parameter is fully documented, so the baseline is 3. The description restates the section names (matching the enum) and notes the field names align with set_preferences, adding marginal context but no new syntax or defaults 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?

States a specific verb ('Reads') plus resource ('Project Preferences') and enumerates exactly what is returned (workingUnits, dimensions, calculationUnits, etc.), including a parenthetical clarifying each. This distinguishes it clearly from siblings like get_project_info or get_view_settings.

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?

The line 'Field names are the ones set_preferences accepts' implicitly points to the write counterpart, hinting at the read/write relationship. However, there is no explicit 'use this when…' guidance, no exclusion of alternatives, and no prerequisites stated. Usage is only implied.

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

get_profile_previewProfile preview imageA
Read-onlyIdempotent

Renders preview images (PNG) of Profile attributes (complex profiles used by walls, beams, columns, handrails...) so you can see their cross-section shape, plus each profile's name, usage and nominal size. Profiles by exact localized name or GUID (see get_attributes {type: 'Profile'} or get_attribute_folders {attributeType: 'Profile'}).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoImage width in pixels (default 400)
heightNoImage height in pixels (default 400)
profilesYesProfile attributes
backgroundNoBackground color '#RRGGBB' or {red, green, blue} 0..1 (default white)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, non-open-world, so safety needs no restating. The description adds valuable behavior beyond that: the output is a PNG image plus per-profile name, usage and nominal size metadata. It doesn't mention limits such as the max of 8 profiles or how multiple profiles are returned, which keeps it from a 5.

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?

Two dense sentences, front-loaded with the core action and output, followed by the lookup guidance. The parenthetical list of example profile-using elements is slightly extraneous but brief, so it remains efficient overall.

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?

There is no output schema, so the description carries some burden and does describe the return (PNG plus name/usage/nominal size). Combined with 100% schema coverage on inputs and rich annotations, this is largely complete, with only minor gaps around multi-profile return behavior and error cases.

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. The description adds genuine meaning by stressing that profiles are matched by exact localized name or GUID and pointing to the lookup tools, which disambiguates the flexible name/index/GUID input forms better than the schema alone. Width/height/background are left to 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?

States a specific verb (renders preview images in PNG) and resource (Profile attributes), and clarifies what a Profile is (complex cross-sections used by walls, beams, columns, handrails). It also names the accompanying metadata returned (name, usage, nominal size). An agent can distinguish this from sibling tools like create_profiles or modify_attributes 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?

The description gives clear usage context — use it to see a profile's cross-section shape — and routes the agent to the right discovery tools (get_attributes with type:'Profile', get_attribute_folders with attributeType:'Profile'). It does not state any explicit 'when not to use this' condition or an alternative preview tool, so it falls short of the top bar.

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

get_project_infoProject infoA
Read-onlyIdempotent

Returns facts about the open project and Archicad: projectName, untitled (never saved), file {path, fileName, folder, fileType (SoloProject/Archive/Template...), exists, writable}, teamwork + teamworkInfo, current window/database (type, name) and current story (index, name, level), application {mainVersion, buildNumber, language, jsonApiPort...}, special folders (temporary, templates, userDocuments, application, projectTemporary...). Pass includeTemplates: true to also list installed .tpl templates (for new_project). Call this before save/open/new/close operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeTemplatesNoAlso scan the templates/defaults folders and return 'templates': [.tpl paths] (slower)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds real context beyond that: the flagged cost of includeTemplates ('slower') and the scope of data returned. It does not cover error behavior or behavior when no project is open, hence not a 5.

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, followed by a dense but useful field inventory, then two actionable sentences on the optional parameter and call ordering. The field enumeration is long and slightly list-like, but every entry helps the agent know what it will receive in the absence of an output schema.

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 no output schema and a single well-documented parameter, the description compensates by enumerating the returned fields (file, teamwork, application, folders, story, window/database), which is exactly what an agent needs. It omits failure modes (e.g., no open project) but is otherwise sufficient for a read-only info tool.

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% and the schema already documents includeTemplates including its cost ('slower'), so the baseline is 3. The description only adds 'for new_project' as the motivation, which is a marginal gain over the schema's own text.

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?

States a specific verb and resource ('Returns facts about the open project and Archicad') and enumerates the returned categories (file, teamwork, application, folders, story). This is far more concrete than a tautology. However, it never differentiates itself from the similarly named sibling get_project_info_fields, which an agent could plausibly confuse with this tool.

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?

Gives an explicit operational directive: 'Call this before save/open/new/close operations,' tying the tool's usage to concrete siblings. It also explains the non-default includeTemplates path is 'for new_project.' No explicit when-not-to-use or exclusion is stated, so it stops short of a 5.

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

get_project_info_fieldsGet Project Info fieldsA
Read-onlyIdempotent

Lists the Project Info fields (File > Info > Project Info), i.e. the project autotexts used in title blocks and layouts: [{name (localized UI label, e.g. Russian), key (database key such as 'PROJECTNAME', 'CLIENT', 'autotext-' for custom fields), value, category}]. Categories: Fixed = built-in project fields, Custom = user-added fields, Other = values computed by Archicad (dates, layout/drawing data; usually not settable). Use the key with set_project_info_fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoCase-insensitive substring matched against name, key and value
categoryNoFilter by category (default All)
nonEmptyOnlyNoOnly fields with a non-empty value

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real value beyond them: it explains that 'Other' category values are computed by Archicad and 'usually not settable', which is genuine behavioral context an agent cannot infer from annotations.

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?

One dense paragraph, front-loaded with the identity of the tool, followed by return shape, category meanings, and the handoff to set_project_info_fields. Every clause earns its place, though the inline return-shape notation is slightly heavy for a single sentence.

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?

There is no output schema, so describing the returned object fields (name, key, value, category) and the key conventions is exactly the missing piece, and it is supplied. Combined with filter behavior context, an agent has everything needed to call and consume the result.

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 coverage is 100% with per-parameter descriptions, so the baseline is 3. The description goes further by expanding the 'category' enum semantics (Fixed = built-in, Custom = user-added, Other = computed) and by documenting the returned key formats, adding 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?

States a specific verb (Lists) and resource (Project Info fields) and disambiguates by naming the UI location (File > Info > Project Info) and describing what the entries are (project autotexts used in title blocks). It also distinguishes the read path from the write path by naming set_project_info_fields.

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?

Tells the agent what to do with the result: 'Use the key with set_project_info_fields.' That gives a clear follow-on action, but it does not explicitly say when to prefer this over the sibling get_project_info, so it stops short of full when/when-not guidance.

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

get_property_definitionsGet property definitionsA
Read-onlyIdempotent

Lists property definitions — built-in (ID, areas, volumes, heights, ...) and user-defined (custom) — so you can address them in get_property_values / set_property_values. Summary per definition: {guid, name, group, type (string|integer|number|length|area|volume|angle|boolean|List|singleEnum|multiEnum), kind (Custom|BuiltIn|DynamicBuiltIn), editable, description?, expressionBased?, enumValues? (options of option sets), availabilityCount? (custom), builtInName? (language-independent name of built-ins, e.g. General_ElementID)}. detail 'full' adds groupGuid, collectionType/valueType/measureType, defaultValue or defaultExpressions, enumOptions with keys, expressionReference (for expressions) and availability (classification items). Names are LOCALIZED (Russian Archicad: Russian group and property names) — use search with a Russian word, or builtInName for built-ins. Filter with search / groups / kind, or with elements / elementTypes to get only what is available for them. Returns {definitions, total, offset, returned, hasMore, groups?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoAll (default), Custom (user-defined) or BuiltIn
limitNoReturn at most this many (default 500)
detailNosummary (default) or full
groupsNoOnly definitions in these groups
offsetNoSkip this many definitions
searchNoCase-insensitive substring of 'Group/Name' or the description, e.g. 'огнест' or 'Площадь'
elementsNoOnly definitions available for these elements (see elementMatch)
propertiesNoOnly these definitions (resolve references to full details)
elementMatchNoWith elements/elementTypes: available for all of them (default) or any
elementTypesNoOnly definitions available for the tool defaults of these element types
includeGroupsNoAlso return all property groups {guid, name, kind, description?, definitionCount}
includeAvailabilityNoResolve availability to classification items {guid, id, name?, system} (default: true with detail full)
includeBuiltInNamesNoAdd builtInName to built-in definitions (default true; 2 extra official API calls, cached)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, but the description adds non-obvious behavior: names are LOCALIZED (with a Russian Archicad example), built-in names are language-independent, includeBuiltInNames costs 2 extra API calls and is cached, and includeAvailability defaults shift with detail=full. This is genuine behavioral context beyond the structured fields and beyond the annotations.

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 dense for a 13-param tool but front-loaded with purpose and then organized into purpose, output summary shape, detail semantics, localization warning, filtering, and return envelope. Nearly every clause carries information; a couple of the field enumerations (e.g. type list) could be trimmed since the schema already enumerates them.

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?

With no output schema and 13 optional params, the description compensates well: it enumerates the returned fields per definition, the full-mode additions, and the pagination envelope ({definitions, total, offset, returned, hasMore, groups?}), and it covers the localization trap that would otherwise cause wrong lookups.

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 coverage is 100%, so the baseline is 3, but the description earns more: it explains that detail 'full' adds groupGuid, expressionReference, defaultValue/defaultExpressions, enumOptions with keys, and availability, and it clarifies what builtInName/availabilityCount mean. This adds real meaning over the schema's own parameter docs.

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?

Opens with a specific verb+resource ('Lists property definitions') and immediately scopes it to built-in vs user-defined, then states its downstream purpose (addressing them in get_property_values / set_property_values). This clearly distinguishes it from create_property_definitions, modify_property_definitions, and get_property_ids_by_name.

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?

Explains the resolution workflow (use this to find names, then pass them to get/set_property_values) and names the filter inputs (search / groups / kind / elements / elementTypes) with a localization caveat and example. It does not explicitly contrast with near-siblings like get_property_ids_by_name, so it stops short of full when-not-to-use guidance.

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

get_property_ids_by_nameFind property definitionsA
Read-onlyIdempotent

Resolves property names to GUIDs and definitions, or searches the property catalog. Built-in properties have stable non-localized names (e.g. 'General_ElementID', 'General_Width', 'Zone_CalculatedArea', 'Component_Thickness'); user-defined ones are 'Group/Name' with localized names (e.g. 'ИНФОРМАЦИЯ О ПРОДУКТЕ/Модель'). Pass properties to resolve specific names, or browse with search (case-insensitive substring of built-in name, group or name, any language), group, propertyType and/or elements (only the properties those elements have — e.g. which user-defined properties their classification makes available). Returns [{guid, builtInName?, kind: 'BuiltIn'|'UserDefined', group, name, type, editable, description?, enumValues?, defaultValue?}]. The GUIDs work in every tool taking property references. Works without the Claude Connector add-on.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoOnly properties of this (localized) group, e.g. 'ИНФОРМАЦИЯ О ПРОДУКТЕ' or 'Компоненты'
limitNoReturn at most this many results (default 500)
offsetNoSkip this many results
searchNoSubstring to search in built-in names, group names and property names (e.g. 'Area', 'Площадь', 'Thickness')
elementsNoBrowse only properties available for these elements (see elementMatch)
propertiesNoNames/GUIDs to resolve (output in input order, with {input, error} for misses)
elementMatchNoWith elements: 'any' (default) = available for at least one of them, 'all' = available for every one of them
propertyTypeNoBrowse only built-in or only user-defined properties
includeDetailsNoInclude description, enum values and default value (default: true for `properties`, false for browsing)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial extra context: exact return shape, output ordering with {input, error} for misses, the fact GUIDs are usable in every property-referencing tool, and that it works without the Connector add-on.

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?

Dense but front-loaded, with the resolve-vs-browse decision stated before the naming details and return shape. Long, though every clause (naming conventions, return fields, connector note) carries information.

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?

Despite no output schema, the description documents the return array structure and error entries, and covers naming, mode selection, and scope. Nothing essential for correct invocation is missing.

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 coverage is 100% (baseline 3), but the description genuinely adds semantics: built-in vs localized 'Group/Name' naming, case-insensitive multi-language substring behavior for `search`, and the 'only the properties those elements have' meaning of `elements`. This exceeds what the schema alone conveys.

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?

States a specific verb (resolves/searches) and resource (property names to GUIDs/definitions), and distinguishes itself from sibling property tools like get_property_definitions by framing itself as the name-resolution/catalog-search entry point.

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?

Explicitly splits usage into two modes: 'Pass `properties` to resolve specific names, or browse with `search`...'. The schema even routes users back to this tool to find names. It lacks an explicit contrast with the sibling get_property_definitions, which keeps it from a 5.

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

get_property_valuesGet property valuesA
Read-onlyIdempotent

Reads property values (built-in and user-defined) of many elements — and/or of element TOOL DEFAULTS — as one table: {properties: [{guid, name, group, type}], results: [{guid | elementType, values: [cell per property, same order]} | {guid, error}]}. Each cell is {value, display?, isDefault?} (display = Archicad's formatted text incl. units, only when it differs from value; isDefault only for user-defined properties: true = the element has no own value and shows the default/expression) or {status: 'NotAvailable' (property not available for this element/classification) | 'NotEvaluated' | 'Undefined' (value set to Undefined) | 'Empty'}. Units: lengths m, areas m², volumes m³, angles DEGREES; option sets by display value. Without properties: every property available for the targets (scope UserDefined by default; BuiltIn/All can be hundreds). Address built-ins language-independently with {builtIn: 'General_ElementID'} etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoUsed only without properties: which properties to return (default UserDefined)
elementsNoElements to read
propertiesNoProperties to read (columns). Omit = all available (see scope)
includeDisplayNoAdd Archicad's formatted display text (default true)
elementDefaultsNoRead the tool default settings of these element types

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, but the description adds substantial behavioral detail: the exact result table shape, per-cell value/display/isDefault semantics, status states like NotAvailable and Undefined, unit conventions, and default behavior when properties are omitted. This is rich transparency beyond the structured annotations.

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

Conciseness5/5

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

The description is dense but front-loaded, beginning with the core read operation and then compactly covering output shape, cell semantics, units, and parameter omission behavior. Every clause carries information needed to interpret or invoke the tool correctly, with no 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?

There is no output schema, but the description fully compensates by defining the returned table, row shapes, cell value formats, statuses, and unit conventions. Combined with annotations covering safety and schema coverage at 100%, an agent has enough context to call and interpret this tool correctly.

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 coverage is 100%, so the schema already defines each parameter well. The description still adds cross-parameter meaning: scope is used only when properties are omitted, omitting properties returns all available properties, built-in properties should be addressed language-independently, and display text is only added when it differs from the raw value.

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?

States a specific verb and resource: reads property values of many elements and/or element tool defaults as one table. It also distinguishes built-in vs user-defined properties and scopes the operation clearly enough that an agent can separate it from get_property_definitions and set_property_values.

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?

Provides clear invocation context: omit properties to get all available properties, scope defaults to UserDefined, BuiltIn/All can be large, and names get_property_definitions as the way to find property names. It does not explicitly contrast this tool with sibling readers such as get_attribute_property_values or get_component_property_values, so it falls short of full when/when-not guidance.

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

get_publisher_setsPublisher setsA
Read-onlyIdempotent

Lists the publisher sets of the project (Navigator > Publisher). With name, also returns that set's items as a flat list {id, type, name, path, sourceId} (sourceId = the View Map view or layout that is published). Publish with the documentation tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPublisher set name to expand (exact, case-insensitive or unique substring)
limitNoWith name: maximum items (default 1000)
maxDepthNoWith name: levels to list (default: all)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds real value beyond that by disclosing the return shape when `name` is supplied, including the meaning of sourceId as the published View Map view or layout.

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

Conciseness5/5

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

Three tight sentences, zero filler, with the primary behavior front-loaded and the conditional behavior and routing note following in priority order.

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 no output schema, the description usefully documents the item shape returned in name mode. The list-only mode's return fields are left unspecified, a minor gap for a read tool with fully covered parameters and safety annotations.

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 coverage is 100%, so all three parameters are already documented in the schema, setting the baseline at 3. The description reinforces that `name` switches the tool into item-expansion mode, but adds no syntax or semantics beyond what the schema's parameter descriptions already state.

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?

States a specific verb ('Lists') and resource ('publisher sets of the project'), anchoring it to the UI location (Navigator > Publisher). It also distinguishes the two modes of operation (list-only vs. expanded with `name`), which no sibling does.

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?

Explains the conditional usage pattern clearly: pass `name` to also get the set's items, omit it to just list sets. The closing sentence points toward the publishing path ('Publish with the documentation tools'), implicitly routing to publish_publisher_set, though it does not name the sibling explicitly.

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

get_revision_changesGet revision changesA
Read-onlyIdempotent

Read-only Change Manager data (changes tracked for revisions, shown by change markers). Give ONE mode (default: every change of the project): documentRevision (changes in one layout revision, GUID from get_revisions), layouts / allLayouts (current revision changes of layouts), elements (changes an element belongs to) or changeIds. Output: {changes: [{id, description, lastModified, modifiedBy, issued, archived, customFields, firstIssue?}], count} | {documentRevision, changes} | {layouts: [{layout: {databaseGuid, id, name}, changes | error}]} | {elements: [{guid, changeIds, changes} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutsNoLayouts: layout database GUID (get_revisions layout.databaseGuid), layout ID, name, or 'ID name'
elementsNoElements whose changes to return
changeIdsNoChange IDs to look up
allLayoutsNoCurrent revision changes of every layout
documentRevisionNoDocument revision GUID (documentRevisions[].guid of get_revisions)
includeFirstIssueNoAlso return the first revision issue each change was issued in (default false)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description adds domain context (what changes represent, that they surface via change markers) and enumerates the return shapes. It doesn't discuss auth needs or volume/rate limits, so not a 5.

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?

Front-loaded with the purpose and the mode-selection rule, then the output contract. Dense with symbols and the long output enumeration costs some readability, but nearly every clause carries distinct information.

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 6-param, multi-mode tool with no output schema, the description covers mode selection, default behavior, and all four response shapes. Nothing essential for correct invocation is missing.

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 coverage is 100%, so baseline is 3, but the description adds meaning by mapping parameters to modes and disclosing the default behavior (no params = every project change) and that exactly one mode should be supplied. It largely mirrors the schema's per-field descriptions beyond that.

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?

States a specific verb+resource ('Read-only Change Manager data') and immediately clarifies the domain ('changes tracked for revisions, shown by change markers'). The enumerated modes make it distinguishable from the sibling get_revisions, which it references for GUID sourcing.

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?

Explicitly instructs 'Give ONE mode' and labels the default ('every change of the project'), then lists each mode and its trigger. It clearly discriminates mode usage, though it doesn't state when to prefer this tool over the sibling get_revisions beyond sourcing GUIDs.

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

get_revisionsGet revisionsA
Read-onlyIdempotent

Read-only document revision data (Document > Issue Manager for revisions: revision issues and the layout revisions they contain). Output: {issues?: [{guid, id, description, issued, issueTime, issuedBy, overrideRevisionId, createNewRevision, visibleMarkersInIssues, customFields: {name: value}, documentRevisionCount}], documentRevisions?: [{guid, id, finalId, status: Actual|Issued, owner?, issue?: {guid, id}, layout: {id, name, databaseGuid, masterLayout, width, height, drawingScales, subsetId, subsetName, teamworkOwner?, customFields}}]}. Revision issues are NOT Issue Manager markup issues (get_issues).

ParametersJSON Schema
NameRequiredDescriptionDefault
issueNoOnly the document revisions of this revision issue (its GUID or ID, from issues[])
includeNoWhat to return (default both)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description nonetheless adds meaningful behavior by disclosing the full output shape and the semantic distinction from Issue Manager markup issues, which annotations cannot convey.

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?

Front-loads the key framing ('Read-only document revision data') before the dense output shape. The output block is verbose but earns its place because there is no output schema to carry that information; only minor tightening would help.

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 no output schema, the description takes on the return-value burden and does so thoroughly, listing both issues[] and documentRevisions[] with their fields. Combined with the get_issues disambiguation, an agent has enough to call and interpret the tool, though the optional-field semantics (owner?, issue?) could be clearer.

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 coverage is 100%, so the schema already documents both parameters and their constraints. The description adds marginal value by showing that issues[] carries guid/id that the 'issue' parameter references, but this is largely a restatement of the schema's own reference to issues[].

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?

States a specific verb+resource ('Read-only document revision data') and immediately scopes what a revision contains (revision issues and the layout revisions they contain). It explicitly distinguishes itself from the similarly-named sibling get_issues ('Revision issues are NOT Issue Manager markup issues'), so an agent can route correctly 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?

Gives clear context for what the tool returns and explicitly warns it is not get_issues, which is the most likely confusion. It does not, however, give explicit when-to-use conditions or contrast with other revision-adjacent siblings such as get_revision_changes, so guidance is clear but not exhaustive.

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

get_selectionGet selectionA
Read-onlyIdempotent

Returns what is currently selected in Archicad: {selectionType: None|Elements|MarqueePolygon|MarqueeBox|MarqueeRotatedBox, total, editableCount, elements: [{guid, type, storyIndex, layer, elementId, partial?}], marquee?: {box, polygon, boxRotationAngle, multiStory}}. Use it when the user refers to 'the selected elements' or 'this'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn at most this many. Default 1000
offsetNoSkip this many selected elements. Default 0
onlyEditableNoOnly editable selected elements. Default false
includePartialNoInclude partially selected elements (e.g. with the marquee). Default false
marqueeRelationNoWhen a marquee is active: which elements count as selected relative to it. Default InsidePartially
includeElementIdNoInclude Element IDs. Default true

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds substantial value by fully specifying the return object structure (selectionType, total, editableCount, elements, marquee), which is critical since there is no output schema. It doesn't mention rate limits or permissions, but those are not relevant for a safe read operation.

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 front-loaded with the return shape and follows with usage guidance. It is dense but every part earns its place given the lack of an output schema. The single long sentence is slightly heavy but not wasteful.

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 no output schema, the description compensates by detailing the return structure. Annotations handle the safety profile, and the schema fully documents parameters. The only minor gap is that pagination behavior (limit/offset defaults) is only in the schema, not the description, but that is acceptable given the schema coverage.

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%, so all six parameters (limit, offset, onlyEditable, includePartial, marqueeRelation, includeElementId) are fully documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, making 3 the correct baseline.

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 specific verb and resource ('Returns what is currently selected in Archicad') and details the exact return shape. It does not explicitly differentiate from siblings like find_elements or set_selection, so it falls short of a 5 despite being very clear.

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 provides explicit when-to-use guidance: 'Use it when the user refers to "the selected elements" or "this".' However, it gives no when-not-to-use conditions or named alternatives, which would be needed for a 5.

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

get_storiesGet storiesA
Read-onlyIdempotent

Lists all stories (floors) of the project, bottom to top: {stories: [{index, displayNumber, name, level (m above Project Zero), height (m to the next story; may be missing for the top story), floorId (stable id), showOnSections, isCurrent, reservedByOtherUser (Teamwork, only when true)}], firstIndex, lastIndex, currentIndex, count, skipNullFloor, ghostStory}. Call this first for any story-related work: element tools place elements by storyIndex (elevations are relative to the home story), and story names are localized. displayNumber is the number shown in the Navigator: when skipNullFloor is true (e.g. the Russian template) index 0 is shown as '1.', so 'the 3rd floor' is displayNumber 3 = index 2 — always pass the index (or name) to other tools. Indexes change when stories are inserted/deleted; floorId does not. Use atLevels to convert absolute elevations to {storyIndex, offsetFromStory}, and includeElementCounts to see what is on each story.

ParametersJSON Schema
NameRequiredDescriptionDefault
atLevelsNoAbsolute elevations (m above Project Zero) to look up: returns levelLookup [{level, storyIndex, storyName, storyLevel, offsetFromStory}]
includeElementCountsNoAlso return elementCount and elementsByType ({Wall: 12, ...}) per story, counted by home story (slower on big projects)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, closed-world), and the description goes well beyond them: indexes are volatile while floorId is stable, height may be absent on the top story, reservedByOtherUser appears only under Teamwork and only when true, and ghostStory/skipNullFloor behavior is spelled out.

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?

Front-loaded and every clause carries information an agent needs, but it is one very dense run-on paragraph with the return fields crammed inline; a short bulleted split between purpose, return shape, and caveats would read better without losing content.

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?

There is no output schema, so the description carries the full burden of documenting the response fields and does so thoroughly, including the displayNumber-vs-index trap and the Russian-template example. Nothing an agent needs to call this correctly is missing.

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 coverage is already 100%, so the baseline would be 3; the description adds real value by stating that atLevels converts absolute elevations to {storyIndex, offsetFromStory} and that includeElementCounts counts by home story and is slower on big projects. It stops short of any format/syntax detail 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?

Opens with a specific verb + resource + ordering ("Lists all stories (floors) of the project, bottom to top") and immediately enumerates the returned shape, which cleanly separates it from the sibling mutation tools create_stories/modify_stories/delete_stories/set_current_story.

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

Usage Guidelines5/5

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

"Call this first for any story-related work" makes the ordering against siblings explicit, and it explains why: element tools place by storyIndex, story names are localized, and indexes shift on insert/delete. It also tells the agent which optional params to reach for (atLevels, includeElementCounts) and their purpose.

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

get_subelementsGet sub-elementsA
Read-onlyIdempotent

Parts of hierarchical elements, grouped by type: CurtainWall → CurtainWallSegment/Frame/Panel/Junction/Accessory (frames and panels with className, begin/end or centroid, hidden/degenerate flags); Stair → Riser/Tread/StairStructure (sequenceNumber, landing flag); Railing → RailingSegment/Node/Post/InnerPost/Toprail/Handrail/Rail/Panel/BalusterSet/Baluster/Pattern and rail ends/connections; Beam → BeamSegment; Column → ColumnSegment. Passing a sub-element GUID returns its owner. The part GUIDs work with get_element_details, get_element_quantities and get_element_3d_geometry.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoOnly these sub-element types
elementsYesElement GUIDs
maxPerTypeNoList at most this many parts per type (counts are always complete). Default 500
includeDetailsNoInclude the type-specific fields of each part. Default true

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description adds genuinely non-obvious behavior: passing a sub-element GUID returns its owner (bidirectional lookup) and the returned part GUIDs are valid inputs to three other tools. It does not discuss error behavior or empty results, but the cross-tool contract is valuable context beyond the annotations.

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?

Front-loaded with the core purpose, then the type taxonomy, then the cross-tool contract. It is dense and enumeration-heavy, but nearly every clause carries information an agent needs; the per-part field notes (className, begin/end, hidden flags) are the only slightly padded portion.

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 no output schema, the description carries the burden of describing returns and does so by naming the type-specific fields each part carries. The `elements` cap of 100 and default of 500 parts per type are documented in the schema, so nothing critical is missing, though ordering and empty-result behavior 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?

Schema coverage is 100%, so 3 is the baseline, but the description adds real meaning for the `types` parameter by mapping the enum values into their parent hierarchies (CurtainWall → Segment/Frame/Panel/Junction/Accessory, Stair → Riser/Tread/StairStructure, etc.), which helps an agent pick valid values rather than treating them as a flat list.

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?

States a precise verb+resource ('get sub-elements') and enumerates the exact hierarchical element families and their part types, which immediately distinguishes it from siblings like get_element_details or get_element_components. An agent can tell what this returns 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?

The description implies usage by explaining that part GUIDs feed get_element_details, get_element_quantities and get_element_3d_geometry, and that a sub-element GUID returns its owner. However, it never states when to choose this tool over the similar get_element_components or get_element_details, nor any exclusions or prerequisites.

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

get_supported_element_typesSupported element typesA
Read-onlyIdempotent

Lists every Archicad element type and whether this connector can create it, read its details, and modify it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description usefully discloses the shape of the result (a per-type capability matrix) but says nothing about size, ordering, or whether the list is static — acceptable given the annotation coverage, but not rich.

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

Conciseness5/5

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

A single front-loaded sentence with the verb first and the three capability dimensions enumerated compactly. No filler, no repetition of the title.

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 zero-parameter, read-only lookup with no output schema, the description tells the agent both what is listed and what each entry conveys, which is sufficient to call it correctly. Only minor gaps (result size/ordering) remain.

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 tool takes zero parameters and additionalProperties is false, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-argument tool.

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?

States a specific verb ('Lists') and resource ('every Archicad element type') plus the payload ('whether this connector can create it, read its details, and modify it'). It is distinguishable from model-query siblings like get_element_types or list_elements because it describes connector capability rather than project contents, though it never names those siblings to make the distinction explicit.

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 only implied: an agent can infer it should call this before attempting creation/modification to learn which element types are supported. There is no explicit when-to-use, no exclusions, and no mention of the near-neighbor tools (get_element_types, list_elements) that could be confused with it.

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

get_teamwork_statusTeamwork statusA
Read-onlyIdempotent

Teamwork (BIMcloud/BIMserver) status of the open project — call this before reserve_elements / release_elements / teamwork_send / teamwork_receive. Solo project: {isTeamwork: false, message, project: {name, path, untitled}} — then nothing needs to be reserved and the teamwork tools do nothing. Teamwork project: {isTeamwork: true, project, teamwork: {hasConnection, online, serverUrl, teamProjectName, loginName, teamProjectLocation}, currentUser: {userId, name}, members?: [{userId, loginName, fullName, connected}], hotlinkCacheManagementReservedBy?, warning? (server offline), elements?: [{guid, status: Free|ReservedByMe|ReservedByOther|ServerUnavailable|NotExist, reservedBy?: [user names]} | {error}], objectSets?: [{name, status, reservedBy?, canCreate, canDeleteModify}], accessRights?: {RightName: bool}}. Only elements with status ReservedByMe (or Free after reserving) can be modified.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsNoAlso return the reservation status of these elements
objectSetsNoAlso return the reservation status of object sets: true = all of them, or a list of names
includeMembersNoList the team members with their online state (default true)
includeAccessRightsNoReturn the current user's Teamwork role rights as {RightName: bool} (e.g. LayersCreate, IssuesCreateModify). Default false

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds valuable behavioral context by detailing the response shape for solo projects (nothing to reserve) and teamwork projects (including online state, warning for server offline, and modification eligibility). It does not, however, mention any rate limits, authentication requirements, or error responses beyond a warning field, leaving some minor gaps.

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

Conciseness3/5

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

The description is long and heavily front-loads the critical precondition (call before the teamwork tools) but then includes an extensive JSON example that may be overly detailed for a tool description. It is not wasteful in every sentence, but the large response schema dump makes it less concise and could overwhelm an agent that just needs to know when to call it.

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 that there is no output schema, annotations cover the safety profile, and the schema details the input parameters, the description is complete enough for an agent to understand the tool's role. It explains the return structure for both solo and teamwork projects, the meaning of statuses, and the rule for modifiable elements, leaving no critical gaps for correct invocation.

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 schema already documents the parameters. The description still adds meaning beyond the schema by explaining the implications of the output for reservation status and access rights, e.g., that only ReservedByMe or Free (after reserving) elements can be modified. For the parameters themselves (elements, objectSets, includeMembers, includeAccessRights), the schema provides full details, so the description's added value is moderate.

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 states a specific verb+resource ('Teamwork status of the open project') and goes further to explain that it must be called before reserve_elements / release_elements / teamwork_send / teamwork_receive. It clearly distinguishes itself from those sibling tools by acting as a prerequisite status check rather than a reservation or sync operation.

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

Usage Guidelines5/5

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

The description explicitly names the tools it should precede ('call this before reserve_elements / release_elements / teamwork_send / teamwork_receive') and describes the branching outcome for solo vs teamwork projects, including the key rule that only ReservedByMe or Free (after reserving) elements can be modified. This removes ambiguity about when and why to use the tool.

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

get_tool_defaultsGet tool default settingsA
Read-onlyIdempotent

Returns the default settings of element tools — what the next element placed in Archicad (or created by a create_* tool without explicit values) gets. Without type/types: lists the toolbox tools {tools: [{type, variation?}], activeTool, hint}. With types: {defaults: [{type, variation?, settings: {layer, renovationStatus, drawIndex, elementId?, ...the same fields as the type's create_* tool (heights, thicknesses, structure/composite/buildingMaterial, surfaces, libraryPart, params {GDL name: value}...), gdlParameterCount?}, classifications?: [{system, systemGuid, itemGuid, itemId, itemName}], categories?: {StructuralFunction: {value, valueGuid, category}, ...}, properties?: [{guid, name, group, value | status}], notes?} | {error}]}. Use it before set_tool_defaults to see the current values and field names.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoTool to read (e.g. 'Wall')
typesNoSeveral tools at once: type names or {type, variation}
variationNoTool variation, only for tools that share an element type (e.g. 'GridElement' vs 'Object' for Object elements). Normally omit it; get_tool_defaults without a type lists the toolbox tools with their variations
gdlParameterNamesNoOnly these GDL parameters (names as in get_gdl_parameters)
includeCategoriesNoInclude the default element categories (default true)
includePropertiesNoInclude custom properties whose default value was overridden (default false)
includeAllPropertiesNoInclude ALL custom properties available for the tool, with their values (default false)
includeGdlParametersNoLibrary-part based tools: include the GDL parameter values (default true)
includeClassificationsNoInclude the default classifications (default true)
includeHiddenGdlParametersNoAlso include hidden GDL parameters (default false)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description adds substantive behavior beyond them: the two distinct response shapes, per-type error objects, the fact that settings mirror the type's create_* tool fields, and which optional blocks (classifications, categories, properties, notes) appear. It does not discuss permissions, model state requirements, or performance when many types are passed, which keeps it from a 5.

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?

Front-loaded: the purpose and the no-type/with-types distinction come first, and the usage tip closes the text. The content earns its place, but it is a single dense run-on sentence with nested braces and '...' placeholders, which is harder to scan than it needs to be.

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 10 optional parameters, no output schema, and a highly variable response, the description carries the return-value burden and does so by sketching both response shapes and the error variant. Coverage is adequate for correct invocation; only auth/environment prerequisites and any size limits (e.g., maxItems 50/500 effects) 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?

Schema description coverage is 100%, so the baseline is 3, and the schema already documents the boolean flags and their defaults. The description still adds meaning by explaining that type/types drive two different return shapes and that gdlParameterNames should use names from get_gdl_parameters, tying the parameters to observable output rather than restating them.

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?

States a specific verb and resource: returns the default settings of element tools, clarified as 'what the next element placed in Archicad (or created by a create_* tool without explicit values) gets'. It also differentiates its two modes (no type = toolbox listing, with types = full defaults) and names its counterpart set_tool_defaults, so an agent can place it 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 Guidelines4/5

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

Gives an explicit workflow instruction: 'Use it before set_tool_defaults to see the current values and field names.' That is real when-to-use guidance and names the companion tool. There is no when-not guidance (e.g., use get_element_details instead for existing elements) and no exclusion against sibling read tools like get_gdl_parameters, so it stops short of a 5.

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

get_view_settingsGet view settingsA
Read-onlyIdempotent

Without 'view': settings of the ACTIVE window — drawingScale (N of 1:N), layerCombination, penSet, structureDisplay, renovationFilter (+ available filters) and the model view option combinations matching the current options. With 'view' (View Map item GUID/name): the settings stored in that saved view (layer combination, model view options, pen set, dimension style, scale, structure display, zoom, renovation filter, graphic overrides, 3D style, rendering scene; storedInView tells which ones the view stores).

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoSaved view (View Map). Omit for the current window

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered; the description adds substantive behavior the annotations cannot, namely the two different result shapes and the fields returned in each, plus the meaning of storedInView. It does not mention error behavior when a GUID/name is not found, which is the main remaining gap.

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?

Effectively two parallel clauses, one per mode, front-loading the omitted-vs-present distinction before the field lists. The parenthetical enumerations are dense but each item is informative; there is no filler or restated purpose.

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?

There is no output schema, so the description carries the burden of describing results, and it does so thoroughly for both modes, including which stored settings are reported and how storedInView disambiguates them. With zero required parameters and rich return coverage, an agent has everything needed to call it correctly.

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 coverage is 100% and the schema already states 'Omit for the current window', so the baseline is 3. The description goes further by explaining that the semantics of omission vs. presence change the entire returned dataset (live window settings vs. stored saved-view settings), which is meaningful beyond the schema wording.

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?

States a specific verb+resource (get view settings) and immediately splits into the two distinct behaviors: current active window when 'view' is omitted, saved view settings when it is supplied. It enumerates concrete returned fields (drawingScale, layerCombination, penSet, structureDisplay, renovationFilter), so an agent can distinguish it from set_view_settings 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 Guidelines4/5

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

Clearly gives the condition that selects each mode (omit 'view' for the active window, pass 'view' for a View Map item), which is real when-to-use guidance. It stops short of naming alternative tools (e.g. set_view_settings, list_views) or exclusions, so it is clear context rather than full routing guidance.

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

get_zonesGet zones (room schedule)A
Read-onlyIdempotent

Lists zones (rooms) like a room schedule, sorted by story then number: guid, name, number, category, story, construction method (Manual / InnerEdge / ReferenceLine), area, netArea, calculatedArea (after reductions, as in the stamp) in m², perimeter (m), volume (m³), height, bottomElevation, stamp position, plus totals over ALL matching zones. Filter by guids, stories, category or a search text (name or number). Optional: includePolygon, includeQuantities (walls/doors/windows surfaces, corners, extracted areas...), includeRelations (boundary walls/beams, contained elements by type), includeReductions (area reductions with type/percent/area/polygon). For every setting of one zone use get_element_details.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn at most this many zones (default 500)
zonesNoOnly these zones
offsetNoSkip this many zones
searchNoCase-insensitive text contained in the zone name or number
storiesNoOnly zones on these story indices (0 = ground floor, negative = basements; see get_stories)
categoryNoOnly zones of this zone category (localized name or index)
includePolygonNoAdd each zone's outline 'polygon' (inner edges); ReferenceLine zones also get 'referenceLinePolygon' (the measured gross outline)
includeRelationsNoAdd boundary walls/beams/curtain wall segments and contained elements by type
includeQuantitiesNoAdd the full Archicad zone quantity set
includeReductionsNoAdd the area reduction polygons (walls, columns, fills, low-height parts)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive/openWorld=false, so safety is covered. The description adds real behavioral context beyond that: the sort order, that totals are computed 'over ALL matching zones' (not just the page), what each include* flag actually returns, and that areas are post-reduction 'as in the stamp'. It lacks pagination/interaction notes (e.g. how limit/offset and totals interact), so not a 5.

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?

Front-loads the core purpose and output shape, then filters, then optional flags, with zero filler. The middle run-on sentence packing ~15 return fields is dense and could be bulleted, but every clause carries information.

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?

With no output schema, the description carries the full burden of describing the return value, and it does so by enumerating every emitted field, the appended totals, and the extra properties each include* flag adds. Combined with a complete schema, an agent has everything needed to call it correctly.

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 coverage is 100%, so 3 is the baseline, but the description genuinely enriches it: it enumerates the four filter axes (guids, stories, category, search text over name or number), specifies units (m², m, m³), and expands the include* flags far beyond their terse schema text ('walls/doors/windows surfaces, corners, extracted areas', 'boundary walls/beams, contained elements by type', 'area reductions with type/percent/area/polygon').

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?

States a specific verb+resource ('Lists zones (rooms) like a room schedule') and immediately characterizes the return shape and sort order (by story then number). It clearly distinguishes itself from the mutation siblings (create_zones/modify_zones/update_zones) and from get_element_details by scope.

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?

Names the alternative explicitly: 'For every setting of one zone use get_element_details', which routes the agent for the single-element case. It also frames the filtering dimensions up front, but gives no explicit 'when not to use' for the batch case or guidance on when the optional includes are worth the cost.

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

go_to_viewGo to saved viewA
Idempotent

Opens a saved view of the View Map exactly like double-clicking it in the Navigator: switches window/story and applies the view's layer combination, scale, model view options, pen set, graphic overrides and zoom. Accepts the Navigator item GUID or its name (see list_views include ['viewMap']). Project Map / Layout Book items are opened without view settings. Returns {view, method, window}.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYesNavigator item: GUID string (from list_views / the official Navigator tree), or the view name / '<ID> <name>' as shown in the Navigator (localized, e.g. Russian; exact match first, then case-insensitive, then 'contains'). Ambiguous names return the candidates.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and idempotentHint=true, and the description earns its keep by disclosing exactly what state changes: window/story switch and applied layer combination, scale, MVO, pen set, graphic overrides and zoom. It also notes that Project Map/Layout Book items open without view settings. Lacks caveats like auth or failure modes, so not a 5.

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?

Front-loads the core purpose before enumerating applied settings, and the trailing sentences cover input sourcing and return shape. The first sentence is dense with a long settings list, but every element is relevant and nothing is wasted.

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 single-parameter action with no output schema, the description covers purpose, side effects, input sourcing, and even the return shape ({view, method, window}). An agent has everything needed to invoke it correctly.

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 GUID/name forms, matching order, and ambiguity behavior are already fully documented in the schema. The description's value-add is the pointer to list_views for sourcing the identifier, plus confirmation that either a GUID or name is accepted.

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?

States a specific verb+resource ('Opens a saved view of the View Map') and anchors it with a concrete analogy ('exactly like double-clicking it in the Navigator'). Clearly distinguishes it from siblings like list_views and get_view_settings by describing the opening action and its applied settings.

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?

Gives a clear usage context and a cross-reference ('see list_views include ["viewMap"]') that tells the agent how to obtain the input first, plus a behavioral distinction for Project Map / Layout Book items. It stops short of explicitly naming an alternative (e.g. open_view) and the condition that would select it.

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

group_elementsGroup elementsA

Groups elements (Edit > Grouping > Group) so they move/select together. Elements that already belong to a group bring their whole top-level group, which becomes a nested sub-group (same as Archicad). All elements must be on the same story. Pass elements for one group, or groups: [{elements, parentGroup?}] for several in one undo step. Returns {groupGuid, members, elementCount} (with groups: {results: [...]}). The group GUID can be passed to move_elements, delete_elements, ungroup_elements, ... to address the whole group.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsNoSeveral groups to create in one undo step
elementsNoAt least two elements and/or group GUIDs (all on the same story)
parentGroupNoOptional existing group GUID to nest the new group into

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the generic mutation profile (readOnly false, idempotent false, destructive false); the description carries the real behavioral load. It discloses the non-obvious nesting semantics ('elements that already belong to a group bring their whole top-level group, which becomes a nested sub-group'), the story constraint, and that the `groups` form batches multiple creations into a single undo step — all of which explain the non-idempotent hint and go well beyond the annotations.

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?

Front-loaded with the core action and then layered with the highest-value details (nesting, story constraint, mode selection, return shape) in a compact run of sentences. It is dense rather than padded, though the trailing sentence listing return shapes and follow-up tools is slightly list-heavy.

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?

There is no output schema, yet the description supplies the return shape ({groupGuid, members, elementCount}, and {results:[...]} for the `groups` form), the preconditions, and the nesting behavior. For a non-idempotent mutation with 3 parameters, nothing an agent needs to invoke it correctly appears to be missing.

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 coverage is 100%, so the baseline is 3, but the description adds semantics the schema cannot express: `elements` versus `groups` are alternative entry points, the latter nests the same shape plus an optional parentGroup, and the union selects single-group versus bulk behavior. The story precondition is reinforced for both paths. It adds real value but does not spell out per-parameter format constraints (e.g., GUID formats) that live in 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?

States a specific verb and resource ('Groups elements') and even maps it to the Archicad UI path (Edit > Grouping > Group), immediately distinguishing it from siblings like ungroup_elements and merge_elements. The scope (elements move/select together, same story) is concrete enough that no schema reading is required.

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 clearly explains the two invocation modes ('Pass elements for one group, or groups: [{elements, parentGroup?}] for several in one undo step') and states a hard precondition ('All elements must be on the same story'). It also routes the agent forward by noting the returned GUID can feed move_elements/delete_elements/ungroup_elements. It does not, however, contrast against a genuine alternative such as merge_elements, so it stops short of full when/when-not guidance.

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

import_bcfImport issues from BCFA

Imports the issues (topics, comments, referenced elements) of a BCF file (.bcfzip / .bcf, BCF 2.x) into the Issue Manager without dialogs (one undo step). Elements referenced by IFC GlobalId are matched to the model. Output: {imported, issues: [...the new issues in get_issues format]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path of the BCF file on the Archicad machine ('~/' allowed)
undoNameNo
openIssuePaletteNoOpen the Issue Manager palette after the import (default false)
alignBySurveyPointNoThe BCF coordinates are relative to the Survey Point (default true)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds real context beyond that: it runs without dialogs, commits as a single undo step, and matches referenced elements via IFC GlobalId. It does not mention error behavior on failed matches, but the safety/mutation profile is well covered.

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

Conciseness5/5

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

Three tight sentences: what it imports, how it behaves on execution, and what it returns. No filler, and the output contract is front-loaded at the end where the agent needs it.

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?

With no output schema, the description supplies the return shape ({imported, issues: [...] in get_issues format}), so an agent knows exactly what it gets back. Combined with the undo-step and dialogs-free behavior notes, nothing critical for correct invocation is missing.

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 coverage is 75%, so the schema documents most parameters. The description only enriches `path` with accepted BCF file extensions and version; undoName, openIssuePalette, and alignBySurveyPoint semantics come entirely from the schema, not 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?

States a specific verb (imports) and resource (BCF issues/topics/comments/referenced elements) with format scope (.bcfzip/.bcf, BCF 2.x) and target (Issue Manager). It is easily distinguished from export_bcf and get_issues in the sibling list.

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?

The description implies the use case (pulling BCF issues into Archicad) but never states when to prefer it over export_bcf or how it relates to existing issues. No prerequisites or exclusions are given, so usage is only implied.

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

import_classifications_xmlImport classifications (XML)A

Imports classification systems from an Archicad classification XML (Classification Manager export / downloaded systems such as Uniclass, OmniClass). Give the XML text or a local file path. One undo step. Returns {systems: [{guid, name, editionVersion, new, itemCount, ...}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlNoXML content
filePathNoAbsolute path of the .xml file on this computer (alternative to xml)
undoNameNoName of the undo step shown in Archicad
itemConflictPolicyNoWhen an item ID exists (default Replace)
systemConflictPolicyNoWhen a system with the same name/version exists (default Merge)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), but the description adds real value beyond them: it discloses 'One undo step' (reversibility) and the return shape. Conflict-handling behavior is left to the schema rather than the prose.

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

Conciseness5/5

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

Three tight sentences with the primary purpose front-loaded, followed by invocation modes and the return contract. No filler or repetition.

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?

With no output schema, the description compensates by enumerating the returned object ({systems: [{guid, name, editionVersion, new, itemCount, ...}]}). Combined with the disclosed undo behavior, an agent has everything needed to call and interpret this import correctly.

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%, so all five parameters including the two enum conflict policies are already documented structurally. The description restates the xml/filePath duality but adds no format or precedence detail beyond the schema, so baseline 3 applies.

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?

States a specific verb (Imports) plus resource (classification systems) and names the concrete source formats (Archicad Classification Manager export, Uniclass, OmniClass). This clearly distinguishes it from the single-system sibling create_classification_system without needing schema inspection.

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?

Explains the two acceptable input modes ('Give the XML text or a local file path'), which is actionable invocation guidance. It does not, however, explicitly say when to prefer this bulk import over the sibling create_classification_system/create_classification_items path, so it stops short of full alternative routing.

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

import_favoritesImport favoritesA

Imports favorites from a .prf file exported by Archicad / export_favorites. Output: {imported: [new names], count, firstConflict?}. In Teamwork, reserve the 'Favorites' object set first.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path of the .prf file ('~/' allowed)
folderNoTarget folder in the Favorites palette (default: root)
importFoldersNoKeep the folder structure stored in the file (default true)
conflictPolicyNoWhen a name already exists: Append (default: import under a new name), Overwrite, Skip, or Error (stop)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnly=false, idempotent=false, destructive=false). The description goes beyond them by disclosing the return shape including the optional firstConflict field and the Teamwork prerequisite of reserving the 'Favorites' object set, which is real operational context an agent cannot get from annotations.

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?

Three tight clauses with no filler: source of the file, output shape, and the Teamwork prerequisite, in that order. Slightly telegraphic ('Output: {...}') but efficient and front-loaded.

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 no output schema present, the description compensates by naming the returned fields, and it covers the Teamwork reservation prerequisite. What remains unstated, such as behavior when the path does not exist or the file is malformed, is minor for a scoped import tool.

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%, so all four parameters including the conflictPolicy enum are fully documented in the schema. The description only adds the firstConflict mention, which is about output rather than parameter meaning, 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?

States a specific verb and resource ('Imports favorites') and identifies the exact source artifact (a .prf file produced by Archicad / export_favorites), which cleanly separates it from the sibling export_favorites. An agent can identify the operation 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 Guidelines4/5

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

The description tells the agent the file must come from export_favorites, which is a useful precondition and implicitly frames when this tool applies. It stops short of naming alternatives such as create_favorite or stating what to do when the file is absent.

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

import_property_definitions_xmlImport property definitions (XML)A

Imports property groups and definitions from an Archicad property XML file (the Property Manager's Export format, ...). Give the XML text or a local file path. One undo step. Returns {created: [{guid, name, group, type}], groupsCreated, definitionCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlNoXML content
filePathNoAbsolute path of an .xml file on this computer (alternative to xml)
undoNameNoName of the undo step shown in Archicad
conflictPolicyNoWhen a definition with the same name exists: Skip (default, keep existing), Replace (overwrite), Append (add alongside)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, idempotent=false. The description adds genuinely useful behavior beyond them: 'One undo step' and the exact return shape {created, groupsCreated, definitionCount}. It doesn't cover permission/prerequisite requirements, but for a non-destructive import that is a minor gap.

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?

Three compact sentences, front-loaded with the core purpose and format before the input forms and return value. Every sentence carries information; no filler or repetition.

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 no output schema, the description compensates by naming the return fields, and it discloses the format constraint and undo behavior an agent needs. It could go further on prerequisites for the xml-vs-filePath choice, but it is complete enough to invoke correctly.

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%, so the schema already documents xml, filePath, undoName, and the conflictPolicy enum thoroughly. The description only restates the xml/filePath alternative and adds nothing on undoName or conflictPolicy semantics, so it stays at the baseline.

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?

States a specific verb (imports) and resource (property groups and definitions) and pins the exact source format (Property Manager Export XML with <BuildingInformation><PropertyDefinitionGroups>). This clearly distinguishes it from sibling import_classifications_xml, which handles a different resource, as well as from create_property_definitions.

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?

It tells the agent the two valid input forms ('XML text or a local file path'), which is useful operational context, and the stated format constraint implies when the tool applies. But it never states when to prefer this over create_property_definitions/modify_property_definitions or when not to use it, so usage is left implied.

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

list_addon_commandsList add-on commandsA
Read-onlyIdempotent

Lists every JSON command implemented by the Claude Connector add-on (namespace ClaudeConnector) with descriptions. Useful together with execute_addon_command for features without a dedicated tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only that results carry descriptions and the namespace name; it says nothing about result size or pagination, so it is a modest supplement.

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

Conciseness5/5

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

Two short sentences, front-loaded with what is listed and followed by the pairing guidance. No filler.

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 no parameters and no output schema, the description covers what the tool returns (command names plus descriptions) and how it fits with execute_addon_command. Only a note on result volume or formatting is missing.

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 tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate beyond the namespace context it already provides.

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?

Specific verb+resource: lists every JSON command exposed by the Claude Connector add-on namespace, and states the payload includes descriptions. It also names the companion tool execute_addon_command, so an agent can separate it from the many list_* siblings.

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?

Explicitly says it is useful with execute_addon_command for features without a dedicated tool, which tells the agent when to consult it. It stops short of stating when NOT to use it (e.g., use a dedicated tool first), so it is clear context rather than full when/when-not routing.

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

list_elementsList elementsA
Read-onlyIdempotent

Lists element GUIDs of the whole project (all stories) through the official JSON API, optionally only some types or only the current selection, with each element's type and the number of elements per type (countsByType). Returns {total, offset, returned, hasMore, countsByType, elements: [{guid, type}]}. For attribute/geometry filters (story, layer, region, ID...) use find_elements; for details of the returned elements use get_element_details, for extents get_bounding_boxes. Works without the Claude Connector add-on.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn at most this many results (default 500)
typesNoOnly these element types. Omit for every element (including types not in this list, reported as 'Unknown')
offsetNoSkip this many results
includeTypesNoReturn {guid, type} items and countsByType (default true). false returns plain GUID strings — fastest for huge projects
onlyEditableNoWith selectedOnly: skip selected elements that are locked / on locked layers / not reserved
selectedOnlyNoOnly the elements currently selected in Archicad (default false)

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the safety profile is handled. The description adds genuinely useful behavior beyond that: the exact return envelope ({total, offset, returned, hasMore, countsByType, elements}), the fact that countsByType is always included, and the Connector-independence note. It stops short of discussing performance/pagination limits beyond includeTypes=false being 'fastest for huge projects'.

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

Conciseness5/5

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

Three sentences, each front-loaded with the highest-value information (what it lists, then the return shape, then sibling routing). No filler or repetition of the schema.

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?

There is no output schema, so the description compensates by stating the exact return structure. Combined with annotations and full schema coverage, an agent has everything needed to call and interpret this tool correctly.

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 coverage is 100%, so the baseline is 3, but the description adds the coupling between onlyEditable and selectedOnly and clarifies that omitting types includes non-enumerated types reported as 'Unknown'. This is meaningful semantic context layered on top of the already-complete 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?

States a specific verb (Lists) and resource (element GUIDs) with explicit scope (whole project, all stories), and names the mechanism (official JSON API). It also names three sibling tools and what each is for, so an agent can distinguish it from find_elements, get_element_details, and get_bounding_boxes without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: attribute/geometry filters (story, layer, region, ID) belong to find_elements, details to get_element_details, extents to get_bounding_boxes. It also notes the tool works without the Claude Connector add-on, which is a real selection condition.

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

list_viewsList views and viewpointsA
Read-onlyIdempotent

Lists everything that can be opened: stories (floor plans), viewpoints (sections, elevations, interior elevations, details, worksheets, 3D documents: {type, database, name, reference, title}), layouts, and the View Map (saved views: {guid, name, id, fullName, itemType, folder, windowType, database}). Use the results with open_view (database/name) and go_to_view (guid). Names are localized (Russian).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items per list (default 1000)
typesNoOnly these viewpoint / view types
includeNoParts to return (default stories, viewpoints, layouts, viewMap). projectMap = the full Project Map tree items
nameContainsNoCase-insensitive filter on names, IDs and folders

TDQS

A4.4/5.0
Behavior4/5

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

The annotations cover safety (readOnly, idempotent, non-destructive), so this dimension has a lower bar. The description adds valuable context by specifying the output shapes and the localization caveat ('Names are localized (Russian)'), which is a behavioral trait not captured by annotations.

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 a single, front-loaded sentence that efficiently packs a lot of information. It avoids unnecessary repetition, though the parenthetical lists slightly reduce readability.

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 that there is no output schema, the description compensates by describing the key fields present in the returned objects. It also covers the primary use case and the localization detail, leaving no critical gaps for an agent to call the tool correctly.

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?

The schema description coverage is 100%, so the baseline is 3. The description reiterates the resource categories but does not add syntax or format details for parameters like limit, nameContains, or types beyond what the schema already provides.

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 uses a specific verb ('Lists') and enumerates exactly which resource categories are returned (stories, viewpoints, layouts, View Map). It distinguishes itself from sibling tools like get_navigator_tree and get_stories by defining its own scope.

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

Usage Guidelines5/5

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

It explicitly names the downstream tools (open_view, go_to_view) and the exact identifier formats they expect (database/name for open_view, guid for go_to_view). This is a clear 'when to use this' signal that an agent can act upon directly.

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

lock_elementsLock elementsA
DestructiveIdempotent

Locks elements (Edit > Locking > Lock): locked elements cannot be edited, moved or deleted until unlocked (unlock_elements). Returns {results: [{guid, locked: true} | {guid, error}], warnings?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds real value beyond that: it explains the consequential effect (blocks edit/move/delete) and that the effect is reversible via unlock_elements, plus the return shape. This meaningfully extends the annotations.

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

Conciseness5/5

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

Two compact sentences, front-loaded with purpose and effect, then the return contract. Every clause earns its place with no redundancy.

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 two-parameter mutation tool with full schema coverage and no output schema, the description covers purpose, resulting state, reversibility, and return format. Nothing an agent needs to invoke it correctly is missing.

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 coverage is 100%, including a detailed includeGroupMembers description and the group-GUID semantics for elements, so the schema does the heavy lifting. The description adds no parameter-level detail beyond what the schema provides, making the baseline 3 appropriate.

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?

States a specific verb (Locks) and resource (elements), anchors it to the UI path (Edit > Locking > Lock), and explicitly names the counterpart tool unlock_elements, distinguishing it from siblings. An agent can tell it apart from unlock_elements without reading either 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?

The description routes to unlock_elements for the reverse operation and states the condition (locked elements cannot be edited, moved or deleted until unlocked), which gives clear context for when this state is meaningful. It stops short of an explicit when-to-use vs. when-not-to-use rule, but the semantics are unambiguous.

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

merge_elementsMerge elementsA
DestructiveIdempotent

Merges construction elements (Design > Connect > Merge) so their 3D bodies and sections are displayed as one without contour lines between them (e.g. slabs of the same material). Needs at least two elements. Undo with unmerge_elements. Returns {merged, results: [{guid, mergedWith: [guid]}]} (merged=false with per-element errors when some element is not editable).

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesAt least two construction elements to merge

TDQS

A4.1/5.0
Behavior4/5

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

With annotations already declaring destructive and idempotent behavior, the description adds valuable context: the undo path, the return shape, and the error condition when an element is not editable. It still does not explain all side effects on the original elements or any permission requirements, so it is strong but not exhaustive.

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

Conciseness5/5

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

The description is front-loaded with the operation and its visual effect, then efficiently adds prerequisites, undo guidance, and return/error behavior. Every sentence carries useful information, with no filler or redundancy.

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 that there is no output schema, the description fully covers the return shape and error semantics, plus the undo path and minimum element requirement. An agent has enough to invoke the tool correctly and interpret the result.

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%, so the single parameter is fully documented in the schema itself. The description's 'Needs at least two elements' mirrors the schema's minItems constraint without adding format, ordering, or other meaning beyond what the schema provides. Baseline 3 is appropriate.

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?

States a specific verb ('Merges') and resource ('construction elements'), plus the visual effect so 3D bodies and sections display as one without contour lines, with an example ('slabs of the same material'). It does not, however, explicitly distinguish this from sibling operations like group_elements or solid_operation, so it falls short of a full 5.

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?

Gives a prerequisite ('Needs at least two elements') and names the undo alternative ('Undo with unmerge_elements'). The usage context is clear, including when a merge is appropriate (slabs of the same material), but it does not state when not to use this tool or compare it directly with other element-combining siblings.

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

merge_fileMerge a .pln / .mod fileA

Merges another Archicad project (.pln), archive (.pla) or module (.mod) into this project as own, editable elements (Archicad 26 has no merge API: the file is placed as a hotlinked module and the hotlink is broken). Optional placement (position m, angle deg, mirrored, home story) and story range. keepHotlink: true leaves it as a live hotlink instead. IFC / DWG / DXF cannot be merged through the API (use Archicad's File > Interoperability > Merge). Refuses files that are already hotlinked (breaking would convert those too). Returns {merged, elementCount, countsByType, elements: [guid]}. Undo: two steps (place + break).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the temporary hotlink (default 'Merge - <file name>')
pathYesAbsolute path of an Archicad project (.pln), archive (.pla) or module (.mod, see export_module) file
angleNoRotation around the insertion point in degrees, counter-clockwise (default 0)
layerNoLayer of the hotlink instance
maxGuidsNoReturn at most this many new element guids (default 500; counts are always complete)
mirroredNoMirror the module (about its local Y axis) before rotating
positionNoWhere the source file's origin (0,0,0) lands in this project, meters (default 0,0,0; z = vertical offset)
skipNestedNoSkip modules nested inside the source file
storyIndexNoHome story of the placed module in this project (default: the current story)
storyRangeNoHotlink all stories of the source (default) or a single one (then give sourceStory)
keepHotlinkNoKeep it as a hotlinked module instead of breaking it into own elements (default false)
sourceStoryNoStory index IN THE SOURCE FILE for a single-story hotlink (implies storyRange 'SingleStory')
floorDifferenceNoAdvanced: story offset between the source's and this project's stories (default 0 / tool default)
suspendFixAngleNoAdjust fixed-angle elements (e.g. texts) to the module rotation
adjustLevelDiffsNoAdjust elevations of elements with relative level linking
relinkWallOpeningsNoRe-link wall openings of the module
ignoreTopFloorLinksNoIgnore top links of walls/columns on the top story of the module

TDQS

A4.7/5.0
Behavior5/5

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

With annotations only covering the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description carries the real behavioral burden: the hotlink-then-break side effect, the two-step undo, the refusal of pre-hotlinked files (with the reason it would over-convert), and the returned payload shape. Nothing about the mutation's consequences is left implicit.

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

Conciseness5/5

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

Front-loaded with the core action and the non-obvious workaround, then the caveats, alternatives, refusal, return, and undo. Dense but every clause carries selection-critical information; no 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 17-parameter mutation with no output schema, the description still names the return payload ({merged, elementCount, countsByType, elements:[guid]}) and covers undo and refusal semantics, so an agent has everything needed to invoke and reason about the result.

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%, so the schema already documents all 17 parameters, including the alternative-index layer/story selectors. The description only gestures at placement/story-range/keepHotlink, adding little beyond the schema's own text, so the baseline of 3 applies.

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?

States a specific verb and resource ('Merges another Archicad project... into this project as own, editable elements') and immediately discloses the implementation reality (place as hotlinked module, then break), which distinguishes it from siblings like place_hotlink, merge_elements, and export_module. An agent can select it without opening schemas.

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

Usage Guidelines5/5

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

Explicit when-not guidance: IFC/DWG/DXF cannot be merged and the agent is routed to Archicad's File > Interoperability > Merge. It also names the keepHotlink:true condition that turns this into a live hotlink, and the refusal condition for already-hotlinked files. Use vs. alternatives is fully resolved.

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

mirror_elementsMirror elementsA
Destructive

Mirrors elements of ANY type across a line in plan (Edit > Move > Mirror). Give the mirror line either by two points (axisStart, axisEnd) or as axis: 'Vertical' | 'Horizontal' through through (default: centre of the elements' bounding box). copy=true keeps the originals and creates mirrored copies (e.g. the other half of a symmetric plan). Mirroring flips wall/door opening sides and object handedness like Archicad does. Returns {results: [{guid, newGuid?, warning?} | {guid, error}], warnings?} in input order (a 'warning' on an item means Archicad may have ignored it); with copy=true the copy-style result {results: [{guid, copies: [new GUIDs]}], createdCount, additionalCreated?}. Locked elements, elements on locked/hidden layers, hotlinked elements and elements outside your Teamwork workspace are reported with an actionable error instead of being edited.

ParametersJSON Schema
NameRequiredDescriptionDefault
axisNoAlternative to axisStart/axisEnd: a vertical (parallel to Y) or horizontal (parallel to X) mirror line
copyNotrue = keep the originals and transform copies (default false = transform the originals)
axisEndNoSecond point of the mirror line (with axisStart)
throughNoPoint the vertical/horizontal `axis` passes through (default: bounding-box centre)
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
axisStartNoFirst point of the mirror line (with axisEnd)
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.4/5.0
Behavior5/5

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

Far exceeds the annotations: it discloses that mirroring flips wall/door opening sides and object handedness, describes the exact return shape for both edit-in-place and copy modes, and enumerates the locked/hidden-layer/hotlinked/Teamwork cases that yield errors instead of edits. This is rich, decision-relevant behavioral context beyond destructiveHint=true.

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?

Dense and front-loaded: purpose first, then mirror-line options, then copy semantics, then return/error behavior. Sentences are long but every one carries information; minor compression would help but nothing is 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?

Despite no output schema, the description documents the return payload shape, input-order results, warning-vs-error semantics, copy-style result fields, and edge-case error reporting. Nothing an agent needs to invoke it correctly is missing.

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%, so the schema already documents axis, axisStart/axisEnd, through, copy, and includeGroupMembers. The description restates the either/or relationship between axis and axisStart/axisEnd and the default 'centre of the elements' bounding box', but adds little syntax or format 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?

States a specific verb and resource ('Mirrors elements of ANY type across a line in plan') with a UI anchor (Edit > Move > Mirror). This cleanly distinguishes it from sibling transforms like rotate_elements, move_elements, and copy_elements.

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?

Gives clear context for the copy=true variant ('keeps the originals and creates mirrored copies, e.g. the other half of a symmetric plan'). However, it never names alternative tools (rotate_elements/copy_elements) or states when NOT to use it, so it falls short of explicit when-not/alternatives routing.

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

modify_attributesModify attributesA
DestructiveIdempotent

Changes existing attributes of any type in one undo step. Each item is {type, attribute (name/index/{guid}), name? (rename), folder? (move), ...fields to change} with the same field names as get_attributes returns and the create_* tools accept; only the given fields change. Examples: {type: 'Layer', attribute: 'Мебель', locked: true}; {type: 'Surface', attribute: 'Red paint', color: '#AA0000'}; {type: 'Composite', attribute: 'Wall 380', skins: [...]}; {type: 'Pen', attribute: 12, color: '#FF0000', width: 0.5}; {type: 'LayerCombination', attribute: 'Plan', base: 'current'} (re-captures the current layer states). Fonts cannot be modified. Returns {results: [{index, name, guid} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step
attributesYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the destructive/idempotent profile, but the description adds substantive behavior beyond them: the operation runs 'in one undo step', it is a partial update ('only the given fields change'), fonts are unsupported, and LayerCombination with base:'current' has a side effect (re-captures current layer states). These are non-obvious traits an agent needs.

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?

Front-loaded with the core purpose, then examples, then the per-type field catalog. Dense and information-rich rather than padded, though the long enumerated field list adds bulk that could be structured more scannably.

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?

With no output schema, the description supplies the return shape ({results: [{index, name, guid} | {error}]}) and the per-type field contract, plus identifiers and an undo naming hint. There is no annotation/output-schema gap left for the caller to guess at.

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 coverage is only 50%, but the description compensates heavily: it defines the item shape ({type, attribute, name?, folder?}), the accepted attribute identifier forms, and enumerates the changeable fields per attribute type, plus concrete examples. It stops short of units/semantics for every field, deferring to the create_*/get_attributes tools.

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?

States a specific verb ('Changes existing attributes') and resource ('of any type') with scope qualifiers. An agent can immediately distinguish it from create_* (creation), delete_attributes (removal), duplicate_attributes, and get_attributes (read) siblings without opening any 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?

Clarifies that only *existing* attributes are affected and that 'only the given fields change', which is strong context for choosing this over the create_* siblings. It also notes a hard exclusion ('Fonts cannot be modified'). It does not, however, name an explicit alternative tool or a when-not-to-use condition, keeping it short of a 5.

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

modify_beamsModify beamsA
DestructiveIdempotent

Changes existing beams (one undo step). Each item is {guid, ...fields to change} using exactly the fields of create_beams (begin, end, level, width/height/diameter, arcAngle, slantAngle, buildingMaterial/profile, surfaces, anchor, lines, ...); only the given fields change and they are validated like create_beams. Top-level section/surface fields apply to ALL segments; use 'segments' (full list, {} = unchanged segment) for single segments or the segment count. Holes: 'holes' replaces all, 'addHoles' appends, 'removeHoles' deletes by id. Read the current values first with get_element_details. Non-beam GUIDs are rejected per item. Returns [{guid} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
beamsYesPatches: {guid, <create_beams field>: newValue, ...}
undoNameNoName of the undo step shown in Archicad

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that changes are a single undo step, that only supplied fields change (partial patch semantics), that values are validated like create_beams, that non-beam GUIDs are rejected per item, and the exact return shape [{guid}|{error}] in input order. Annotations only gave the safety profile; the description adds real behavioral detail.

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?

Front-loaded with the core action and the undo-step qualifier, then dense but purposeful specifics. It is long-ish for a description, yet nearly every clause carries distinct functional information (return shape, hole modes, segment scoping), so little is wasted.

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?

With no output schema, the description supplies the return contract and error behavior; with open-world nested patch objects, it supplies the field vocabulary via create_beams and the segment/hole semantics. An agent has everything needed to call it correctly.

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?

Schema coverage is 100%, but the description still adds meaning the schema cannot: the top-level section/surface fields apply to ALL segments, 'segments' takes the full list with {} meaning unchanged, and holes/addHoles/removeHoles define distinct replace/append/delete semantics. This is substantive parameter semantics beyond structured fields.

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?

'Changes existing beams' states a specific verb and resource, and contrasting it with create_beams' field set makes clear this is the mutation counterpart. The agent can distinguish it from create_beams, modify_columns, and modify_elements 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 concrete operational guidance: 'Read the current values first with get_element_details', and spells out the choice between top-level fields and 'segments' as well as the three hole strategies (holes/addHoles/removeHoles). It does not explicitly exclude scenarios where a generic modify_elements would be preferred, so it stops short of full when/when-not routing.

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

modify_classification_itemsModify classification itemsA
DestructiveIdempotent

Changes the ID, name and/or description of classification items in one undo step. Returns {results: [{guid, id, name?, description?} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
systemNoSystem in which item IDs are looked up (needed when an ID exists in several systems)
undoNameNoName of the undo step shown in Archicad

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the baseline is covered. The description adds meaningful behavior beyond annotations by stating the operation is grouped into one undo step and returns per-item success or error objects, which hints at bulk partial-failure behavior.

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

Conciseness5/5

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

The description is two compact sentences with no wasted wording. The core behavior is front-loaded, followed by the return shape, which is efficient and directly useful.

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?

There is no output schema, but the description explicitly states the return structure with results, guid, id, optional name/description, and error objects. Combined with annotations covering safety and undo behavior, this is close to complete, though it does not cover prerequisites such as ensuring the target classification items already exist.

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 coverage is moderate at 67%, and the schema already documents the target fields id, name, and description. The description restates those fields but does not explain the top-level system parameter, the undoName parameter, or the accepted item identifier forms, so it adds only limited semantic value.

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 uses a specific verb and resource: it changes the ID, name, and/or description of classification items. This clearly separates it from create/delete classification item siblings and states the exact editable fields.

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

Usage Guidelines2/5

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

The description says what the tool changes but gives no explicit guidance on when to use it instead of related siblings like create_classification_items, delete_classification_items, or modify_classification_system. The only contextual cue is 'one undo step', which is behavioral rather than usage guidance.

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

modify_classification_systemModify classification systemB
DestructiveIdempotent

Changes a classification system's name, editionVersion, description, source or editionDate. Returns {system}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
sourceNo
systemYesClassification system: name (e.g. 'Классификация Archicad'), 'Name version', GUID, or {name, editionVersion}
undoNameNoName of the undo step shown in Archicad
descriptionNo
editionDateNoEdition date YYYY-MM-DD
editionVersionNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the mutation/safety profile is covered. The description adds the return shape ('Returns {system}'), valuable since no output schema exists, but does not explain the destructive aspect (e.g. whether omitted fields are cleared, whether the rename is reversible) or authorization needs.

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?

Two short, front-loaded sentences with no filler: the mutation target and field list come first, the return value second. Efficient and easy to scan, though extremely terse given the tool's parameter complexity.

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

Completeness3/5

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

For a 7-parameter destructive mutation with 43% schema coverage and no output schema, the description covers the modifiable fields and the return shape, which is the minimum viable. It leaves gaps on the required 'system' identifier semantics, undoName, and what happens to fields not supplied.

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 only 43% across 7 parameters, so the description must compensate. It names five of the seven parameters (name, editionVersion, description, source, editionDate) as mutable fields, which maps them usefully, but omits the required 'system' identifier and 'undoName', and adds no format or constraint detail beyond what the schema already shows.

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?

States a specific verb ('Changes') plus the exact resource (a classification system) and enumerates the mutable fields (name, editionVersion, description, source, editionDate), which clearly separates it from create_classification_system and delete_classification_systems. It stops short of naming a sibling or stating the inverse operation, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

No guidance on when to use this versus create_classification_system, delete_classification_systems, or import_classifications_xml, and no prerequisites (e.g. system must already exist). The agent must infer usage entirely from the tool name and field list.

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

modify_columnsModify columnsA
DestructiveIdempotent

Changes existing columns (one undo step). Each item is {guid, ...fields to change} using exactly the fields of create_columns (origin, height, topLinkedStory, width/depth/diameter, buildingMaterial/profile, surfaces, veneer, slant, anchor, lines, ...); only the given fields change and they are validated like create_columns. Top-level section/surface/veneer fields apply to ALL segments; use 'segments' (full list, {} = unchanged segment; a different length changes the segment count) for single segments and 'cuts' for segment cuts. Read the current values first with get_element_details. Non-column GUIDs are rejected per item. Returns [{guid} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsYesPatches: {guid, <create_columns field>: newValue, ...}
undoNameNoName of the undo step shown in Archicad

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations (which only flag destructive/idempotent) by disclosing partial-failure behavior (returns [{guid} | {error}] in input order), per-item GUID rejection, validation parity with create_columns, the single-undo-step trait, and the segment-length side effect that changes the segment count. That is rich, tool-specific behavioral context.

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?

Front-loaded with the mutation and its undo semantics, then the patch shape, then the segment/cuts rules. Dense parenthetical clauses make the middle sentences heavy, but every sentence carries required information and nothing is padding.

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?

Despite having no output schema, the description states the return shape per item, names the errors, and covers validation, undo, GUID filtering and segment semantics. For a mutation tool with sibling routing, nothing essential is missing.

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?

Schema coverage is 100% for declared params, but the meaningful payload fields live in the additionalProperties patch object, and the description carries them: the enumerable create_columns fields, the meaning of '{}' (= unchanged segment), what a different-length 'segments' list does, and how top-level section/surface/veneer fields fan out to all segments. This is decisive semantics the schema does not supply.

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?

States a specific verb+resource ('Changes existing columns') and immediately scopes it against siblings by linking to create_columns' field set and telling the agent to read values first via get_element_details. An agent can distinguish this from create_columns, modify_elements and the other modify_* tools 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 Guidelines5/5

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

Gives an explicit prerequisite ('Read the current values first with get_element_details'), explains which fields are valid (the create_columns set), and routes the agent between top-level vs 'segments' vs 'cuts' usage with the exact semantics of each. When-to-use and edge conditions are both covered.

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

modify_curtain_wall_partsModify curtain wall panels / framesA
DestructiveIdempotent

Changes individual curtain wall PANELS (outer/inner/cut surface, thickness, building material, delete, class) and FRAMES (surface, building material, class) in one undo step. Setting a property customizes the part (it leaves its class) unless classId is given. Get the part GUIDs from get_element_details of the curtain wall ('panels', 'frames') or get_subelements. Returns [{guid} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
partsYesPanel / frame patches
undoNameNoName of the undo step shown in Archicad

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that all changes happen 'in one undo step', that setting a property customizes the part and causes it to leave its class unless classId is supplied, and that deletion leaves an empty cell. It also documents the return shape [{guid} | {error}], which no output schema provides.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and scope, then constraints (undo step, class behavior), then how to get inputs and what is returned. The parenthetical enumerations are functional, not 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 mutation tool with no output schema, the description supplies the missing pieces an agent needs: input provenance (GUID sources), the undo/idempotency behavior, class-vs-customization semantics, and the return contract. Nothing material is omitted.

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 coverage is 100%, so the parameter baseline is 3, but the description adds cross-parameter semantics not obvious from individual fields: the interaction between classId and property-setting (a property assignment drops the part from its class), plus the panel-only vs frame-only applicability of surface/buildingMaterial.

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?

States a specific verb (Changes) and precise resources (individual curtain wall PANELS and FRAMES), enumerating the editable properties, which cleanly distinguishes it from the sibling modify_curtain_walls (whole element) and modify_elements (generic). An agent can pick this 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 Guidelines4/5

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

Explicitly tells the agent where to obtain the required part GUIDs (get_element_details 'panels'/'frames' or get_subelements), which is the key precondition. It does not state when to prefer modify_curtain_walls or modify_elements instead, but the context is otherwise unambiguous.

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

modify_curtain_wallsModify curtain wallsA
DestructiveIdempotent

Changes existing curtain walls in one undo step: height, flip, grid patterns (primaryGrid/secondaryGrid or the *Spacing shorthands), surfaces/thickness of all panel classes, surface/building material of all frame classes, zone relation, floor plan display. The base line cannot be changed (use move_elements/rotate_elements or recreate). Returns [{guid} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step shown in Archicad
curtainWallsYesCurtain wall patches

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, but the description adds real behavior: changes happen in a single undo step, the return shape is [{guid} | {error}], and the base-line immutability is disclosed. This is more than the annotations convey and useful for planning a mutation.

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?

Front-loaded with the verb, then the constraint, then the return shape. The middle sentence is dense but every clause enumerates a distinct modifiable facet, so little is wasted; only the very long single sentence risks being hard to scan.

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 destructive multi-field mutation with full annotation coverage, the description supplies the missing pieces: undo semantics, return format, and the immovable base line. No output schema exists, yet the description states the return shape, so an agent has enough to call it correctly.

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; the description goes further by explaining that primaryGrid/secondaryGrid are module widths/heights, that the *Spacing fields are shorthands for FixedSizes grids, and that surface/material fields apply to ALL panel and frame classes. That clarifies scope of each patch field beyond the schema text.

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?

States a specific verb (changes) and resource (existing curtain walls), and enumerates the exact modifiable facets: height, flip, grid patterns, surfaces/thickness, frame materials, zone relation, floor plan display. It also names the sibling tools that must be used instead for the base line (move_elements/rotate_elements or recreate), so it can be told apart from modify_curtain_wall_parts and the transform tools.

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?

Explicitly states the boundary condition: the base line cannot be changed and directs the agent to move_elements/rotate_elements or recreation. It does not, however, distinguish itself from the sibling modify_curtain_wall_parts, which is the most likely nearby alternative, so the guidance is clear but not exhaustive.

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

modify_dimensionsModify dimensionsA
DestructiveIdempotent

Changes existing dimensions in one undo step. Each item is {guid, ...fields}; only the given fields change and only fields of the dimension's type apply. Linear: move the dimension line (linePoint, or offset from the first point), change direction, replace points, pointTexts (custom segment texts), makeStatic, style (pens, markers, texts, witness lines). Level: position, element, level/static, elevationReference, marker, text. Radial: at, lineEnd, prefix, showCenter. Angle: arcPoint/radius, smallArc, line1/line2. Common: layer, storyIndex. Read the current values with get_element_details. Returns [{guid, ...summary} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step
dimensionsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the mutation/idempotency profile is covered. The description adds real value beyond them: 'in one undo step' (undo batching), the partial-update contract ('only the given fields change and only fields of the dimension's type apply'), and the return shape [{guid, ...summary} | {error}].

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?

Front-loads the core action and the partial-update contract, then organizes the long field enumeration by dimension type rather than listing fields arbitrarily. Dense but nearly every clause carries information; the field list slightly overlaps the schema but earns its place through type applicability.

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 destructive, high-parameter mutation tool with no output schema, the description covers undo semantics, partial-update behavior, type-specific field applicability, a prerequisite lookup tool, and the return format. Only the absence of explicit when-to-use routing against siblings leaves a minor gap.

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 schema description coverage at 50%, the schema already documents many nested fields in rich detail. The description compensates by grouping fields by dimension type (Linear/Level/Radial/Angle/Common), which the flat schema does not express, and by flagging which field is the authoritative one per type (e.g. pointTexts vs points[].text, static vs level).

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?

States a specific verb+resource ('Changes existing dimensions') and then enumerates exactly which field families each dimension type accepts (Linear, Level, Radial, Angle, Common). An agent can distinguish this from create_dimensions, create_angle_dimensions, dimension_walls, and modify_elements without opening any 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?

The description implies usage ('Changes existing dimensions', 'Read the current values with get_element_details') but never states when to prefer this over siblings such as modify_elements or the create_* dimension tools, nor any precondition or exclusion. Context is present but guidance is only implied.

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

modify_drawingsChange placed drawingsA
DestructiveIdempotent

Changes drawings already placed on layouts (one undo step): position (paper m), anchor, angle, scale / ratio, name, number, numbering, crop frame (polygon or false), title (false or a title library part), border, pen set, color mode, update mode, layer. The source view of a drawing cannot be changed in Archicad 26 — place a new drawing and delete the old one instead. Returns [{guid, drawing} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
drawingsYesDrawings to change: guid + the fields to set
undoNameNoName of the undo step

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, but the description adds meaningful context beyond them: '(one undo step)' signals reversibility, and the return shape [{guid, drawing} | {error}] discloses per-item partial-failure behavior. It also flags the source-view immutability constraint, which no annotation covers.

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?

Front-loaded with the core action and undo semantics before the field enumeration, and the hard constraint about source views follows immediately. The long run-on field list is dense but mostly earns its place as a scannable overview; a bulleted form would read better.

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 batch mutation tool with no output schema, the description covers return shape, undo behavior, and the key Archicad 26 limitation. It omits the array cap (maxItems 200) and any permission/round-trip notes, minor gaps given the rich 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%, so the schema already fully documents guid, position, anchor, scale/ratio, frame, title, and the rest. The description's field list adds a quick orientation but no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb (Changes) and resource (drawings already placed on layouts) and then enumerates the exact properties that can be modified. This lets an agent clearly separate it from siblings like place_drawing, delete_drawings, and update_drawings 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 Guidelines4/5

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

Establishes the when (drawings already placed) and gives an explicit when-not plus fallback: 'The source view of a drawing cannot be changed in Archicad 26 — place a new drawing and delete the old one instead.' It routes the agent to place_drawing/delete_drawings for that case, though it doesn't spell out the contrast with update_drawings.

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

modify_elementsModify elementsA
DestructiveIdempotent

Changes fields of existing elements in one undo step. Each item is {guid, ...fields to change}; the field names are the same as the type's create_* tool (e.g. a wall: height, thickness, begin, end, composite; any element: layer, storyIndex, renovationStatus, elementId). Only the given fields change. Returns [{guid} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesPatches: {guid, field: newValue, ...}
undoNameNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=true, so the safety profile is covered. The description adds real value beyond that: 'one undo step' (atomicity), 'Only the given fields change' (partial-patch semantics that support the idempotency claim), and a partial-success return shape '[{guid} | {error}]'. These are exactly the behaviors annotations cannot express.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the core action, then input format, then return format. No filler; every clause carries information.

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 mutation tool with no output schema, the description covers the essential semantics: what changes, what doesn't, atomicity, and return shape. Minor gaps remain (undoName's role, how errors are keyed, whether nonexistent GUIDs fail the whole batch), but nothing critical for correct invocation is missing.

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 coverage is only 50% (undoName is undocumented, and the element item schema only describes guid while allowing arbitrary additionalProperties). The description compensates by explaining the patch object shape, that only listed fields change, and by enumerating concrete field names (height, thickness, begin, end, composite, layer, storyIndex, renovationStatus, elementId). This meaningfully exceeds what the schema conveys.

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?

States a specific verb ('Changes fields') and resource ('existing elements'), plus the scoping detail that all changes land in one undo step. An agent can immediately distinguish this generic bulk-modifier from the type-specific siblings like modify_walls, modify_slabs, and modify_columns.

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?

The description explains the input convention (field names mirror the type's create_* tool) which is genuinely useful, but it never states when to prefer this tool over the per-type modify_* siblings or set_property_values. Usage is implied rather than directed.

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

modify_meshesModify meshesA
DestructiveIdempotent

Changes existing meshes: polygon with point heights (replaces the outline incl. holes), levelLines ([] removes them), level, skirt, skirtLevel, ridges, building material, surfaces, floor plan attributes. Fields as in create_meshes. Only the given fields change; the others keep their values. Each item must be an element of this type (checked first; other items still run). Returns [{guid} | {error}] in input order, one undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
meshesYesPatches {guid, ...fields to change}
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (destructive=true, idempotent=true), the description discloses critical behavior: partial-update semantics, replacement semantics (polygon replaces the whole outline incl. holes; [] removes levelLines), per-item error isolation ('checked first; other items still run'), the return shape [{guid}|{error}] in input order, and that the call is one undo step. This is rich operational context an agent needs before calling a destructive tool.

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?

Front-loaded with the action, followed by field enumeration, then behavioral rules and return format. Every sentence carries operational weight, though the inline field list is somewhat dense and partly duplicates the schema's enumerated properties.

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 many-parameter mutation tool with no output schema, the description supplies exactly the missing pieces: partial-update behavior, destructive replace/remove semantics, error handling, return format, and undo scope. Nothing essential for correct invocation is left unstated.

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 coverage is already 100%, so the baseline is 3, but the description adds genuine value beyond the schema by spelling out the destructive replacement/removal semantics of polygon and levelLines and cross-referencing create_meshes for field definitions. It doesn't restate every parameter's format, which is fine given 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 opens with a specific verb+resource ('Changes existing meshes') and enumerates the affected fields, making it unmistakable against siblings like create_meshes or modify_elements. An agent can tell this patches mesh elements 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 Guidelines4/5

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

It conveys clear usage context: apply field patches to existing meshes, with partial-update semantics ('Only the given fields change; the others keep their values'). It does not explicitly name the alternative (create_meshes for new meshes) or when-not to use it, so it stops short of full routing guidance.

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

modify_morphsModify morphsA
DestructiveIdempotent

Changes existing morphs in one undo step: replace the whole body (box / extrusion / mesh — e.g. edit the output of get_morph_geometry and send it back), move it (offset {x,y,z}, level), set every face's surface (faceSurface) or the default surface, building material, body/edge type, shadows and floor plan display. Only the given fields change. Returns [{guid} | {error}] in input order.

ParametersJSON Schema
NameRequiredDescriptionDefault
morphsYesMorph patches
undoNameNoName of the undo step shown in Archicad

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=true, but the description adds crucial behavioral detail beyond them: that box/extrusion/mesh completely replaces the body, that only given fields change (partial update), that all changes occur in one undo step, and the exact return format ([{guid} | {error}] in input order). This covers what gets destroyed and how failures are surfaced.

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?

Front-loaded with the core action and undo-step behavior, followed by a dense but structured list of capabilities and a concise return-format sentence. The first sentence is long and could be broken up, but every clause adds useful information with no 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?

Given the extremely rich input schema (100% description coverage) and safety annotations, the description supplies what structured data cannot: partial-update semantics, whole-body replacement behavior, undo-step granularity, and return format. Nothing critical for correct invocation is missing, and no output schema exists to require further explanation.

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%, so the schema already documents every parameter thoroughly. The description groups some parameters conceptually (offset, level, faceSurface, buildingMaterial, etc.) but adds no syntax or semantic detail beyond what the schema provides. Baseline 3 is appropriate when the schema does all the heavy lifting.

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?

States a specific verb ('Changes') and resource ('existing morphs'), enumerates the scope of changes, and explicitly references the sibling tool get_morph_geometry for round-tripping geometry. An agent can clearly distinguish this from create_morphs or get_morph_geometry without inspecting schemas.

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?

Provides clear context: modify existing morphs in one undo step, with a concrete usage pattern (edit output of get_morph_geometry and send it back). However, it does not explicitly state when-not to use it or name alternatives (e.g., modify_elements for generic elements), so it falls short of full when/when-not/alternatives guidance.

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

modify_openingsModify windows, doors, skylights, openingsA
DestructiveIdempotent

Changes existing windows, doors, skylights and Opening-tool openings in one undo step. Each item is {guid, ...fields to change} with the same field names as create_windows / create_doors / create_skylights / create_openings (e.g. move a window: position; resize: width/height; swap the library part: libraryPart; GDL: gdlParams; flip: flipped / mirrored). Openings keep their anchorAltitude when anchor/height change — pass bottomElevation to keep the bottom edge instead. The host (wall / roof / owner) cannot be changed — delete and recreate instead. Returns [{guid} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
openingsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover safety (destructive=true, idempotent=true) but the description adds what they cannot: the whole call is one undo step, per-item return values are '{guid} | {error}' implying partial success, anchorAltitude is preserved when anchor/height change unless bottomElevation is passed, and libraryPart swaps reset GDL params. That is substantive behavioral context beyond the structured fields.

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

Conciseness5/5

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

Front-loaded with the verb and scope, then patch shape, field examples, the two subtle semantics (anchor altitude, immutable host), and the return shape. Every sentence carries distinct information with no 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 destructive batch mutation with no output schema, the description supplies the return shape, the failure shape, the transactional scope, and the key constraint (host is immutable). An agent has everything needed to call it correctly and interpret the result.

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 nested schema already documents most fields, but the description adds cross-references the schema lacks: field names mirror the create_* tools, and it maps intents to fields (position to move, width/height to resize, libraryPart to swap, gdlParams for GDL, flipped/mirrored). The anchorAltitude vs bottomElevation interaction is also new meaning not in 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?

States a specific verb and resource ('Changes existing windows, doors, skylights and Opening-tool openings') and frames the operation as a patch rather than a recreate. It is clearly distinguishable from the create_windows / create_doors / create_skylights / create_openings siblings it names.

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?

Gives a strong when-not rule with an alternative: the host wall/roof cannot be changed, so 'delete and recreate instead'. It also explains the patch contract (guid + only the fields to change) and the one-undo-step batching. It does not, however, route the agent between this tool and generic siblings like modify_elements or change_library_part.

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

modify_pensModify pensA
DestructiveIdempotent

Changes pen colors, weights and descriptions (pens cannot be created: there are always 255). Without penTable the pens in effect in the model are changed; with penTable a stored pen set is edited (it does not become active). Read the current pens with get_attributes {type: 'Pen'} or {type: 'PenTable', detailed: true}. Returns {results: [{index, color, width} | {error}], activePenTable | penTable}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pensYes[{index 1-255, color?: '#RRGGBB', width?: mm on paper, description?}]
penTableNoPen set (PenTable attribute) to edit instead of the active pens
undoNameNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds real behavioral context beyond that: pens are fixed at 255 and cannot be created, and editing via penTable does not make that set active. These side-effect details are valuable and non-obvious.

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?

Front-loaded with the core action followed by the mode semantics, read reference and return shape. It is dense and somewhat run-on, but every clause carries information an agent needs, so little is wasted.

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?

With no output schema, the description carries the return format ({results, activePenTable | penTable}) itself, plus mode behavior and the read alternative. For a mutation tool whose annotations already cover the safety profile, nothing essential for correct invocation is missing.

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 coverage is 67%, but the description meaningfully explains the pens-vs-penTable distinction and its effect on scope, which the schema's terse penTable note only hints at. undoName remains undocumented, keeping it from a 5.

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?

States a specific verb and resource ('Changes pen colors, weights and descriptions') and immediately disambiguates by clarifying pens cannot be created. It also names the read counterpart get_attributes, letting an agent distinguish this from sibling attribute tools 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?

Explains the two operating modes concretely: without penTable the active model pens are changed, with penTable a stored set is edited. It also points to get_attributes for reading current state. There is no explicit exclusion list, but the mode selection guidance is clear enough to route usage.

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

modify_property_definitionsModify property definitionsA
DestructiveIdempotent

Changes user-defined properties in one undo step: rename, move to another group, description, option set options (replace the list — unchanged options keep their identity so element values survive — or add/remove/rename options), default value or expressions, and availability (replace, add, remove, or add the classifications of given elements). Built-in properties and the value type cannot be changed (delete and recreate instead). Returns {results: [{guid, name, group, type, availabilityCount, warnings?} | {error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step shown in Archicad
definitionsYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds significant context beyond annotations: one undo step, option identity preservation so element values survive, constraints on built-in/value type, and the exact return shape. Annotations declare destructive/idempotent/readOnly=false; description aligns and elaborates.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action, then constraints, then return shape. Dense but no wasted words.

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 complex, destructive mutation tool with no output schema, the description covers operations, constraints, and return format. It omits minor schema-level details like maximum counts but is otherwise complete.

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 coverage is 50%, so the description helps by summarizing the modifiable aspects (rename, group, description, options, defaults, availability) and clarifying availability modes. However, undoName is not mentioned and the schema already describes most parameters in detail, so it adds only moderate value.

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?

States a specific verb and resource: 'Changes user-defined properties', and enumerates the aspects that can be modified. It does not name sibling tools like create_property_definitions or delete_property_definitions, so it only partially distinguishes from siblings, but the scope is clear.

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?

Provides a clear when-not and alternative: built-in properties and value type cannot be changed, so delete and recreate instead. It does not explicitly state positive when-to-use versus create_property_definitions, but the context is clear.

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

modify_property_groupsModify property groupsA
DestructiveIdempotent

Renames user-defined property groups and/or changes their description (built-in groups are read-only). One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsYes
undoNameNoName of the undo step shown in Archicad

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds two pieces of genuinely new context: built-in groups are read-only (a hard precondition) and the change costs one undo step, which is not derivable from annotations.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action and the read-only caveat immediately after. No filler.

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 mutation tool with no output schema and annotations covering safety, the description supplies the key precondition and undo semantics. It is slightly thin on batch behavior (arrays of up to 500 groups, partial-failure handling), but nothing essential is missing for a correct call.

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 coverage is 50%. The description mentions the rename and description fields, which maps to the two item-level properties, but says nothing about how a group is identified (current name or GUID), the undoName parameter, or the batch array (maxItems 500). It only partially compensates for the coverage gap.

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?

States a specific verb (renames) plus resource (user-defined property groups) and the exact field being changed (description). It also distinguishes itself from sibling property tools by noting built-in groups are read-only, so an agent can tell it apart from create_property_groups/delete_property_groups.

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 'renames ... and/or changes their description', but there is no explicit when-to-use guidance and no routing to the sibling modify_property_definitions for the definition-level equivalent. Adequate but leaves selection partly to inference.

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

modify_railingsModify railingsA
DestructiveIdempotent

Changes existing railings in one undo step: height of all segments, bottom offset, reference line side, segment offset, post offset, pens. The path cannot be changed (move/rotate or recreate). Returns [{guid} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
railingsYesRailing patches
undoNameNoName of the undo step shown in Archicad

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructive/idempotent/not-read-only, so the safety profile is partially covered. The description adds real value beyond them: it discloses the one-undo-step batching, the path-immutability constraint, and the return shape [{guid} | {error}], which the agent cannot get from structured fields since there is no output 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?

Two sentences that are front-loaded with the core action and constraint. The property enumeration is dense but earns its place as a quick capability summary; no filler.

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 destructive mutation tool with full annotation coverage and no output schema, the description supplies the crucial extras: undo behavior, the path-immutability limitation, and the return format. Minor gap is the lack of any note on batch failure semantics (partial success vs all-or-nothing per item).

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%, so the schema fully documents all parameters; baseline is 3. The description names a subset of editable fields (height, bottom offset, reference line side, offsets, pens), which reinforces but does not extend the schema.

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?

States a specific verb and resource ("Changes existing railings") and enumerates the modifiable properties, so the agent understands it is a mutation, not a creation or query. It does not name sibling tools (create_railings, modify_elements) to differentiate, but the scope is unambiguous.

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?

The clause "The path cannot be changed (move/rotate or recreate)" implicitly routes path edits to other tools, which is useful. However, there is no explicit when-to-use framing, no prerequisites, and no direct naming of alternative tools.

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

modify_roofsModify roofsA
DestructiveIdempotent

Changes existing roofs (the class SinglePlane/MultiPlane cannot change). SinglePlane: polygon, pivotLine, slopeAngle, risesToLeft, edges. MultiPlane: pivotPolygon, slopeAngle, levels, eavesOverhang, pivotEdges (per-plane pitch / gable end / overhang; edge indices of the stored pivot polygon as returned by get_element_details). Both: level, thickness, structure, surfaces, edge trim, floor plan attributes. Fields as in create_roofs. Only the given fields change; the others keep their values. Each item must be an element of this type (checked first; other items still run). Returns [{guid} | {error}] in input order, one undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
roofsYesPatches {guid, ...fields to change}
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructive/idempotent/not-readonly, and the description goes well beyond them: partial-update semantics, per-item type validation with 'other items still run' error isolation, return shape [{guid} | {error}] in input order, and a single undo step. This is exactly the behavioral context an agent needs for a batch mutation.

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?

Single dense paragraph, purpose front-loaded in the first clause, no filler sentences. It is long, but proportionate to an enormous schema and a class-scoped tool; the density is justified rather than padded.

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 very complex mutation tool with 100% schema coverage and no output schema, the description covers class-specific fields, patch semantics, validation behavior, error/return handling, and undo scoping. Nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so the schema already documents every field. The description still adds non-derivable meaning: which fields belong to which roof class, that edge indices refer to the stored pivot polygon 'as returned by get_element_details', and that field syntax matches create_roofs.

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?

States a specific verb+resource ('Changes existing roofs') and immediately distinguishes behavior by class (SinglePlane vs MultiPlane fields), plus names the create_roofs sibling as the field reference. An agent can tell this apart from create_roofs and modify_elements 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?

Clearly conveys patch semantics ('Only the given fields change; the others keep their values') and preconditions ('Each item must be an element of this type'). It does not explicitly say when to prefer this over create_roofs or the generic modify_elements, but the context is clear enough to select the tool.

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

modify_shellsModify shellsA
DestructiveIdempotent

Changes existing shells (the class Extruded/Revolved/Ruled cannot change): profile / profile2 / closedProfile, placement (begin, extrusion, axisOrigin, profileRotation, basePlane, plane1/plane2), angles, thickness, flipped, structure, surfaces, floor plan attributes. Fields as in create_shells. Only the given fields change; the others keep their values. Each item must be an element of this type (checked first; other items still run). Returns [{guid} | {error}] in input order, one undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
shellsYesPatches {guid, ...fields to change}
undoNameNoName of the undo step shown in Archicad

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=true, idempotentHint=true. The description adds meaningful context beyond that: the type restriction (only Extruded/Revolved/Ruled cannot change class; a subset cannot change class), patch semantics ("only the given fields change"), per-item continuation on error, return shape ordered by input, and that mutations are in one undo step. These are valuable behavioral details the annotations do not capture.

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?

Compact, front-loaded with the verb and type constraint, and then patch and return semantics. Every sentence carries content, though the long field enumeration could be tighter.

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 mutation tool with no output schema, the description covers the important behavioral contracts: partial update, per-item error isolation, ordered return, and undo grouping. It lacks explicit permission/auth notes but is strong given the schema's richness.

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%, so the schema already documents all parameters. The description lists some fields (profile, placement, angles, thickness, etc.) and cross-references create_shells for full field semantics, which is helpful but does not add syntax or format details 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?

States a specific verb+resource ("Changes existing shells") and immediately names the sibling create_shells as the source of the field semantics. It is easy to differentiate from sibling modify_elements or create_shells.

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?

The description notes fields follow create_shells, but does not state when to use modify_elements vs modify_shells, or when not to (e.g., can only modify existing shells, not convert types). Context is implied rather than explicit.

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

modify_slabsModify slabsA
DestructiveIdempotent

Changes existing slabs: polygon (outline incl. holes — replaces the shape and resets per-edge data), thickness, level, referencePlane, structure, surfaces, edge trims (all edges or per edge via 'edges'), floor plan attributes, layer, story, renovation status, element ID. Fields as in create_slabs. Only the given fields change; the others keep their values. Each item must be an element of this type (checked first; other items still run). Returns [{guid} | {error}] in input order, one undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
slabsYesPatches {guid, ...fields to change}
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that a new polygon replaces the whole shape and resets per-edge data, that unspecified fields are preserved, that invalid element types are rejected while valid items still run, and the return shape ([{guid}|{error}] in input order) plus that all edits form one undo step. This is exactly the destructive/mutation context the agent needs.

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?

Front-loads the core action and keeps everything in a tight block. The long field enumeration is dense and partially overlaps the already-complete schema, but it earns its place as a scannable overview of what is modifiable.

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 complex mutation tool with annotations present and no output schema, the description covers what changes, what is preserved, validation/error behavior, return format and undo grouping. An agent has everything needed to call it correctly.

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 100% schema description coverage the baseline is 3, but the description adds real meaning: it flags that polygon replaces the shape and resets per-edge data, that edge trims can be set slab-wide or per-edge via 'edges', and cross-references create_slabs for field definitions. The remaining parameter detail lives in the schema, so a 4 rather than 5.

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?

States a specific verb ('Changes') and resource ('existing slabs') and enumerates the exact field families it can modify (polygon, thickness, level, edge trims, surfaces, renovation status, etc.). An agent can immediately tell this apart from create_slabs, modify_roofs or modify_elements.

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?

Establishes clear context: it operates on existing slabs, only the supplied fields change, and 'Fields as in create_slabs' points to the companion tool for field semantics. It also states the precondition that each item must be a slab (checked first, others still run). However, it names no explicit alternative (e.g. the generic modify_elements) or when-not-to-use condition, so it falls short of a 5.

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

modify_stairsModify stairsA
DestructiveIdempotent

Changes existing stairs in one undo step: height / top link, width, riser count/height, tread depth and locks, baseline/walking line position, direction, numbering, tread/riser thickness, rule checks. The baseline cannot be changed (move/rotate or recreate). Returns [{guid} | {error}].

ParametersJSON Schema
NameRequiredDescriptionDefault
stairsYesStair patches
undoNameNoName of the undo step shown in Archicad

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context: the change happens "in one undo step", the baseline is immutable, and the return shape is "[{guid} | {error}]". It does not explain permission/teamwork reservation needs, keeping it from a 5.

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?

Two tightly packed sentences, front-loaded with the primary purpose and ending with the return shape. The long field enumeration partially restates schema properties, which is mild redundancy, but nothing is wasted at the sentence level.

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?

No output schema exists, yet the description still discloses the return format [{guid} | {error}]. Combined with the rich annotations, the one-undo-step transaction scope, and the immutable-baseline constraint, an agent has everything needed to call it correctly.

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% and the schema documents each field in depth (e.g. height/riserCount/riserHeight coupling, treadDepthLocked). The description's field list largely mirrors what the schema already provides, adding only a coupled mention of "height / top link" and "locks". Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb+resource ("Changes existing stairs") and enumerates the editable properties (height, width, riser count/height, tread depth, direction, numbering, thickness, rule checks), which is far beyond a tautology. It does not explicitly distinguish itself from sibling modifiers like modify_elements or create_stairs, but the resource is unambiguous.

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?

Provides a clear when-not with alternatives: the baseline cannot be changed, so move/rotate or recreate instead. It also implies use for edits to existing stairs vs create_stairs. It stops short of naming modify_elements as an alternative for the shared fields, so not a full 5.

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

modify_storiesModify storiesA
DestructiveIdempotent

Changes existing stories, patches applied in order: rename, change level (elevation above Project Zero; only this story moves unless moveStoriesAbove), change height to the next story (the stories above move), toggle 'show on sections'. Only the given fields change. Elements keep their position relative to their home story, so changing levels/heights moves them vertically (and changes the height of walls/columns linked to a moved story). Returns {results: [{story, movedStories?} | {error}], stories: [all stories after the change]}; a failed patch is reverted.

ParametersJSON Schema
NameRequiredDescriptionDefault
storiesYesPatches: {story, ...fields to change}

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructive, idempotent, non-read-only. The description adds real value beyond that: patches applied in order, cascading movement of elements with their home story, wall/column height changes, and crucially atomicity ('a failed patch is reverted'). It stops short of permissions or limits, but the cascade and revert details are substantive.

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?

Front-loaded with the core verb and then the ordered patch list. The prose is dense with parentheticals but every clause carries behavioral information; no filler sentences.

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?

No output schema exists, and the description fills that gap by documenting the return shape (results per patch plus all stories) and the revert-on-failure guarantee. Given the nested patch complexity, this is complete enough for an agent to invoke safely.

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 coverage is 100% and field descriptions are already rich, so the schema carries most of the load (baseline 3). The description adds ordering semantics for the patches and the level/height interaction, which the schema states per-field but not as a sequence.

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?

States a specific verb and resource ('Changes existing stories') and enumerates exactly which mutations it performs (rename, level, height, show on sections). This cleanly separates it from the create/delete/get stories siblings without needing to name them.

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 detailed patch semantics, but there is no explicit routing guidance such as when to prefer create_stories or delete_stories, or prerequisites. 'Only the given fields change' hints at partial-update intent but doesn't name an alternative.

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

modify_zonesModify zonesA
DestructiveIdempotent

Changes existing zones in one undo step: name, number, category, height/topLinkedStory/bottomOffset, area reduction, stamp (position, angle, library part, GDL parameters), fill/contour/surface, layer/story/elementId. Geometry: 'polygon' sets a new outline and makes the zone manual; 'referencePoint' makes it automatic around a new point; automatic:false freezes the current outline. Only the given fields change. Non-zone GUIDs are rejected per item. Returns {results: [{guid} | {guid?, error}]} in input order. Use get_zones / get_element_details to read current values.

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesYesPatches: {guid, field: newValue, ...}

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, destructive=true, idempotent=true): it discloses 'in one undo step', 'Only the given fields change' (patch semantics), per-item rejection behavior, the exact return shape, and the critical side effect that setting referencePoint RE-CREATES the zone with a NEW GUID. These are exactly the destructive/identity traits an agent must know before committing.

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?

Dense but well front-loaded: the mutation+atomicity claim comes first, then geometry semantics, then rejection/return behavior, then the read-first pointer. It is a single long paragraph and could be broken into bullet structure, but every sentence carries information.

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 1000-item patch tool with a deep nested schema, the description completes the picture by stating return shape ({results: [{guid}|{guid?,error}]} in input order) and the referencePoint GUID-change side effect. Missing only the distinction from the sibling update_zones, which keeps it from a 5.

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%, so the schema already documents the patch fields, geometry modes and return contract in depth. The description only restates a few of these (polygon -> manual, referencePoint -> automatic, automatic:false freezes outline) without adding syntax the schema lacks, matching the baseline for high-coverage schemas.

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?

States a specific verb+resource ('Changes existing zones') and enumerates the mutable field families, so an agent immediately understands scope. It does not, however, differentiate itself from the sibling 'update_zones' or clarify why two zone-mutation tools exist, which prevents a 5.

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?

The description supplies a read-first guideline ('Use get_zones / get_element_details to read current values') and a failure-mode note ('Non-zone GUIDs are rejected per item'). But it never states when to use this vs update_zones or create_zones, and gives no exclusions, so usage is only implied.

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

move_attributes_to_folderMove attributes to folderA
DestructiveIdempotent

Moves attributes and/or attribute folders of one type into a target folder (created beforehand with create_attribute_folders; [] = root). Attributes are given by GUID or exact localized name. Output: {ok, target, moved: {attributes, folders}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesTarget folder: path (['A','B'] / 'A/B', [] = root) or {guid}
foldersNoFolders to move (with their content)
attributesNoAttributes to move
attributeTypeYesAttribute type: BuildingMaterial, Composite, Fill, Layer, LayerCombination, Line, PenTable, Profile, Surface or ZoneCategory

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds useful context beyond that: the prerequisite folder creation step, the root shorthand ([] = root), and the exact return shape {ok, target, moved:{attributes,folders}}. It does not, however, spell out that moved items are removed from their prior location.

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

Conciseness5/5

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

A single dense sentence with the action front-loaded, followed by the prerequisite and the output contract. Every clause (folder path forms, identifier forms, output shape) earns its place.

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?

Although no output schema exists, the description inlines the return structure {ok, target, moved}, names the prerequisite creation tool, and clarifies root targeting. For a 4-parameter mutation tool this leaves nothing an agent needs missing.

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% and the schema already documents target/folders/attributes forms, GUID patterns, index lookup, and the attributeType enum. The description only adds minor clarification (GUID or exact localized name, [] = root), so the baseline of 3 applies.

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?

States a specific verb (moves) and resource (attributes and/or attribute folders of one type) into a target folder, and explicitly references the sibling create_attribute_folders for folder creation. An agent can distinguish this from move_navigator_item, move_elements, and modify_attributes without opening schemas.

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?

Gives clear prerequisites: the target folder must be created beforehand with create_attribute_folders, and [] denotes root. It lacks explicit 'when not to use' guidance (e.g. vs modify_attributes for renaming instead of relocating), so it stops short of full routing coverage.

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

move_elementsMove elementsA
Destructive

Moves elements of ANY type (walls, slabs, objects, zones, lines, dimensions, ...) by a displacement vector, like Edit > Move > Drag. Pass elements + vector to move them all by the same offset, or moves to move different sets by different vectors (all in one undo step). A z component moves model elements vertically (use elevate_elements for pure vertical moves). Windows/doors move along their host wall; connected dimensions and labels follow automatically. Returns {results: [{guid, newGuid?, warning?} | {guid, error}], warnings?} in input order (a 'warning' on an item means Archicad may have ignored it); with copy=true the copy-style result {results: [{guid, copies: [new GUIDs]}], createdCount, additionalCreated?}. Locked elements, elements on locked/hidden layers, hotlinked elements and elements outside your Teamwork workspace are reported with an actionable error instead of being edited. With moves the result is {operations: []}.

ParametersJSON Schema
NameRequiredDescriptionDefault
movesNoAlternative to elements+vector: several independent moves [{elements, vector}] in one undo step
vectorNoDisplacement applied to `elements`, in meters
elementsNoElements to move (together with `vector`)
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description goes well beyond that: it discloses the undo-step grouping, group-suspension semantics, which elements are skipped with actionable errors (locked, hidden layers, hotlinked, outside Teamwork workspace), and the copy=true variant. The only gap is that the `copy` parameter appears in the description but not in the schema, which an agent cannot act on structurally.

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?

Front-loaded with the core action and the two usage modes, then densely packed with behavioral caveats. Every sentence carries operational information, though the long return-shape enumeration makes it heavier than it needs to be for a description (an output schema would have been a better home).

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?

No output schema exists, and the description fully compensates by documenting both return shapes (per-item results with newGuid/copy/warning/error, and the per-operation wrapper for `moves`). Combined with the nested moves/vector/elements schema, an agent has everything needed to invoke and interpret the call.

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 coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema: the z component is framed as vertical movement with a pointer to elevate_elements, the elements+vector vs moves distinction is spelled out, and the copy=true result shape is described. It stops short of explaining includeGroupMembers in the description, but the schema covers that.

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?

States a specific verb (moves) and resource (elements of ANY type, enumerated: walls, slabs, objects, zones, lines, dimensions) with the exact mechanism (displacement vector). It explicitly distinguishes itself from elevate_elements for pure vertical moves, so an agent can route correctly 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 Guidelines5/5

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

Gives explicit when-to-use guidance: pass `elements`+`vector` for one common offset, or `moves` for independent moves in a single undo step. It also names the alternative for vertical-only movement (elevate_elements) and explains secondary behaviors (windows/doors follow host wall) that affect the choice.

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

move_navigator_itemMove navigator itemA
DestructiveIdempotent

Moves a navigator item (e.g. a view into a View Map folder, a layout into another subset) under parent, as its first child or right after the sibling after. Works inside one tree (View Map / Layout Book). Get ids with get_navigator_tree. The item is read back: output {ok, id, tree, parent, path}.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesItem to move
afterNoInsert after this child of `parent` (default: first position)
parentYesNew parent folder / subset id

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (idempotent, destructive, not read-only), so the bar is lower; the description still adds value by disclosing the read-back shape ({ok, id, tree, parent, path}) in the absence of an output schema, plus positional semantics. It does not explain permission requirements or failure modes, but the additions are meaningful.

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?

Front-loaded with the core action and constraints, no filler sentences. The final sentence carries the return-value info that would otherwise be missing given no output schema, so it earns its place.

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 3-param mutation tool with no output schema, the description covers the operation, scope constraint, id-discovery path, positioning, and return shape. Only minor gaps (permissions, error behavior) remain, and annotations already carry the safety signal.

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% and each parameter is documented in the schema. The description reinforces the ordering behavior of `parent`/`after` (first child vs right after the sibling), but adds little beyond what the schema already states, so baseline 3 applies.

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?

Specific verb+resource (moves a navigator item) with concrete examples (view into View Map folder, layout into a subset) and a stated scope (one tree: View Map / Layout Book). It clearly distinguishes itself from cross-tree siblings like clone_project_map_item_to_view_map.

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?

States the operating constraint (works inside one tree) and routes the agent to get_navigator_tree for obtaining ids. It doesn't explicitly exclude the cross-tree clone alternative, but the 'one tree' framing implies the boundary clearly.

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

new_projectNew projectA
Destructive

Creates a new untitled project, CLOSING the current one: from a template (.tpl path — list installed ones with get_project_info {includeTemplates: true}) or with File > New (reset: true = New & Reset, i.e. default settings). You must decide about unsaved changes: saveFirst: true or discardChanges: true. Returns {created, project}.

ParametersJSON Schema
NameRequiredDescriptionDefault
resetNoWithout template: New & Reset (all settings back to defaults). Default false
templateNoAbsolute path of a .tpl template to start from
saveFirstNoSave the current project in place before continuing (fails for untitled projects: use save_project_as first)
discardChangesNoContinue WITHOUT saving: unsaved changes of the current project are lost. Exactly one of saveFirst / discardChanges must be true

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety bar is partly met. The description adds real value beyond that: it discloses that the current project is closed, that unsaved changes must be resolved (saveFirst vs discardChanges), and even the return shape. It does not restate the untitled-project saveFirst failure, which lives only in 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?

Front-loads the destructive action, then packs templates, reset, the unsaved-changes requirement, and the return shape into a compact passage. Parentheticals are dense but each carries information; slightly heavy but no filler sentences.

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 4-param destructive tool with no output schema, the description covers the side effects, the mutually exclusive save options, and the return value ({created, project}). Nothing essential for a correct call is missing, though edge cases like untitled-project saveFirst failure are left to the 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?

Schema coverage is 100%, so the baseline is 3. The description still adds meaning: it pairs reset with the 'New & Reset' concept, points template at installed .tpl files discoverable via get_project_info, and frames saveFirst/discardChanges as a required either/or decision.

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?

States a specific verb and resource ('Creates a new untitled project') and immediately scopes the side effect ('CLOSING the current one'). This clearly separates it from siblings like open_project, close_project, and save_project_as.

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?

Gives concrete conditions: use a .tpl template, or reset:true for New & Reset, and explicitly routes the agent to get_project_info {includeTemplates: true} to list templates. It also states the unsaved-changes decision that must be made. It does not explicitly contrast with open_project/close_project, so a 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.

open_projectOpen projectA
Destructive

Opens a project file (.pln, .pla archive, .tpl template → untitled project, .bpn backup), CLOSING the current project. You must decide about unsaved changes: saveFirst: true or discardChanges: true. BIMcloud/Teamwork projects cannot be opened by path. Opening can take minutes and Archicad may show dialogs (e.g. missing libraries). Returns {opened, project}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path of the file to open
saveFirstNoSave the current project in place before continuing (fails for untitled projects: use save_project_as first)
discardChangesNoContinue WITHOUT saving: unsaved changes of the current project are lost. Exactly one of saveFirst / discardChanges must be true
archiveLibraryFolderNoFor .pla archives: folder where the embedded library is extracted (optional)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and non-idempotent, but the description adds context they don't cover: the current project is closed, unsaved changes are lost unless handled, opening can take minutes, and Archicad may surface dialogs (e.g. missing libraries). It even documents the return shape.

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

Conciseness5/5

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

Three dense sentences with zero padding, front-loading the destructive close-current-project consequence before the recovery options and the long-running warning.

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 destructive, blocking, dialog-prone operation with no output schema, the description supplies the side effects, the mandatory parameter decision, the path-type semantics, and the return shape — nothing material is missing.

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, but the description adds value the schema lacks: the file-type-to-behavior mapping (archive, template → untitled, backup) attached to `path`, plus reinforcement of the saveFirst/discardChanges mutual exclusion.

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?

States a specific verb (opens) and resource (a project file), enumerates the supported extensions (.pln, .pla, .tpl, .bpn), and clarifies the side effect of closing the current project. An agent can distinguish it from new_project, save_project_as, and close_project without opening any schema.

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

Usage Guidelines5/5

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

Explicitly names when-not (BIMcloud/Teamwork projects cannot be opened by path) and routes the agent to the alternative (use save_project_as first for untitled projects). It also states the mandatory decision between saveFirst and discardChanges.

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

open_viewOpen view / windowA
Idempotent

Brings a window to the front: a floor plan story ({window:'FloorPlan', story}), the 3D window ({window:'3D', projection?}), a section/elevation/interior elevation/detail/worksheet/3D document/layout by name ({window:'Section', name:'A-A'}), by marker element ({element}), by database GUID ({database}) or by Navigator item ({navigatorItem}). Returns {opened, window}. Saved views with their layer/scale settings: go_to_view. To look at the result use capture_view.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName, reference ID or title of the section/elevation/detail/worksheet/layout to open (see list_views; localized)
storyNoFloor plan story to show (index or localized name, see get_stories). Implies window 'FloorPlan'
windowNoWindow to open: 'FloorPlan' (+ story), '3D' (+ projection), or a viewpoint type 'Section' | 'Elevation' | 'InteriorElevation' | 'Detail' | 'Worksheet' | 'Layout' | 'MasterLayout' | 'DocumentFrom3D' (+ name, or the only one of that type)
elementNoGUID of a section (CutPlane), elevation, interior elevation, detail or worksheet MARKER element: opens its viewpoint
databaseNoDatabase GUID of the viewpoint/layout (the 'database' field of list_views / get_current_window)
projectionNo3D window only: switch the projection mode before opening
segmentIndexNoInterior elevation marker only: which segment's view to open (default 0)
navigatorItemNoProject Map / Layout Book / View Map item to open (window only; use go_to_view to also apply a saved view's settings)

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=false). The description adds useful behavioral context beyond them: it states the return shape '{opened, window}', describes the action as bringing a window to the front, and points to go_to_view for saved view settings and capture_view to inspect the result. It does not detail permissions or no-argument behavior, but it adds meaningful context over the annotations.

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

Conciseness5/5

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

The description is front-loaded with the core action and then packs the supported parameter patterns, return shape, and sibling alternatives into a single efficient paragraph. Every clause earns its place; there is no filler or repetition.

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?

Given 8 optional parameters, full schema coverage, and no output schema, the description is nearly complete: it explains the return shape and the main invocation patterns, and routes to siblings. The one notable omission is what happens when called with no arguments, which matters because all parameters are optional.

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?

Schema description coverage is 100%, so the baseline is 3, but the description adds significant cross-parameter meaning: it maps window types to required companions ('FloorPlan' + story, '3D' + projection, 'Section' + name, marker element, database GUID, navigator item). This helps an agent choose the correct parameter combination rather than relying on individual field descriptions alone.

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?

States a specific verb+resource: bringing a window to the front. It names the exact window types and parameter combinations, and explicitly distinguishes itself from go_to_view and capture_view. An agent can tell what it does and which sibling to use instead.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'Saved views with their layer/scale settings: go_to_view' identifies when to use an alternative, and 'To look at the result use capture_view' names the follow-up tool. The description also implies the core use case for open_view itself.

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

place_drawingPlace views on layoutsA

Places views as drawings on layouts (one undo step for the batch). Each item: layout + source ('view' navigator guid — preferably a View Map view from get_databases {includeViews: true} — or 'database', e.g. a section databaseRef, or 'FloorPlan' + storyIndex), then optional position (paper meters from the sheet's bottom-left corner, default the sheet center), anchor, scale (100 = 1:100) or ratio, angle, name / number, crop frame, title, border, pen set, update mode, layer. The first target layout is brought to the front unless restoreWindow. Returns [{guid, layout, source, drawing: {position, bounds, scale, status ...}} | {error}] in input order. Create layouts with create_layout.

ParametersJSON Schema
NameRequiredDescriptionDefault
drawingsYesDrawings to place
undoNameNoName of the undo step
restoreWindowNoReturn to the previous front window afterwards (default false: the layout stays in front)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare write (readOnlyHint=false), non-idempotent, non-destructive. The description adds real behavioral context beyond that: the whole batch collapses into a single undo step, the first target layout is brought to the front unless restoreWindow, and results are returned in input order. Permissions/rate limits are not covered, keeping it off a 5.

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?

Front-loads purpose then item shape then return format in one dense paragraph with no filler sentences. It is a long single block, slightly over-packed for easy scanning, which keeps it from a 5.

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 no output schema, the description carries the return burden and does so ('Returns [{guid, layout, source, drawing: {...}} | {error}] in input order'), and it covers source options, defaults, and destination management. Missing only error/permission caveats, so it is nearly complete.

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 coverage is already 100%, so the baseline is 3. The description adds a useful condensed walkthrough of the nested item (source, position, anchor, scale vs ratio, title, pen set, update mode) and routing hints like 'preferably a View Map view', which help an agent grasp the composite structure at a glance, though much of it mirrors 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?

States a specific verb ('Places') plus resource ('views as drawings on layouts') and clarifies batch semantics ('one undo step for the batch'). An agent can distinguish it from siblings like modify_drawings, get_layout_drawings, and create_layout without opening any 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?

Provides concrete routing context: source views should preferably come from 'a View Map view from get_databases {includeViews: true}', and target layouts 'Create layouts with create_layout'. It lacks an explicit when-to-use-this-vs-modify_drawings exclusion, so it stops short of the top band.

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

publish_publisher_setPublish a publisher setA

Runs File > Publish for one publisher set (list them with get_publisher_sets; names are localized, e.g. '2 - Макеты'). The set's own formats apply (PDF, DWG, DXF, IFC, images, BIMx ... as configured in Archicad's Publisher). outputPath overrides the set's folder. Pass 'items' (publisher item navigator guids from get_publisher_sets {name}) to publish only those. Returns {published, outputFolder, files: [{path, sizeBytes}] written during the run, durationSeconds}. Can take minutes; Archicad is busy meanwhile.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPublisher set name (exact, then case-insensitive)
indexNoAlternatively the 0-based index of the set
itemsNoPublish only these items of the set (navigator item guids)
outputPathNoAbsolute output FOLDER (default: the set's own path), e.g. /private/tmp/claude-connector-tests/publish
createFoldersNoCreate the output folder when missing (default false)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false), and the description adds genuinely new behavioral context: the run can take minutes and Archicad is busy meanwhile, plus the exact return shape ({published, outputFolder, files, durationSeconds}). The listed formats (PDF, DWG, DXF, IFC, BIMx) also clarify what the operation produces.

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?

Dense and front-loaded, leading with the core action and following with the prerequisite, parameter caveats, and return shape in that order. It is longer than a minimal definition but nearly every clause carries information; the parenthetical format list is the only slightly expendable part.

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?

With no output schema, the description supplies the return structure and a duration/warning note. Combined with full parameter coverage and clear routing to the sibling that enumerates sets, an agent has everything needed to invoke it correctly.

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 coverage is 100%, so parameters are already documented, but the description still adds value: it warns that set names are localized (with a concrete example) and clarifies that 'items' are publisher item navigator guids obtained from get_publisher_sets {name}. That sourcing detail is not in 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?

States a specific verb+resource ('Runs File > Publish for one publisher set') and distinguishes itself from the sibling get_publisher_sets, which it explicitly names as the way to enumerate sets. An agent can identify the operation and its scope 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 Guidelines4/5

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

Gives clear context: list sets with get_publisher_sets first, names are localized, outputPath overrides the set's folder, and 'items' narrows the run to specific navigator guids. It does not state exclusions or when not to use it, so it stops just short of a 5.

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

quit_archicadQuit ArchicadA
Destructive

Quits Archicad. Without saveFirst: true, unsaved changes are DISCARDED. After quitting no tool works until Archicad is started again. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true
saveFirstNoSave the project in place first (fails — and does not quit — for untitled/read-only projects)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already signal destructiveHint=true, but the description adds critical specifics: unsaved changes are discarded without saveFirst, no tool works after quitting, and confirm: true is required. These details go well beyond what the annotations convey.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and the most important warning. Every sentence earns its place without redundancy.

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 simple quit tool with annotations and a fully described schema, the description covers the destructive consequence, parameter requirement, and post-quit state. Nothing an agent needs in order to call it correctly is missing.

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 baseline is 3, but the description clarifies the default behavior of saveFirst (omitting it discards changes), which the schema does not explicitly state. This adds meaningful semantic value beyond the formal parameter descriptions.

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?

States a specific verb ('Quits') and resource ('Archicad'), clearly distinguishing it from siblings like close_project or save_project. An agent can identify the action 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?

Implies usage context (ending the Archicad session) and warns of consequences, but does not explicitly compare to alternatives such as close_project or save_project. No when-not-to-use guidance is provided.

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

rebuild_modelRebuild / redrawA
Idempotent

Refreshes the current (front) window: 'Rebuild' (default, View > Refresh > Rebuild), 'Regenerate' (Rebuild & Regenerate: recomputes all element geometry — use after library/parameter changes or when the display looks stale) or 'Redraw' (repaint only).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault Rebuild

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, idempotent=true, destructive=false), and the description adds meaningful behavior beyond them: 'Regenerate' recomputes all element geometry while 'Redraw' only repaints. That distinction is exactly what an agent needs and is not derivable from the enum alone.

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

Conciseness5/5

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

A single sentence, front-loaded with the core action, with the mode nuances parenthetically folded in. No filler; every clause earns its place.

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 zero-required-param refresh tool with no output schema, the description covers what the tool does, the effect of each mode, and when to use the heavier option. Return behavior is not described, but nothing critical for correct invocation is missing.

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 coverage is 100% but the schema only lists the enum values with 'Default Rebuild'. The description adds real semantics for each value — full geometry recomputation vs. repaint — which the schema does not convey.

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?

States a specific verb and resource ('Refreshes the current (front) window') and then names and disambiguates all three distinct modes. No sibling tool covers view refresh, so the agent can identify this immediately.

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?

Explicitly tells the agent when to pick 'Regenerate' ('use after library/parameter changes or when the display looks stale') and distinguishes 'Redraw' as repaint-only, which is real selection guidance. It does not state when NOT to use the tool or name any alternative, keeping it short of a 5.

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

redoRedoA
Destructive

Redos the last undone Archicad operation(s), exactly like Edit > Redo. Every connector create/modify tool call is ONE undo step (its name ends with '(Claude)'), so steps: 1 reverts one whole tool call. The Archicad 26 API has no redo function: this triggers Archicad's Edit menu item (macOS). Returns {performed, requested, redone (menu titles, e.g. 'Redo Create walls (Claude)'), next}. dryRun: true only reports what would be redone next. Note: undo also reverts changes made by the user or other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoPerform even if Archicad reports the menu item as disabled (use only if the state looks stale)
stepsNoNumber of steps (default 1)
dryRunNoOnly report the current Edit > Redo menu title/enabled state and the last run

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: discloses that the Archicad 26 API has no redo function so it drives the macOS Edit menu item, describes the return shape (performed, requested, redone, next), explains that dryRun only reports, and warns that undo (and thus redo state) can be affected by the user or other tools. This is exactly the extra-behavior disclosure the annotations cannot carry.

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?

Front-loads purpose and the key semantic ('one undo step'), then layers caveats. It is somewhat dense with parenthetical asides, but every sentence carries information; no obvious filler.

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?

No output schema exists, yet the description covers the return fields and the platform/menu-invocation caveat, which is the main risk an agent needs to know. It does not state behavior when the redo stack is empty, but 'performed'/'next' imply it; otherwise complete for this tool.

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 coverage is 100% (baseline 3), and the description goes further by defining what a 'step' means in terms of connector tool calls and clarifying dryRun's reporting-only behavior. 'force' is left to the schema, which covers it adequately.

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?

Specific verb+resource ('Redos the last undone Archicad operation(s)') anchored to a familiar UI equivalent (Edit > Redo), and it is immediately distinguishable from the sibling 'undo'. An agent can tell exactly what it does 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 Guidelines4/5

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

Clear context for use: redo the last undone operations, with the 'steps' rationale spelled out (each connector tool call = one undo step). It also clarifies dryRun for inspection. It stops short of an explicit when/when-not contrast with 'undo', but the surrounding context makes usage unambiguous.

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

release_elementsRelease (Teamwork)A
DestructiveIdempotent

Teamwork: releases reserved elements and/or object sets so others can edit them. Archicad sends your pending changes of the released items with the release (call teamwork_send first to send everything with a comment). Output: {isTeamwork: true, elements?: [{guid, status, released} | {error}], objectSets?: [{name, status, released, apiError?}], warning?}. In a solo (non-Teamwork) project this does nothing and returns {isTeamwork: false, message} — that is not an error: everything is editable without reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsNoElements to reserve/release (GUIDs)
objectSetsNoObject sets to reserve/release: needed before editing attributes (e.g. 'Composites' before modifying composites, 'LayerSettings' for layers), favorites, project info or project preferences in Teamwork
enableDialogsNoLet Archicad show its own Teamwork dialogs (e.g. request/conflict messages). Default false
hotlinkCacheManagementNoAlso reserve/release Hotlink Cache Management (needed to update/relink hotlinks)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, but the description adds important context: that pending changes are sent along with the release (a side effect not implied by the schema), the exact output shape including error entries, and the critical non-error solo-project behavior. However, it does not describe permission requirements or conflict handling beyond the enableDialogs flag.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action, followed by side-effect guidance and edge-case behavior. Every sentence carries useful information; no filler.

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?

Given the destructive annotation, no output schema, and 100% parameter coverage, the description covers the essential behavior including the non-obvious solo-project no-op and the side effect of sending pending changes. Minor gaps around error/conflict handling, but overall sufficient for correct invocation.

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 coverage is 100%, so the baseline is 3. The description mentions 'reserved elements and/or object sets' which maps to the parameters, and the objectSets description in the schema already explains the enum values. The description adds no parameter syntax or format beyond what the schema provides.

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?

States a specific verb ('releases') and resource ('reserved elements and/or object sets') with explicit scope, and distinguishes itself from sibling reserve_elements by naming the inverse operation. The solo-project behavior is also clarified, making it unmistakable which direction this tool operates in.

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

Usage Guidelines5/5

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

Explicitly names the alternative 'teamwork_send' and the condition that selects it ('call teamwork_send first to send everything with a comment'). Also clarifies when NOT to expect errors (solo project) and when object sets are needed (before editing attributes). Clear when-to-use and when-not.

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

reload_librariesReload librariesA
DestructiveIdempotent

Reloads all loaded libraries (picks up library part files changed on disk, fixes stale 'missing' parts).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description usefully adds scope ('all' loaded libraries) and the intended beneficial effect, but it does not explain what the destructive aspect means in practice (e.g., whether unsaved state or in-memory changes are discarded).

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

Conciseness5/5

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

A single sentence that front-loads the action and immediately qualifies it with the reason to invoke it. No filler, no restatement of the title.

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 zero-parameter, no-output-schema operation, the description covers what happens and why it is useful, which is enough to call it correctly. Minor gaps remain around timing (when in a workflow to run it) and any consequences of the destructive flag.

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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. Schema description coverage is also 100%.

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?

Specific verb ('Reloads') plus resource ('all loaded libraries'), with a parenthetical stating the concrete effects: picking up part files changed on disk and repairing stale 'missing' parts. It is distinct from get_libraries/add_libraries/remove_libraries in meaning, but the description never names those siblings to reinforce the distinction.

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 context is implied rather than stated: the parenthetical ('picks up library part files changed on disk, fixes stale missing parts') tells the agent the situation this tool addresses. There is no explicit when-to-use rule, no when-not-to-use, and no reference to the sibling library tools it could be confused with.

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

remove_librariesRemove librariesA
Destructive

Removes libraries from the project by path or name (see get_libraries). The embedded and built-in libraries cannot be removed. Placed elements using parts of a removed library become 'missing objects'. NOT undoable.

ParametersJSON Schema
NameRequiredDescriptionDefault
librariesYesLibrary paths or names exactly as listed by get_libraries

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real operational context: which libraries are protected, the downstream side effect that placed elements become 'missing objects', and that the action is NOT undoable. That is exactly the kind of consequence disclosure an agent needs before a destructive call.

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

Conciseness5/5

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

Three short sentences, each carrying a distinct fact (what it does, what is protected, what breaks, and reversibility), with the destructive warning placed last for emphasis. No 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 one-parameter destructive mutation with no output schema and full annotation coverage, the description supplies everything an agent needs: identifier source, protected inputs, side effects, and irreversibility.

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 coverage is 100% and the single parameter is documented as 'Library paths or names exactly as listed by get_libraries'. The description's 'by path or name (see get_libraries)' restates that same information rather than adding format, cardinality, or failure semantics, so the baseline 3 applies.

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?

States a specific verb and resource ('Removes libraries from the project') and immediately constrains the identifier form ('by path or name'), which distinguishes it from the sibling library tools get_libraries, add_libraries and reload_libraries.

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?

Gives the key precondition for correct invocation (identifiers must match what get_libraries lists) and an explicit exclusion ('embedded and built-in libraries cannot be removed'). It does not contrast against siblings like reload_libraries for the 'should I remove or just reload?' decision, so it stops short of a full when/when-not treatment.

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

remove_solid_operationRemove solid operationA
DestructiveIdempotent

Removes live solid element operation links (created by solid_operation or in Archicad). Give links [{target, operator}] and/or elements (every link where the element is target or operator). Inspect links with get_element_edit_relations. Returns {results: [{target, operator, removed: true} | {target, operator, error}], removedCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
linksNo
elementsNoRemove every solid operation link of these elements

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so safety is covered. The description adds useful context beyond them: it deletes relationships, not the elements themselves (links are 'operation links'), and reports per-link success or error plus removedCount, implying partial failures are possible.

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?

Three tight sentences, front-loaded with the action and its scope. The return-shape sentence is dense but informative; nothing is redundant, though the inline JSON union could be trimmed.

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?

No output schema exists, so the description usefully inlines the return shape (results array with removed/error, removedCount). With both parameters covered and the destructive nature disclosed, an agent has what it needs to call it; only prerequisite/auth details (e.g. teamwork reservations) are absent.

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 coverage is 50%, and the description compensates meaningfully by defining what `elements` does (removes every link where the element is target OR operator) — a semantic the schema does not spell out. It also names the target/operator pair for `links`. It doesn't add GUID format or limit details, which the schema carries.

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?

States a specific verb (Removes) plus a precise resource (live solid element operation links) and even names the origins (created by solid_operation or in Archicad). An agent can distinguish this from siblings like solid_operation, get_element_edit_relations, and delete_elements without opening any 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?

Explains the two input modes and when each applies: pass `links` [{target, operator}] for explicit pairs, `elements` for every link where the element is target or operator. It also routes inspection to get_element_edit_relations. No explicit when-not-to-use or prerequisite (e.g. reservation) guidance, so not a full 5.

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

remove_trimRemove trimA
DestructiveIdempotent

Removes trim-to-roof/shell connections, restoring the untrimmed elements. Give explicit pairs [{element, trimmingElement}] and/or elements (all trim connections of these elements are removed, whether they are trimmed or trimming). Inspect trims with get_element_edit_relations. Returns {results: [{element, trimmingElement, removed: true} | {element, trimmingElement, error}], removedCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pairsNo
elementsNoRemove every trim connection of these elements

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false. The description adds value beyond them by explaining the destructive scope (trim connections removed, elements restored) and describing the per-item result shape with error handling, which the annotations don't convey.

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?

Three dense sentences that are front-loaded with the operation, then inputs, then return shape. Minimal waste, though the return-format sentence is somewhat verbose for a description when it could be tighter.

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?

No output schema exists, so the description helpfully summarizes the return structure ({results, removedCount}) and gives the cross-reference for inspection. Complete enough for correct invocation, with only minor room to note permission or side-effect details.

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 50% schema coverage, the description compensates by clarifying the semantics of both parameters: pairs as explicit element/trimmingElement couplings and elements as removing every trim connection of those elements 'whether they are trimmed or trimming'. This meaning goes beyond the schema's structural definitions.

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?

States a specific verb and resource ('Removes trim-to-roof/shell connections') and immediately clarifies the effect ('restoring the untrimmed elements'), which lets an agent distinguish it from the inverse sibling trim_elements. The scope is unambiguous 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 Guidelines4/5

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

Explains the two input modes ('Give explicit pairs ... and/or elements') and what 'elements' means, and it routes the agent to get_element_edit_relations for pre-inspection. Clear context for use, though it does not state explicit when-not conditions or name an alternative operation.

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

rename_attribute_folderRename attribute folderA
DestructiveIdempotent

Renames an attribute folder (path or GUID). Output: {ok, folder: {path, guid}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYesFolder to rename: path (['A','B'] / 'A/B') or {guid}
newNameYesNew folder name
attributeTypeYesAttribute type: BuildingMaterial, Composite, Fill, Layer, LayerCombination, Line, PenTable, Profile, Surface or ZoneCategory

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context by disclosing the return shape {ok, folder:{path,guid}} in the absence of an output schema, though it does not explain what renaming destroys (reference breakage) or error behavior.

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

Conciseness5/5

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

Two terse fragments, front-loaded with the core action and then the return values. No filler; every clause carries information.

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 simple 3-param mutation tool with full schema coverage and rich annotations, the description covers purpose and output sufficiently. It could note whether the folder must pre-exist or how references behave, but nothing essential to invoking it correctly is missing.

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%, so the schema fully documents folder, newName, and attributeType (with its enum). The description's '(path or GUID)' only restates the folder parameter and adds no syntax or constraint detail beyond the schema.

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?

States a specific verb+resource (renames an attribute folder) and clarifies the accepted target forms (path or GUID). It is clearly distinguishable from sibling folder tools like create_attribute_folders, delete_attribute_folders, and move_attributes_to_folder, though it does not name them.

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?

The description implies the operation but gives no explicit when-to-use guidance or prerequisites (e.g., folder must exist, permissions). Usage is inferable from the name and siblings only.

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

rename_favoriteRename favoriteA
DestructiveIdempotent

Renames a favorite. Output: {name, newName, renamed: true}. Fails when newName is already used.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact favorite name (localized, as listed by get_favorites)
newNameYesNew name

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds value with the failure condition on duplicate names and the return shape, which is context beyond the annotations — though it doesn't explain what happens to the old name entry or whether collisions are case-sensitive.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and followed by output and failure behavior. Every clause carries information and there is no padding.

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?

There is no output schema, so the description's inline ({name, newName, renamed: true}) legitimately fills that gap, and the failure clause covers the main error path. Complete enough for a two-parameter mutation, short only of collision/matching edge cases.

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%, so both parameters are already documented (name is the exact localized favorite name; newName the replacement). The description adds no format, localization, or matching semantics beyond the schema, so the baseline 3 applies.

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?

States a specific verb (renames) and resource (favorite), and the sibling set (create_favorite, delete_favorite, apply_favorite, get_favorites) leaves no ambiguity about which operation this performs. An agent can select it 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?

The precondition 'Fails when newName is already used' is useful implied guidance, but there is no explicit when-to-use vs alternatives (e.g., when to rename rather than delete-and-recreate). Usage is inferable from the name, which is the minimum viable bar.

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

rename_navigator_itemRename navigator itemA
DestructiveIdempotent

Renames a navigator item (view, View Map folder, layout, subset, viewpoint...): new name and/or new ID (the prefix shown before the name, e.g. layout number '03' or subset ID 'АР'). Pass at least one of newName / newId. The item is read back from the Layout Book / View Map / Project Map: output {ok, id, tree, prefix, name, warning?} — warning tells when Archicad kept a different name/ID (for sheet numbers of layouts prefer set_layout_settings {customLayoutNumbering: true, customLayoutNumber}). A new ID of an auto-numbered SUBSET does not last: Archicad recomputes it on the next Layout Book change. For a lasting subset ID create the subset with create_layout_subset {customNumbering: true, customNumber} and move the layouts into it (move_navigator_item).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesNavigator item id (the 'id' GUID from get_navigator_tree)
newIdNoNew ID / prefix ('' clears it where allowed)
newNameNoNew name

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true. The description adds genuine behavior beyond them: the returned shape {ok, id, tree, prefix, name, warning?}, the meaning of `warning` (Archicad kept a different name/ID), and the caveat that an auto-numbered SUBSET's new ID is recomputed on the next Layout Book change. It does not spell out what is overwritten by the rename, so it stops short of a 5.

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?

Dense but front-loaded: purpose and the minimum-argument rule come first, then output shape, then the warning semantics and the alternatives/caveats. Nothing is filler, though the closing subset-numbering sentence is somewhat long and dense for a rename tool.

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?

Despite no output schema, the description names the return fields and the warning flag, covers the argument requirement, and surfaces the non-obvious durability caveat plus the correct alternative workflow. An agent has everything needed to call it correctly and interpret the response.

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 coverage is 100%, so the schema already documents all three parameters (baseline 3). The description goes further by explaining that newId is the prefix shown before the name (e.g. '03', 'АР') and that '' clears it where allowed, adding semantic meaning beyond the schema strings.

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?

States a specific verb (renames) and resource (navigator item), and enumerates what counts as a navigator item (view, View Map folder, layout, subset, viewpoint). It also names the sibling tools (set_layout_settings, create_layout_subset, move_navigator_item) it relates to, so an agent can distinguish it without opening schemas.

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

Usage Guidelines5/5

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

Explicitly states the prerequisite ('Pass at least one of newName / newId') and routes to alternatives: for sheet numbers of layouts use set_layout_settings {customLayoutNumbering: true}, and for a lasting subset ID use create_layout_subset {customNumbering: true} then move_navigator_item. When-to-use and when-to-use-something-else are both covered.

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

render_viewPhoto renderA
Idempotent

Photo-renders the current 3D view (camera / projection of the 3D window) with Archicad's rendering engine and returns the image. Optionally set up the camera first (threeD, same fields as set_3d_view), pick a rendering scene (names in get_3d_view rendering.scenes) and the output size (width/height px, restored afterwards). Rendering can take minutes (timeoutSeconds, default 600). For quick looks use capture_view of the 3D window instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneNoRendering scene name (localized; see get_3d_view rendering.scenes)
widthNoRender width in px (default: scene setting)
formatNoImage format (default png; jpeg is smaller for shaded 3D views and renders)
heightNoRender height in px (default: scene setting; keeps proportions when only width is given)
saveToNoAlso keep a full-resolution copy at this absolute file path
threeDNoFirst set up the 3D view (set_3d_view fields)
maxSizeNoLongest side of the returned image in px (default 1600); larger pictures are downscaled
timeoutSecondsNoMaximum rendering time to wait (default 600)

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that rendering can take minutes with a default 600s timeout, that width/height are restored afterwards (a side effect), that maxSize downscales, and that saveTo keeps a full-resolution copy. This is exactly the operational context an agent needs before committing to a long-running call.

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?

Front-loaded with the core action and the sibling alternative held to the last sentence. Efficient overall, though the middle sentence stacks several parentheticals (scene source, size restore) that read densely.

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 an 8-parameter, deeply nested, no-output-schema tool, the description covers the key behaviors, setup prerequisites and the long-running nature. The only gap is how the returned image is delivered (inline vs. path), which it leaves implicit.

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 coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: where scene names come from (get_3d_view rendering.scenes), the output-size behavior with restore semantics, and the default timeout value. It does not detail maxSize/saveTo beyond what the schema already says.

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?

Specific verb+resource ('Photo-renders the current 3D view ... with Archicad's rendering engine and returns the image') and it explicitly distinguishes itself from capture_view, the nearest sibling for the same 3D window. An agent can tell the two apart without opening either schema.

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

Usage Guidelines5/5

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

Gives both the setup path ('Optionally set up the camera first ... same fields as set_3d_view') and the alternative with its selecting condition ('For quick looks use capture_view of the 3D window instead'). It also routes the agent to get_3d_view for scene names.

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

reserve_elementsReserve (Teamwork)A
DestructiveIdempotent

Teamwork: reserves elements and/or object sets so you can edit them (elements reserved by someone else cannot be taken; the result names the owner). Output: {isTeamwork: true, elements?: [{guid, status, reserved, conflictWith?, reservedBy?} | {error}], objectSets?: [{name, status, reserved, apiError?, conflictWith?}], warning?}. Check get_teamwork_status first. In a solo (non-Teamwork) project this does nothing and returns {isTeamwork: false, message} — that is not an error: everything is editable without reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsNoElements to reserve/release (GUIDs)
objectSetsNoObject sets to reserve/release: needed before editing attributes (e.g. 'Composites' before modifying composites, 'LayerSettings' for layers), favorites, project info or project preferences in Teamwork
enableDialogsNoLet Archicad show its own Teamwork dialogs (e.g. request/conflict messages). Default false
hotlinkCacheManagementNoAlso reserve/release Hotlink Cache Management (needed to update/relink hotlinks)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructive/idempotent/readOnly, and the description adds substantial context beyond them: the conflict rule with the other owner, the per-item status/conflictWith/reservedBy result shape, and the explicit warning that a solo project returns {isTeamwork: false} rather than failing. That is exactly the behavioral disclosure an agent needs before locking elements.

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?

Front-loads purpose, then behavior, then the return shape, then the prerequisite, then the solo-project caveat. The inline output listing is somewhat dense but is justified because no output schema is supplied. No filler sentences.

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?

With no output schema, the description compensates by spelling out the return object including per-element errors and the warning field, and it covers the no-op case. Combined with the annotations' safety profile, an agent has everything needed to call and interpret this correctly. Only the two boolean parameters remain unexplained.

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%, so the schema already documents elements, objectSets (with the full enum listing), enableDialogs and hotlinkCacheManagement. The description only restates the objectSets examples ('Composites', 'LayerSettings') and never explains enableDialogs or hotlinkCacheManagement, so it adds little beyond the schema. Baseline 3 applies.

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?

Opens with a precise verb+resource ('reserves elements and/or object sets') and immediately states the intent ('so you can edit them'), which clearly separates it from release_elements among the siblings. The conflict rule ('elements reserved by someone else cannot be taken; the result names the owner') further pins down the exact semantics.

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?

Gives an explicit prerequisite ('Check get_teamwork_status first') named by sibling, plus a valuable when-not-to-use case (solo non-Teamwork projects are a no-op, not an error). It stops short of contrasting with release_elements or stating when reservation is unnecessary, so it is clear context without full alternative routing.

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

resize_elementsResize (scale) elementsA
Destructive

Scales elements in plan by ratio around a centre point (Edit > Reshape > Resize): 2 = double size, 0.5 = half. Default centre: the elements' bounding-box centre. Model element heights are not scaled; text/labels scale according to Archicad rules. Returns {results: [{guid, newGuid?, warning?} | {guid, error}], warnings?} in input order (a 'warning' on an item means Archicad may have ignored it); with copy=true the copy-style result {results: [{guid, copies: [new GUIDs]}], createdCount, additionalCreated?}. Locked elements, elements on locked/hidden layers, hotlinked elements and elements outside your Teamwork workspace are reported with an actionable error instead of being edited.

ParametersJSON Schema
NameRequiredDescriptionDefault
copyNotrue = keep the originals and transform copies (default false = transform the originals)
ratioYesScale factor (> 0, not 1)
centerNoFixed point of the scaling in meters (default: bounding-box centre)
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructive=true/idempotent=false, and the description goes well beyond them: model element heights are NOT scaled, text/labels scale per Archicad rules, and locked / locked-hidden-layer / hotlinked / out-of-workspace elements are returned as actionable errors rather than silently edited. That is exactly the extra behavioral context the annotations cannot convey.

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?

Front-loaded with the action and its arguments, then the return shape, then the error cases - a logical order. It is dense for a single paragraph and some return-shape detail is verbose, but every sentence carries information with 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?

Although there is no output schema, the description fully documents the return contract (results array in input order, warning vs error entries, the copy-style result with copies/createdCount). Combined with the error-handling and scaling-rule notes, an agent has everything needed to call and interpret this tool.

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 coverage is 100%, so the baseline is 3; the description adds meaning beyond the schema by giving ratio examples ('2 = double size, 0.5 = half') and restating default-centre and copy semantics. It adds modest extra interpretation rather than new parameter detail, hence a 4 rather than a 5.

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?

States a precise verb+resource+scope: 'Scales elements in plan by `ratio` around a centre point', names the UI locus, and gives concrete examples (2 = double, 0.5 = half). The agent can distinguish this resize operation from sibling transforms like move_elements, rotate_elements and mirror_elements without opening any 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?

Gives clear operating context: default centre is the bounding-box centre, and copy=true transforms copies while keeping originals. It never names a sibling or an explicit when-not condition (e.g. use move/rotate instead), so it stops short of full routing guidance, but a caller knows the conditions under which this tool applies.

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

rotate_elementsRotate elementsA
Destructive

Rotates elements of ANY type in plan around a centre point (Edit > Move > Rotate). Angle in DEGREES, positive = counter-clockwise. Without center the centre of the elements' combined bounding box is used (reported in warnings). With copy=true the originals stay and count copies are made at k × angle (polar array, e.g. 6 chairs around a table: angle 60, count 5, copy true). Returns move-style results, or copy-style results ({results: [{guid, copies}], createdCount, additionalCreated?}) when copy=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
copyNotrue = keep the originals and transform copies (default false = transform the originals)
angleYesRotation angle in degrees; positive = counter-clockwise, negative = clockwise
countNoOnly with copy=true: number of rotated copies, copy k rotated by k × angle (default 1)
centerNoPivot point in meters (default: centre of the elements' bounding box)
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.3/5.0
Behavior4/5

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

Goes beyond annotations by disclosing that the implicit pivot is the combined bounding box and is reported in warnings, that group handling is scoped per includeGroupMembers, and that return shape differs for copy=true. Annotations already cover the destructive/non-idempotent profile, so the description adds real behavioral value without contradiction.

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

Conciseness5/5

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

Dense but front-loaded: purpose, angle convention, pivot default, then copy semantics and return shapes. Every sentence carries operational information with no 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 6-parameter mutation tool with no output schema, the description compensates well by describing both move-style and copy-style return payloads and the group-scoping behavior, leaving no critical gap for correct invocation.

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%, so the baseline is 3. The description restates angle direction, center default, and the k × angle copy semantics, which are already documented in the schema, adding little beyond what structured fields provide.

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?

States a specific verb ('Rotates') and resource ('elements of ANY type in plan') and ties to the UI path (Edit > Move > Rotate). This clearly distinguishes it from siblings like move_elements, mirror_elements, and copy_elements.

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?

Gives concrete usage context: default pivot behavior when 'center' is omitted, and the copy=true polar-array pattern with a worked example (6 chairs around a table). It does not explicitly contrast against siblings like move_elements, but the when-to-use guidance is clear.

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

save_projectSave projectA
DestructiveIdempotent

Saves the open project to its own file (File > Save). Fails for untitled (never saved) projects — use save_project_as — and for read-only projects. Returns {saved, project}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the safety profile is covered. The description adds value beyond them by naming the exact failure modes (untitled projects, read-only projects) and the return shape {saved, project}, which the annotations do not convey. It stops short of describing error signaling or whether an on-disk overwrite is confirmed, keeping it at a 4.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary action, then the exceptions and return shape. Every clause earns its place: no restatement of the title or annotations.

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?

There is no output schema, but the description supplies the return object shape, the failure conditions, and the correct alternative tool — everything needed to invoke it correctly and interpret a failure. Nothing material is missing for a zero-parameter save operation.

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 tool takes zero parameters, so there is no parameter semantics to explain and no schema gap to compensate for; baseline 4 applies. The description correctly spends no words on parameters.

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?

States a specific verb and resource ('Saves the open project to its own file') and anchors it to the UI path (File > Save). It is immediately distinguishable from the sibling save_project_as and open_project, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Explicitly states two preconditions for failure — untitled (never saved) projects and read-only projects — and names the concrete alternative (save_project_as) for the untitled case. This is a textbook when-to-use / when-not-to-use declaration.

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

save_project_asSave project asA
DestructiveIdempotent

Saves the project under a new file (File > Save As). Afterwards the open project refers to the NEW file. Formats: pln (solo project), pla (archive incl. library parts), tpl (template), pln25/pla25 (Archicad 25 = previous version). The format defaults to the path extension; a missing extension is added. For IFC/DWG/PDF/image exports use the export tools instead. Returns {saved, format, file, project}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute target path on the Archicad machine, e.g. '/Users/me/Projects/House.pln'
formatNoFile format (default: from the extension, else pln)
archiveNoOptions for pla/pla25 archives
overwriteNoReplace an existing file (default false: fails if the file exists)
createFoldersNoCreate missing parent folders (default false)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds genuinely new context: the open project pointer moves to the new file, extension is inferred from the path and auto-appended, and overwrite defaults to failing when the file exists. It does not mention authorization or teamwork/check-in implications, which is the remaining gap for a mutation-heavy tool.

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?

Front-loads the core action and the caller-visible side effect, then packs formats, defaults, exclusion guidance and return shape into a compact block. Slightly dense as one paragraph, and the trailing return-shape clause is the least polished, but virtually every sentence carries information.

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?

No output schema exists, yet the description still states the return shape {saved, format, file, project}. Combined with format rules, overwrite/folder defaults inherited from the schema, and the export-tool exclusion, an agent has everything needed to invoke this correctly.

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 baseline is 3, but the description earns above baseline by decoding the format enum (pln=solo, pla=archive incl. library parts, tpl=template, pln25/pla25=Archicad 25 previous version) and clarifying that format defaults from the path extension. This adds meaning the enum names alone do not convey.

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?

States a specific verb+resource ('Saves the project under a new file') and immediately scopes it with the File > Save As analogy. The list of supported formats and the explicit pointer to export tools for other output types makes it unambiguously distinguishable from save_project, open_project, and the export_* siblings.

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?

Explicitly routes non-native output away: 'For IFC/DWG/PDF/image exports use the export tools instead.' The behavioral note that the open project afterwards refers to the new file implicitly tells the agent when this differs from a plain save. It stops short of naming save_project directly as the alternative for in-place saves.

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

search_library_partsSearch library partsA
Read-onlyIdempotent

Finds library parts (objects, doors, windows, lamps, zone stamps, labels, skylights, macros ...) in the loaded libraries. Names are LOCALIZED — on a Russian Archicad search Russian words (e.g. 'стол' table, 'стул' chair, 'дверь' door, 'окно' window, 'светильник' lamp, 'кровать' bed, 'шкаф' cabinet, 'диван' sofa, 'унитаз' WC, 'раковина' sink, 'дерево' tree). The query is a case-insensitive substring; with several words all must match the name or file name. Exact and prefix matches come first. Filter by type, by subtype (category: a keyword like 'Furnishing', 'Plant', 'Light' or a template from get_library_part_subtypes), or embeddedOnly (parts created with create_library_part). Returns {libraryParts: [{index, name, guid, type, fileName, subtype}], total, hasMore}. Use the name or {guid} as libraryPart in create_objects / create_lamps / change_library_part.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly these library part types
limitNoMaximum results (default 100)
queryNoSubstring(s) of the name / file name; omit to list everything matching the filters
offsetNoSkip this many results (default 0)
subtypeOfNoOnly descendants of this subtype: a keyword (GeneralGDLObject, ModelElement, BuildingElement, Furnishing, Beds, Structure, Column, Beam, Slab, Wall, Roof, Stair, Railing, Ramp, Covering, Footing, Plant, People, Animal, Traffic, TransportElement, StreetFurniture, SportField, DistributionElement, ElectricalElement, FlowTerminal, FlowEquipment, SolarPVPanels, DrawingSymbol, DocumentationElement, Marker, PropertyObjects, Light, WindowWall, CornerWindow, DoorWall, WallOpening, WallEnd, Skylight, Label, ZoneStamp) or a template name/{guid} from get_library_part_subtypes
embeddedOnlyNoOnly parts stored in the project's embedded library
placeableOnlyNoOnly parts that can be placed (default true; false also lists macros and templates)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds meaningful non-annotated behavior: localized name matching (Russian terms), substring AND semantics, match ranking, and the default of placeableOnly=true that hides macros/templates. Return-shape details are also disclosed despite no output 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?

Front-loads purpose, then layers localization, match semantics, filters, and downstream usage in a tight sequence. It is dense and longer than average, but nearly every clause carries information an agent needs; only the long Russian examples list is slightly padded.

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 7-parameter, zero-required search tool with no output schema, the description covers purpose, matching rules, filter options, default limits, and the exact return shape ({libraryParts:[...], total, hasMore}) plus how to consume the result. Nothing an agent needs to call it correctly is missing.

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, but the description adds real meaning beyond it: subtype keywords like 'Furnishing'/'Plant'/'Light' with a route to get_library_part_subtypes, and embeddedOnly defined as parts created via create_library_part. The query matching semantics are also richer than the schema's one-liner.

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?

States a specific verb ('Finds') over a concrete resource ('library parts') and enumerates the kind of parts covered (objects, doors, windows, lamps, macros, etc.). It is clearly distinguishable from get_library_part_details, get_library_part_subtypes and create_library_part, which it either references or implies.

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?

Gives strong operational guidance: query is a case-insensitive substring, multi-word queries AND together, prefix/exact matches rank first, and results should be fed into create_objects / create_lamps / change_library_part. It also points to get_library_part_subtypes for subtype templates. It stops short of explicitly stating when to prefer this over a details/listing sibling.

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

select_archicad_instanceSelect Archicad instanceA
Read-onlyIdempotent

When several Archicad instances run, switches all following tool calls to the instance listening on port (see archicad_status).

ParametersJSON Schema
NameRequiredDescriptionDefault
portYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false. The description adds the crucial non-obvious behavior that the effect is sticky — it redirects ALL following tool calls — which annotations cannot convey. It does not describe error behavior for an invalid or non-listening port.

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

Conciseness5/5

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

A single sentence, with the conditional trigger front-loaded and the stateful consequence stated immediately after. No filler, no restatement of the tool name or title.

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 one-parameter, no-output-schema session tool, the description covers the trigger condition, the effect, and where to find the port value. Remaining gaps (invalid-port behavior, persistence across reconnects) are minor but real.

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 coverage is 0%, so the description must carry the parameter. It does add real meaning: `port` identifies which running instance's listener to route to, and it references archicad_status for discovering valid values. It still omits any format/validity guidance beyond what the schema's 1-65535 range already implies.

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 states a specific action (switch all following tool calls) and the resource being selected (the Archicad instance listening on `port`). It also distinguishes itself from siblings by framing this as a session-routing operation rather than a per-document command, and points to archicad_status as the companion discovery tool.

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 an explicit condition for use: 'When several Archicad instances run.' It also cross-references archicad_status for finding instances. It does not state when not to call it (e.g., single-instance setups) or whether it must precede other calls, so it falls short of a full when/when-not rubric.

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

set_3d_viewSet 3D viewA
Idempotent

Sets up the 3D window. Easiest overview: {mode:'perspective', azimuth: 225, altitude: 30} (camera south-west of the model, fits the whole model). Exact camera: {mode:'perspective', camera:{x,y,z}, target:{x,y,z}, viewCone}. Axonometry: {mode:'axonometric', projection:'Isometric', azimuth} or {projection:'TopView'}. Also: sun, style (3D style name), styleSettings (shading/hidden line, shadows...), windowSize, stories range, elementTypes filter, cutPlanes. Opens the 3D window unless open3D is false. Returns {changed, camera {verified, warning?} (perspective) | axonometric {viewMatrixChanged, warning?}, projection, window}. Follow with capture_view to see the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
sunNoSun position for shading/shadows (sets 'given by angles')
modeNoProjection mode. Default: perspective when camera/target/viewCone/roll/distance are given, axonometric when projection/tranmat are given, otherwise the current mode
rollNoPerspective camera roll in degrees (0 = level horizon)
styleNo3D style name to make current (localized; see get_3d_view style.available)
cameraNoPerspective: camera (eye) position in m, z = absolute elevation (e.g. 1.6 above a story level for eye height)
open3DNoBring the 3D window to the front afterwards (default true)
targetNoPerspective: point the camera looks at (m). With azimuth/altitude it is the orbit center (default: center of the model)
azimuthNoDegrees CCW from +X (east; 90 = north). Perspective orbit: direction FROM the target TO the camera, e.g. 225 = camera south-west of the model looking north-east. Axonometric: the camera azimuth of the parallel projection
storiesNo3D story range filter (Filter and Cut Elements in 3D)
tranmatNoAxonometric: raw 3x4 view matrix (row-major, as returned by get_3d_view) — copy it from a view you liked
altitudeNoDegrees above the horizon of the view direction's source: perspective orbit camera elevation angle (default 30); axonometric: makes a free 'Parallel' view from that elevation (experimental)
distanceNoPerspective orbit: camera–target distance in m (default: the whole model fits in view)
viewConeNoPerspective field of view in degrees (default: current or 60; 35-50 = natural, 70-90 = wide interior shots)
cutPlanesNo3D cutting planes
projectionNoAxonometric (parallel) projection preset. TopView = plan from above, FrontView/SideView = elevations, Isometric/Dimetric/Monometric/Frontal = classic axonometries (rotated by azimuth), *Bottom = seen from below, Parallel = free parallel view (use with azimuth + altitude)
windowSizeNoSize of the 3D window image in pixels (persists; capture_view width/height changes it only temporarily)
elementTypesNoShow only these element types in 3D, e.g. ['Wall','Slab','Roof','Column'] (type names as in get_supported_element_types), or ['all']
styleSettingsNoEdits the CURRENT 3D style definition (applied after 'style'; affects every view using that style), e.g. {model:'HiddenLine'} for a line drawing or {model:'Shading', sunShadows:'AllSurfacesContoursOn'}. Current values: get_3d_view style
twoPointPerspectiveNoPerspective: keep vertical lines vertical (2-point perspective)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safety profile (non-read-only, idempotent, non-destructive); the description goes well beyond by disclosing that the 3D window opens unless open3D is false, that windowSize persists while capture_view sizing is temporary, and that styleSettings edits the shared 3D style definition affecting every view using it. It also describes the return payload including camera verification and warning fields.

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?

Front-loads the easiest use case first and then layers the exact-camera and axonometric variants, so the most likely path is read first. It is dense and telegraphic with fragment-style clauses, which is efficient but slightly tiring; nothing is wasted.

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 19-parameter tool with nested objects and no output schema, the description compensates by naming the main parameter groups (sun, style, styleSettings, windowSize, stories, elementTypes, cutPlanes) and spelling out the return shape, giving the agent enough to call it correctly without opening every subschema.

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, but the description adds real value by presenting ready-to-use argument combinations (perspective with azimuth/altitude, camera+target+viewCone, axonometric with projection) that show how parameters interact. It does not, however, explain every parameter 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?

States a specific verb and resource ('Sets up the 3D window') and immediately distinguishes itself from siblings by showing concrete invocation shapes for the three main camera modes. An agent can tell this apart from get_3d_view, show_in_3d, and capture_view without inspecting schemas.

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?

Gives explicit usage recipes ('Easiest overview', 'Exact camera', 'Axonometry') and directs the agent to follow up with capture_view to verify. It doesn't explicitly state when NOT to use it versus show_in_3d or get_3d_view, so it stops short of a 5.

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

set_attribute_property_valuesSet attribute property valuesA
DestructiveIdempotent

Sets property values of attributes (building materials, ...) in one undo step. Each entry: {attributes: [{type, attribute}], property, value | reset: true | setUndefined: true}. The property must be available for the attribute's classification. Units: lengths m, areas m², volumes m³, angles DEGREES; option sets by display value.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYes
undoNameNoName of the undo step shown in Archicad

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds real value by disclosing atomicity ('in one undo step') and the reset/setUndefined semantics, but it never explains what makes the operation destructive (overwriting existing values) or how errors/ambiguity are surfaced.

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?

Front-loads the core action and the undo-step behavior, then gives the entry format and unit rules compactly. No filler, though the inline entry-shape restatement is somewhat redundant with the schema.

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 two-parameter mutation tool with no output schema and annotations covering the safety profile, the description supplies the key operational facts: atomicity, units, classification prerequisite, and reset/undefined modes. Error/ambiguity behavior is left unstated, but nothing critical to calling it correctly is missing.

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 50%, and the schema itself already elaborates most fields (property formats, units, attribute addressing). The description restates the entry shape and the unit conventions, adding modest meaning but largely duplicating the schema's own value description. Baseline 3 is appropriate.

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?

States a specific verb and resource: setting property values of attributes, and names the entity type (building materials, ...). It clearly contrasts with the get_ sibling get_attribute_property_values, but does not distinguish itself from set_property_values, which appears to be a closely-related write tool.

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?

Gives one prerequisite constraint — the property must be available for the attribute's classification — which is genuinely useful usage context. However it offers no explicit when-to-use vs the sibling set_property_values, so the agent must infer the split. Usage is implied rather than spelled out.

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

set_current_storySet current storyA
Idempotent

Makes a story the current one and (by default) shows its floor plan, like double-clicking the story in the Navigator. New elements are placed on the current story when no storyIndex is given, and floor plan screenshots/zooms show it. Returns {currentStory, windowChanged}.

ParametersJSON Schema
NameRequiredDescriptionDefault
storyYesStory to go to (index, name, or {floorId})
openFloorPlanNoSwitch to the floor plan window first (default true). false = only change the current story, keep the active window

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false); description adds state-effect context (current story changes placement of new elements, floor plan view follows) and returns {currentStory, windowChanged}. Goes beyond what annotations provide.

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?

Two sentences plus a return-value clause, front-loaded with the core action. Every element is relevant, though the return-value mention is slightly redundant with context.

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 2-param mutation tool without output schema or annotations bearing behavior, the description covers effect, default behavior, and return shape. Could explicitly point to get_stories for obtaining valid identifiers, but is otherwise complete.

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 coverage is 100% and the schema fully documents the anyOf forms for story and openFloorPlan. Description reinforces the default-true behavior of openFloorPlan and the semantic effect of omitting storyIndex, adding modest value.

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?

States a specific verb+resource ('Makes a story the current one') and distinguishes it from siblings like get_stories/create_stories. The Navigator double-click analogy concretely clarifies the effect.

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?

Explains consequences of use ('New elements are placed on the current story when no storyIndex is given') and honors the openFloorPlan toggle. Doesn't explicitly route among siblings (e.g., get_stories first to obtain floorId/displayNumber).

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

set_draw_orderSet drawing orderA
Destructive

Changes the 2D stacking (display) order of elements on the plan (Edit > Display Order): which element covers which (e.g. a fill behind lines). Give action ('BringToFront' | 'BringForward' | 'SendBackward' | 'SendToBack' | 'Reset' = default order of the type; steps repeats BringForward/SendBackward) OR a target level 1 (bottom) .. 14 (top). Type defaults: drawings 5, fills/zones 6, walls/slabs/roofs/columns/doors/windows 7, objects/lamps 8, lines/arcs/polylines/beams 9, texts/labels/dimensions 10. Windows/doors cannot go below their host. Returns {results: [{guid, drawIndexBefore, drawIndex, warning?}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoAbsolute target drawing order level 1..14 (give this OR action)
stepsNoRepeat BringForward/SendBackward this many levels (default 1)
actionNoRelative change (give this OR level)
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false, idempotent=false; the description goes beyond them by disclosing the hard host constraint (windows/doors cannot go below their host), the type-based default ordering that Reset presumably restores, and the response payload including an optional warning field. It doesn't discuss permission/auth or whether changes are undoable.

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?

Highly front-loaded: the effect and the action/level decision come first, then defaults, then constraints, then return shape. Dense but every clause carries information; the type-default enumeration is long but directly load-bearing for choosing 'level'.

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 no output schema, the description compensates by describing the return object and warning field. Combined with the level semantics, host constraint, and group behavior (documented in the schema), an agent has enough to call this correctly; only auth/undo behavior is 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?

Schema coverage is 100%, so baseline is 3, but the description adds substantive meaning the schema lacks: the level range interpretation (1 bottom .. 14 top), that Reset means 'default order of the type', that steps repeats BringForward/SendBackward, and a full table of per-type default levels. This materially helps an agent pick a value.

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?

States a specific verb+resource pair ('Changes the 2D stacking (display) order of elements on the plan') and anchors it to the concrete UI location (Edit > Display Order). The parenthetical example (a fill behind lines) makes the effect unambiguous and it is clearly distinct from sibling modify/move tools.

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?

Explicitly frames the two mutually exclusive modes ('Give action ... OR a target level'), and the schema repeats 'give this OR level/action'. It also names a real precondition (windows/doors cannot go below their host) and default draw indices per element type. It stops short of naming sibling alternatives or when-not-to-use this tool.

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

set_element_classificationsSet element classificationsA
DestructiveIdempotent

Classifies elements (one undo step per call handled by Archicad). Each assignment gives elements and the classification item (GUID, localized id like 'Стена' / 'Перекрытие', or path 'A > B'); item null makes the elements unclassified in that system. An element can have one item per system. Output: {results: [{guid, item?, system, ok: true} | {guid, error}]} per element. Check the result with get_element_classifications. Classification decides which user-defined properties are available for elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
systemNoDefault system for all assignments
assignmentsYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing undo granularity ('one undo step per call handled by Archicad'), the null-means-unclassify semantics, the one-item-per-system invariant, and the effect on user-defined property availability. Since annotations already flag destructive/idempotent, the description adds real operational context rather than repeating them.

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?

Front-loads the core action and packs several constraints efficiently, though the middle sentences are dense and read as a run-on of related facts. Every sentence carries information; little is wasted.

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 no output schema, the description supplies the return shape ({results: [{guid, item?, system, ok} | {guid, error}]}) and the verification path, covering what an agent needs. Missing only edge-case guidance such as what happens past the 200-assignment/5000-element caps.

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?

Explains the item formats (GUID, localized id, path) and crucially the null case and the system default/inheritance rule, which the 50%-covered schema only partially conveys. It largely duplicates the schema's own item description, so it adds meaning without fully compensating for the uncovered half.

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?

States a specific verb and resource ('Classifies elements') and immediately disambiguates it from neighbors like set_property_values and get_element_classifications by scoping the operation to classification systems. An agent can tell what this does 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 Guidelines4/5

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

Routes the agent to get_element_classifications for verification ('Check the result with...') and to get_classification_tree for browsing items. It does not explicitly state when to choose this over alternatives like set_property_values or set_ifc_properties, but the verification loop is clear context.

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

set_gdl_parametersSet GDL parameters of elementsA
DestructiveIdempotent

Changes GDL parameters of placed objects, lamps, doors, windows, skylights, zones or labels in one undo step, running each part's parameter script like the settings dialog (dependent parameters update, invalid values are corrected or rejected). Give per-element params, and/or top-level params applied to every listed element (per-element values win). Changing A/B also resizes the element. Returns [{guid, parameters: resulting values} | {error}]. Parameter names: get_gdl_parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoValues applied to every element (merged under each element's own params)
elementsYesElements to change: {guid, params?}
undoNameNoName of the undo step

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: changes occur in one undo step, the part's parameter script runs like the settings dialog, dependent parameters update, invalid values are corrected or rejected, and changing A/B resizes the element. It also discloses the return shape. This is far richer than the destructiveHint/idempotentHint flags alone.

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?

Front-loaded with the core action, then scope, then behavior, then param rules and return format. Dense but every clause carries information; slightly long but no 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?

No output schema exists, yet the description supplies the return format (guid+parameters or error) and the failure mode for invalid values. Combined with 100% schema coverage and the get_gdl_parameters pointer, an agent has everything needed to call it correctly.

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 coverage is 100%, so the baseline is 3; the description still adds the merge/precedence semantics ('per-element values win') and the 'Changing A/B also resizes' note, which the schema does not state. It reinforces rather than duplicates the schema's unit and name guidance.

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?

States a specific verb ('Changes GDL parameters') and resource, and enumerates the element types it applies to (objects, lamps, doors, windows, skylights, zones, labels). This clearly separates it from siblings like modify_elements (geometry/properties) and get_gdl_parameters (read-only).

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?

Explains the two ways to supply values (per-element and top-level) and the precedence rule, and routes the agent to get_gdl_parameters for parameter names. It stops short of explicitly contrasting with modify_elements or modify_zones, so it lacks full 'when-not' guidance.

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

set_geo_locationSet project locationA
DestructiveIdempotent

Changes the project location (Options > Project Preferences > Location / Survey Point). Give only the fields to change. Changing northDirection or the survey point needs an unlocked Survey Point (pass unlockSurveyPoint: true to unlock temporarily). Date/location changes also recompute the sun position. Returns the new location (as get_geo_location).

ParametersJSON Schema
NameRequiredDescriptionDefault
altitudeNoAltitude above sea level (m)
dateTimeNoDate and local time for the sun position (given parts only)
latitudeNoDegrees, + = North
longitudeNoDegrees, + = East
summerTimeNoDaylight saving time (+1 h)
surveyPointNoSurvey Point position in project coordinates (m); z optional
displayUnitsNoHow Archicad displays these values (does not change the API units)
geoReferenceNoIFC map conversion / coordinate reference system data
northDirectionNoDirection of geographic North on the plan in degrees, CCW from the +X axis (90 = up/+Y)
timeZoneOffsetNoArchicad's time zone disambiguation index (keep the value from get_geo_location)
timeZoneMinutesNoTime zone offset from UTC in minutes, e.g. 240 = UTC+4
surveyPointLockedNoLock/unlock the Survey Point permanently
unlockSurveyPointNoTemporarily unlock a locked Survey Point for this change (re-locked afterwards)
surveyPointVisibleNoShow the Survey Point marker

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds useful behavioral context beyond annotations: temporary unlock behavior, lock-state dependency for northDirection/surveyPoint, side effect that date/location changes recompute the sun position, and the return shape. No annotation contradiction.

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

Conciseness5/5

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

Front-loads the primary purpose, then adds partial-update instruction, prerequisite, side effect, and return behavior in four compact sentences. No wasted language.

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 14-parameter nested mutation tool with no output schema, the description covers the essential context: partial updates, survey point lock/unlock prerequisite, sun-position recomputation, and return value analogous to get_geo_location. Combined with 100% schema coverage and annotations, an agent has enough to call it correctly.

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 baseline is 3. The description adds semantic guidance beyond the schema by clarifying partial-update semantics ('Give only the fields to change') and the conditional use of unlockSurveyPoint. It also ties the return value to get_geo_location, helping interpret the result object.

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?

States a specific verb ('Changes') and resource ('project location'), plus the Archicad UI path for disambiguation. It also references the sibling read tool indirectly by noting the return value is 'as get_geo_location', making the mutation/read distinction clear.

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?

Explicitly says 'Give only the fields to change', covering partial-update usage. It gives a prerequisite for changing northDirection or the survey point (unlocked Survey Point; pass unlockSurveyPoint: true), including the temporary unlock behavior. It does not explicitly say to read current values first with get_geo_location, but the condition for unlock is well stated.

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

set_ifc_propertiesSet IFC properties / attributesA
DestructiveIdempotent

Adds or changes IFC properties stored on elements (custom psets such as 'CC_Pset' or standard ones like Pset_WallCommon), removes stored IFC properties, sets IFC attributes (Name, Description, ObjectType, Tag, LongName, ...) and adds/removes stored IFC classification references (IfcClassificationReference) — one undo step. Property kinds: Single {value}, List {values}, Bounded {lower?, upper?}, Enumerated {values (selected), options}, Table {definingValues, definedValues}. Values are written as given (no unit conversion). Returns {properties?, attributes?, classificationReferences?} with per-entry {succeeded, failed?: [{guid, error}]} | {error}. Read back with get_ifc_data {storedOnly: true}.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNameNoName of the undo step shown in Archicad
attributesNo
propertiesNo
classificationReferencesNoIFC classification references STORED on elements (exported as IfcRelAssociatesClassification). References derived from Archicad classifications are read-only here — classify elements with set_element_classifications instead.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true) already signal a mutation, but the description adds substantial context: 'one undo step' (transaction scope), 'Values are written as given (no unit conversion)', per-entry succeeded/failed reporting, and remove semantics. These are behavioral traits the annotations do not convey.

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?

A single dense paragraph, front-loaded with the mutation scope before enumerating kinds and the return shape. It is appropriately sized for a complex multi-mode tool, though the property-kind list and return-shape sentence make it long and more schema-like than prose.

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 complex, annotation-covered mutation tool with no output schema, the description supplies what is missing: transaction behavior, no-unit-conversion semantics, the property-kind vocabulary, and the exact return shape {properties?, attributes?, classificationReferences?} with per-entry success/failure. An agent has enough to call it correctly.

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 only 50% schema coverage, the description compensates well by enumerating the five property kinds and their payload shapes (Single {value}, List {values}, Bounded {lower?, upper?}, Enumerated {values (selected), options}, Table {definingValues, definedValues}) — the trickiest part of the schema — plus the attribute names. It does not explain the undoName, element GUID, or referenceName semantics in prose, leaving some gaps.

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 names specific verbs and resources: adds/changes IFC properties, removes stored properties, sets IFC attributes (Name, Description, ObjectType...), and adds/removes classification references. It explicitly separates itself from set_element_classifications (for Archicad-derived classifications) and get_ifc_data (for reading back), so the agent can distinguish it from siblings without opening schemas.

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 routes the agent to siblings for adjacent tasks — read back with get_ifc_data {storedOnly: true}, and the schema notes set_element_classifications is the path for Archicad classifications. It gives clear context but no explicit when-not conditions; for example, it doesn't state when to prefer set_property_values or set_attribute_property_values over this IFC-specific tool.

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

set_layer_statesSet layer statesA
DestructiveIdempotent

Shows/hides, locks/unlocks, switches wireframe or the intersection group of layers directly (the active layer settings; saved combinations are not changed — use modify_attributes type LayerCombination for those). Items run in order in one undo step, so 'isolate' works as [{match: '*', hidden: true}, {layer: 'Стены', visible: true}]. The Archicad layer cannot be hidden/locked (skipped for patterns). Returns per item {changed: [{index, name}], changedCount, alreadyInStateCount, skipped?} | {error}.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersYes
undoNameNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations flag destructive=true and idempotent=true, but the description adds real behavioral context beyond them: items execute in order within a single undo step, the Archicad layer cannot be hidden/locked and is skipped for wildcard patterns, and the per-item return shape (changed/changedCount/alreadyInStateCount/skipped) is documented.

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?

Front-loaded with the core action, then constraints, then an example, then the return shape. Dense and mostly every-clause-earns-its-place, though the parenthetical about saved combinations is slightly packed together with the sibling routing.

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 no-output-schema mutation tool, the description supplies the ordering/undo semantics, the edge-case exclusions, the return shape, and a working example. An agent has everything needed to invoke it correctly.

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 schema already documents the nested item fields (layer/match/hidden/locked/visible/wireframe/intersectionGroup), so much of the semantics is structured. The description still adds value by showing how match and visible/hidden combine in the isolate example, but doesn't explain the accepted 'layer' forms (index/name/guid) that the schema covers.

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?

States a specific verb+resource (set layer states: show/hide, lock/unlock, wireframe, intersection group) and explicitly scopes it to 'active layer settings'. It distinguishes itself from siblings by naming modify_attributes type LayerCombination as the tool for saved combinations.

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

Usage Guidelines5/5

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

Explicitly says when NOT to use it ('saved combinations are not changed — use modify_attributes type LayerCombination for those') and provides a concrete 'isolate' recipe using [{match:'*', hidden:true}, {layer:'Стены', visible:true}]. Routing to the alternative is unambiguous.

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

set_layout_settingsSet layout settingsA
DestructiveIdempotent

Changes settings of layouts or master layouts. Per-layout fields: customLayoutNumbering + customLayoutNumber (custom sheet ID) and doNotIncludeInNumbering. Paper size and margins (MILLIMETERS) belong to the MASTER layout: set them on a MasterLayoutItem id — or on a layout with applyToMaster: true — and every layout using that master changes. displayMasterLayoutBelow works on MasterLayoutItem ids only. Page count / page index / revision state are read-only (see get_layout_settings). Only the given fields change; the result is read back, and fields Archicad did not apply are listed in ignored. Output: {results: [{layout, type, settings, ignored?} | {layout, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutsYesPer-layout changes: {layout, field: value, ...}

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true; the description goes further by warning that changing paper size/margins on a master propagates to every layout using it, that only supplied fields change, and that unapplied fields are returned in `ignored`. That is real behavioral context beyond the structured hints.

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?

Dense but front-loaded: the core action comes first, then field ownership rules, then the output shape. Every sentence carries information, though the field-routing rules and output spec make it longer than typical.

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?

With no output schema, the description supplies the return shape ({results: [{layout, type, settings, ignored?} | {layout, error}]}), covers the read-back/ignored-fields behavior, and clarifies master-vs-layout field ownership. Nothing an agent needs to invoke it correctly appears missing.

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 already 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema states only in fragments: that margins/size belong to the master, that applyToMaster is required to change them through a normal layout, and that master-only fields exist. Units (MILLIMETERS) are reinforced.

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?

Opens with a specific verb+resource ('Changes settings of layouts or master layouts') and immediately scopes which fields belong to layouts vs masters. It is clearly distinguishable from the sibling get_layout_settings, which it names as the read counterpart.

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?

Gives concrete routing rules: paper size/margins go on a MasterLayoutItem id or a layout with applyToMaster: true, displayMasterLayoutBelow works on master ids only, and read-only fields are deferred to get_layout_settings. It does not state when NOT to use this tool or mention bulk/limit constraints, but the field-routing guidance is explicit.

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

set_preferencesSet Project PreferencesA
DestructiveIdempotent

Changes Project Preferences (only the given sections/fields; read the current values with get_preferences first). Examples: {workingUnits: {lengthUnit: 'Millimeter', lengthDecimals: 0}}, {dimensions: {linear: {unit: 'Centimeter', decimals: 1}}}, {floorPlanCutPlane: {cutHeight: 1.2}}, {environment: {autoIntersect: false}}. Returns per-section {ok, value} | {error}. dataSafety is read-only. In Teamwork, Project Preferences must be reserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesNoZone area calculation preferences
legacyNoLegacy preferences
layoutsNoLayout preferences
dimensionsNoDimension display formats (Project Preferences > Dimensions)
environmentNoSession switches (not stored in Project Preferences). autoGroup and exportTolerance are read-only
workingUnitsNoWorking units (display only — the API always works in meters/degrees)
referenceLevelsNoThe two custom reference levels (e.g. Sea Level) used by elevation values
calculationRulesNoCalculation rules (conditional hole subtraction, special skins)
calculationUnitsNoCalculation units used by schedules/properties (Project Preferences > Calculation Units & Rules)
floorPlanCutPlaneNoFloor Plan Cut Plane settings (Document > Floor Plan Cut Plane)
imagingAndCalculationNoImaging and calculation preferences

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful non-annotation context: partial-merge behavior, the per-section {ok, value} | {error} return contract, read-only fields (dataSafety), and the Teamwork reservation requirement.

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?

Front-loads the verb and the partial-update constraint, then examples, then return contract and prerequisites. Dense but every sentence carries information; the inline examples are long but high-value for a deeply nested 11-parameter schema.

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 destructive, 11-parameter, deeply nested mutation tool with no output schema, the definition covers scope, prerequisites, read-before-write guidance, return shape, read-only fields, and Teamwork constraints. Nothing essential to calling it correctly is missing.

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, but the description goes beyond it by supplying four concrete payload examples (workingUnits, dimensions, floorPlanCutPlane, environment) that show the nested object shape an agent must construct. It doesn't enumerate every section, but the examples materially reduce invocation error.

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?

States a specific verb and resource ('Changes Project Preferences') and immediately clarifies scope with 'only the given sections/fields', which distinguishes a partial-update semantics tool from a full replacement. It also names the sibling get_preferences as the companion read tool, so an agent can place it precisely.

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?

Explicitly instructs to 'read the current values with get_preferences first' and states the Teamwork prerequisite that Project Preferences must be reserved. This is strong when-to-use and precondition guidance, though it never states when NOT to use the tool or which sections are mutually exclusive.

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

set_project_info_fieldsSet Project Info fieldsA
DestructiveIdempotent

Sets Project Info field values (shown by autotexts in title blocks/stamps). Identify each field by its database key (preferred; from get_project_info_fields) or by its exact localized name. createIfMissing: true adds a CUSTOM field for names that do not exist. Returns per-item results [{name, key, value, category, created?} | {error}]. Delete custom fields with delete_project_info_fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
createIfMissingNoCreate a custom Project Info field when 'name' matches no existing field (default false)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint and idempotent, so the bar is lower; the description usefully adds that createIfMissing creates a CUSTOM field, that names are matched as exact localized strings, and that results are per-item with a created flag. It omits that existing field values are overwritten and any permission requirements, so not a full 5.

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?

Three dense sentences with the core verb, identifier strategy, and return shape front-loaded; the delete pointer and result-shape sentence both earn their place. Very little waste, though the result-shape detail could arguably live with the tool metadata.

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 two-parameter mutation tool with no output schema, the description covers identifiers, the createIfMissing flag, clear semantics, and the return shape. It could still note overwrite behavior of existing values and any permission/auth context.

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 coverage is 50% and the description adds real meaning: key is the preferred identifier sourced from get_project_info_fields, name is the localized fallback, and value "" clears the field. These nuances go slightly beyond the field-level schema text.

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?

States a specific verb (Sets) and resource (Project Info field values), immediately scoping what is being written and even explaining what these fields feed into (autotexts in title blocks/stamps). It is clearly distinguishable from get_project_info_fields and delete_project_info_fields.

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?

Explicitly routes the agent to get_project_info_fields for keys and to delete_project_info_fields for removal, and explains the createIfMissing escape hatch. It does not state when-not to use it versus a generic property setter (set_property_values), but the context is clear enough.

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

set_property_valuesSet property valuesA
DestructiveIdempotent

Sets property values on many elements (and/or element tool defaults) in ONE undo step. Each entry sets one property on a list of elements: {elements, property, value} — or reset: true (back to the default/expression) or setUndefined: true. Works for user-defined properties and editable built-ins (e.g. {builtIn: 'General_ElementID'} = Element ID). Units: lengths m, areas m², volumes m³, angles DEGREES; option sets by display value. Fails per element (reported, others continue) when the property is not available for the element's classification (fix: modify_property_definitions {availableForElements}) or read-only (calculated / expression-based). Returns {results: [{property, guid, succeeded, failed?: [{guid|elementType, error}]} | {error}], succeeded, failed}.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYes
undoNameNoName of the undo step shown in Archicad

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile (destructive, idempotent), while the description adds substantial behavior: per-element failures are reported and others continue, failure causes are unavailable-for-classification or read-only/calculated properties, and the whole batch is a single undo step. This is exactly the kind of context annotations cannot carry.

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?

Front-loads the core action and scope, then packs format, units, failure behavior, and return shape into a compact block. It is dense but every clause carries information; the run-on structure slightly reduces readability.

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?

With no output schema, the description supplies the return shape ({results: [{property, guid, succeeded, failed?...}], succeeded, failed}), so an agent knows what success and partial failure look like. Combined with the failure-mode and undo-step disclosure, nothing critical is missing.

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 coverage is 50%, and the description compensates by documenting unit conventions (m, m², m³, degrees, option sets by display value), reset/setUndefined semantics, elementDefaults usage, and built-in property naming (General_ElementID = Element ID). Most of this is reinforced or restated from the schema, so it adds meaning but not full independence.

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?

States a specific verb+resource ('Sets property values on many elements (and/or element tool defaults) in ONE undo step') and distinguishes itself from sibling readers/writers like get_property_values and set_tool_defaults by covering both elements and tool defaults in one call.

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?

Gives clear usage context (per-entry shape, batch semantics, one undo step) and routes to modify_property_definitions for the availability fix and get_property_definitions {search} for finding names. It does not explicitly exclude alternatives such as set_attribute_property_values, so it falls short of a full when/when-not statement.

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

set_selectionSet selectionA
Idempotent

Changes the Archicad selection (shows the user which elements you mean, or prepares a selection-based command). mode 'set' replaces the selection (no elements = clear), 'add' adds, 'remove' deselects the given elements, 'clear' deselects everything. Elements on hidden/locked layers or on another story than the active floor plan may fail — see 'failed'. Output: {mode, requested, applied, failed: [{guid, error}], selectionCount}. Selection changes are not undo steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault 'set'
elementsNoElements to (de)select; required for 'add' and 'remove'

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it discloses that elements on hidden/locked layers or another story may fail, exposes the failure channel via the 'failed' array, and warns that selection changes are not undo steps — a critical behavioral trait the annotations do not convey.

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

Conciseness5/5

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

Front-loaded with the core purpose, then mode semantics, failure caveats, and output shape in order of importance. Dense but every sentence carries actionable information with no 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?

Although there is no output schema, the description supplies the return shape ({mode, requested, applied, failed, selectionCount}) and covers failure conditions and the undo caveat. Nothing needed to invoke or interpret the call is missing.

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 coverage is 100%, so the baseline is 3, but the description goes further by spelling out each enum mode's effect and clarifying that 'elements' is required for 'add' and 'remove'. This adds genuine semantic meaning beyond the schema's terse 'Default set'.

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?

States a specific verb and resource ('Changes the Archicad selection') plus its two purposes — visual highlighting and preparing a selection-based command. This clearly distinguishes it from siblings like get_selection and find_elements, which read rather than set the selection.

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?

Defines what each mode means ('set' replaces, 'add' adds, 'remove' deselects, 'clear' deselects everything), which is effectively when-to-use guidance for the operation. It does not explicitly point to alternatives such as get_selection for reading the current selection, leaving one inference to the agent.

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

set_suspend_groupsSuspend groupsA
DestructiveIdempotent

Reads or switches Archicad's 'Suspend Groups' mode (Edit > Grouping). When ON, members of groups can be selected and edited individually. The edit tools of this connector already handle groups via includeGroupMembers, so this is only needed for manual workflows. Omit suspend to just read the state. Returns {suspendGroups, changed}.

ParametersJSON Schema
NameRequiredDescriptionDefault
suspendNotrue = suspend groups (ON), false = groups active (OFF); omit to read

TDQS

A4.5/5.0
Behavior4/5

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

Adds real behavioral context beyond annotations: the meaning of ON/OFF (individual member editing), the fact that connector edit tools already cover groups, and the return shape {suspendGroups, changed}. It does not, however, explain why the annotation marks this as destructiveHint=true for what reads like a mode toggle, which is the one open behavioral question.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the action and scope, then usage guidance, then the return contract. Every sentence carries information; nothing is padding.

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 one-optional-parameter mode toggle with no output schema, the description supplies purpose, when-to-use, the read-only path, and the return fields. An agent has everything needed to invoke it correctly.

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% and the single parameter's true/false/omit semantics are fully documented in the schema. The description's 'Omit suspend to just read the state' restates the schema rather than adding syntax or format detail, so the baseline 3 applies.

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?

States a specific verb pair (reads or switches) plus the exact resource, Archicad's 'Suspend Groups' mode, and locates it in the UI (Edit > Grouping). An agent can immediately distinguish it from sibling element tools like group_elements or lock_elements.

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

Usage Guidelines5/5

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

Explicitly names the alternative mechanism (the edit tools handle groups via includeGroupMembers) and states the condition under which this tool is unnecessary ('only needed for manual workflows'), plus the read vs write trigger ('Omit suspend to just read the state'). Nothing is left to inference.

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

set_tool_defaultsSet tool default settingsA
DestructiveIdempotent

Changes the default settings of element tools (like the tool's Default Settings dialog), e.g. set the Wall tool to 3 m high 0.25 m composite walls on a given layer before drawing many walls, or prepare settings the user will draw with. Every field of the type's create_* tool can be set. Fields are applied independently: an invalid field is reported in 'rejected' without blocking the others. Output: {results: [{type, variation?, applied: [field], ignored?: [geometry fields], rejected?: [{field, error}], notes?, settings? (the resulting defaults)} | {error}]}. Save them as a favorite with create_favorite {toolDefaults: {type}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
defaultsYesOne entry per tool
returnSettingsNoReturn the resulting default settings of each tool (default true)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations supply the safety profile (destructiveHint=true, idempotentHint=true), so the bar is lower, and the description still adds real behavior: fields apply independently, invalid fields land in 'rejected' without blocking others, geometry/identity fields are silently ignored, and it spells out the result shape. It does not explain the destructive implication of overwriting existing defaults or whether the change is undoable.

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?

Front-loads the purpose, then an illustrative example, then failure semantics, then the output contract, then the follow-up tool — a sensible order with no filler sentences. It is dense and some of the field detail duplicates the schema, costing a little tightness.

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?

With no output schema and no annotations covering return values, the description carries the full burden and does so: it documents the per-entry result keys (applied, ignored, rejected, settings, error), the independent-field failure mode, and the create_favorite follow-up. An agent has what it needs to call and interpret this.

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% and the schema's 'fields' and 'variation' descriptions already carry the field-name/unit/per-type detail. The description's examples and notes largely restate that structured content, so it does not add much beyond the schema baseline.

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?

States a specific verb and resource ('Changes the default settings of element tools') and immediately contrasts the write path with the read path via get_tool_defaults and the persistence path via create_favorite. An agent can distinguish this from create_elements or modify_elements 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 Guidelines4/5

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

Gives a concrete usage scenario ('set the Wall tool to 3 m high ... before drawing many walls, or prepare settings the user will draw with'), which tells the agent when this tool applies. It also points to get_tool_defaults for discovery and create_favorite for saving, but never states when not to use it (e.g. one-off element creation should use create_* instead).

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

set_view_settingsSet view settingsA
DestructiveIdempotent

Changes view settings of the ACTIVE window (drawingScale, layerCombination, modelViewOptions, structureDisplay, renovationFilter, style3D) or — with 'view' — of a saved View Map view (additionally penSet, dimensionStyle, graphicOverrides, zoom, ignoreSavedZoom, renderingScene; the view then stores these settings). Attribute names are localized: list them with get_attributes (types LayerCombination, ModelViewOption, PenTable, DimensionStandard). Returns {changed, settings}.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoSaved view to change (View Map). Omit to change the current window
zoomNoSaved views only: stored zoom area (m)
penSetNoSaved views only: pen set (PenTable attribute)
style3DNo3D style name (current 3D window, or stored in a saved 3D view)
drawingScaleNoScale denominator N of 1:N, e.g. 50 or 100
dimensionStyleNoSaved views only: dimension standard
renderingSceneNoSaved views only: rendering scene name
ignoreSavedZoomNoSaved views only: open the view without its stored zoom
graphicOverridesNoSaved views only: graphic override combination name
layerCombinationNoLayer combination (name/index)
modelViewOptionsNoModel view options combination (name/index)
renovationFilterNoRenovation filter name or GUID (see get_view_settings availableRenovationFilters)
structureDisplayNoPartial structure display

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so safety is covered. The description adds real context beyond that: it explains that saved-view changes are persisted ('the view then stores these settings') and clarifies which parameters apply to which mode, plus the return shape {changed, settings}.

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?

Three dense sentences, front-loaded with the primary verb and scope, then the parameter grouping and the localization caveat. The parenthetical parameter lists are long but each item earns its place; nothing is padded or redundant.

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 13-parameter, nested-schema mutation tool with no output schema, the description covers mode selection, parameter applicability, the localization prerequisite, related lookup tools, and the return shape. Nothing an agent needs to invoke it correctly is missing.

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 coverage is 100%, so the baseline is 3. The description goes further by grouping parameters by mode (core settings for the active window; penSet, dimensionStyle, graphicOverrides, zoom, ignoreSavedZoom, renderingScene for saved views) and noting that attribute names are localized and retrievable via get_attributes.

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?

States a specific verb (Changes) and resource (view settings) and scopes it precisely: ACTIVE window by default, or a saved View Map view when 'view' is passed. It also enumerates the settings it can affect, so an agent knows exactly what the tool touches 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 Guidelines4/5

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

Clearly states the selection condition: omit 'view' to target the current window, pass 'view' to target a saved view. It also routes the agent to get_attributes for localized attribute names and to get_view_settings for availableRenovationFilters. It does not, however, contrast with sibling tools like set_3d_view or get_view_settings.

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

show_in_3dShow in 3DA
Idempotent

Shows elements in the 3D window: mode 'all' (Show All in 3D, resets a previous selection filter), 'selection' (the selected elements only) or give 'elements' (GUIDs: they get selected and only they are shown). Returns {mode, window}. Then use set_3d_view / capture_view.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault: 'elements' when elements are given, else 'all'
elementsNoElements to show (replaces the current selection)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare this is not read-only (readOnlyHint=false) while being idempotent and non-destructive; the description adds the key behavioral detail the annotation can't — that mode 'all' resets a previous selection filter, i.e. a state mutation. It also discloses the return shape {mode, window}, which no output schema provides.

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?

A single dense paragraph, front-loaded with the core action and then broken down per mode, closing with the recommended next tool. Every clause carries information, though the mode enumeration is somewhat compressed into one sentence.

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 2-parameter, zero-required tool with no output schema, the description supplies the missing return value ({mode, window}) and the workflow continuation. It is nearly complete; only an explicit indication of whether an existing view must be open is absent.

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 coverage is already 100%, so the baseline is 3, but the description goes beyond the enum values by explaining the effect of each mode and the conditional default ('elements' when GUIDs are supplied, else 'all'). It does not elaborate on the array/object GUID forms, which the schema already covers.

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?

States a specific verb+resource ('Shows elements in the 3D window') and then enumerates the three concrete modes with their distinct effects. It draws its own boundary against siblings set_3d_view and capture_view by naming them as follow-up steps rather than alternatives it duplicates.

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?

Gives clear context on how to select each mode ('all' resets a prior filter, 'selection' for the current selection, 'elements' for explicit GUIDs) and routes the agent to set_3d_view / capture_view afterward. It lacks an explicit when-not-to-use clause, but the mode decision guidance is concrete.

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

solid_operationSolid element operationA
DestructiveIdempotent

Solid Element Operations (Design > Solid Element Operations): cut or add 3D volumes between construction elements - e.g. subtract a morph/slab/object from walls to make a niche, cut walls with SubtractUpwards/SubtractDownwards against a roof or slab. By default (permanent=false) a LIVE link is created: it updates when elements move, operators are usually put on a hidden layer afterwards, and it can be removed with remove_solid_operation. permanent=true performs a destructive Boolean on MORPHS only: target and operators are replaced by the result morph(s). Give target/operators/operation for one operation or operations for several (one undo step). Returns {results: [{target, links: [{operator, operation} | {operator, error}]}]} or, when permanent, [{target, resultMorphs: [guid]}].

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget element that is cut/added to (keeps its identity)
operationNoSubtract (default: remove the operator's volume from the target), SubtractUpwards / SubtractDownwards (remove the operator's volume extruded upwards/downwards, e.g. cut a wall under a roof), Intersect (keep only the common part), Add (union)
operatorsNoOperator element(s) that cut/add to the target
permanentNotrue = destructive morph Boolean (morphs only, inputs replaced); default false = live link
operationsNoSeveral operations [{target, operators, operation?, ...}]
skipOperatorHolesNoIgnore holes of slab/roof operators (default false)
inheritOperatorAttributesNoNew cut surfaces take the operator's surface/attributes (default false)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description adds real behavioral context: live links update when elements move, operators are typically hidden, permanent=true replaces target and operators with result morph(s), and multiple operations collapse into one undo step. This is substantially more than the annotations convey.

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 dense but front-loaded, leading with the core action and examples before defaults and return shape. It is a long single block with some run-on structure, but nearly every clause carries load-bearing information, so little could be cut.

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 complex, destructive tool with no output schema, the description supplies the return shape (results with links or resultMorphs), the undo semantics, the morph-only restriction, and the live-link lifecycle. An agent has everything needed to call it correctly and interpret results.

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 coverage is 100%, so the baseline is 3, but the description earns extra credit by explaining the semantic effect of `permanent` (destructive morph-only Boolean vs live link) and that the `operations` array constitutes one undo step. It does not, however, cover skipOperatorHoles or inheritOperatorAttributes, which the schema handles alone.

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 gives a specific verb+resource ('cut or add 3D volumes between construction elements') and concrete examples (subtract a morph/slab/object from walls, cut walls under a roof). It is unmistakable against siblings and explicitly names remove_solid_operation as the inverse operation.

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

Usage Guidelines5/5

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

It clearly states when to use the default live link vs permanent=true, including the crucial restriction that permanent is morphs-only and destructive, and directs removal to remove_solid_operation. It also explains the single-vs-multiple invocation paths (target/operators/operation vs operations).

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

teamwork_receiveTeamwork ReceiveA
Idempotent

Teamwork 'Receive': downloads the changes that other team members have sent, updating the local model. Output: {isTeamwork: true, received: true}. In a solo (non-Teamwork) project this does nothing and returns {isTeamwork: false, message} — that is not an error: everything is editable without reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare a non-read-only, idempotent, non-destructive, open-world operation; the description is consistent and adds real context by disclosing the no-op-in-solo-projects behavior and that it should not be treated as an error. It does not discuss merge conflicts, reservations, or failure modes, which would be the next useful layer.

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

Conciseness5/5

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

Front-loads the core action, then the success output shape, then the solo-project edge case. Every clause carries information; nothing is padded.

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?

With no input parameters and no output schema, the description compensates by documenting both return shapes and the non-error interpretation of the solo case, which is everything an agent needs to invoke and interpret this tool.

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 tool takes zero parameters, so the baseline is 4; there is nothing parameter-level that needs explanation, and the description correctly spends no words on parameters.

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?

States a specific verb and resource ('downloads the changes that other team members have sent, updating the local model'), which is unambiguous and immediately distinguishable from the sibling teamwork_send.

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?

Explains the solo/non-Teamwork case explicitly ('does nothing and returns {isTeamwork: false, message} — that is not an error'), which tells an agent when the call is a no-op and how to interpret the result. It stops short of naming sibling alternatives (teamwork_send, get_teamwork_status) for the shared-project case.

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

teamwork_sendTeamwork SendA

Teamwork 'Send': uploads your changes to the BIMcloud/BIMserver so team members can receive them (reserved elements stay reserved). Output: {isTeamwork: true, sent: true}. In a solo (non-Teamwork) project this does nothing and returns {isTeamwork: false, message} — that is not an error: everything is editable without reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoComment stored with the sent changes (shown in the project history)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true), but the description adds real value beyond them: reserved elements stay reserved, and the solo-project no-op returns {isTeamwork: false, message} without being an error. It does not mention permission/reservation prerequisites for a successful send, keeping it short of a 5.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the action and immediately followed by the output shape and the important non-error caveat. Every clause earns its place.

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 no output schema, the description helpfully inlines both return shapes ({isTeamwork: true, sent: true} and the solo-case object), which is exactly what the agent needs. It is close to complete for a one-parameter mutation; only the requirement to hold the relevant reservations before sending is left implicit.

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% and the single 'comment' parameter is already documented in the schema (stored with the sent changes, shown in project history). The description adds no parameter-level meaning, so the baseline 3 applies.

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?

States a specific verb and resource ('uploads your changes to the BIMcloud/BIMserver') plus the effect on team members, and the direction of the operation implicitly separates it from teamwork_receive. An agent can tell what this does 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 Guidelines4/5

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

Provides clear contextual guidance for the solo (non-Teamwork) case — the call is a harmless no-op, not an error — which tells the agent when the tool's null result is expected. It stops short of explicitly naming alternatives such as teamwork_receive or get_teamwork_status for other situations.

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

trim_elementsTrim elements to roof/shellA
DestructiveIdempotent

Trims construction elements (walls, columns, beams, slabs, roofs, shells, curtain walls, windows/doors/skylights) to a Roof or Shell (Design > Connect > Trim Elements to Roof/Shell), e.g. cut gable walls to the roof slope. With trimWith (a roof/shell GUID) every element in elements is trimmed by it using trimType; without it the roofs/shells contained in elements trim the other elements (default: keep the part below/inside). Returns {results: [{guid, trimmedBy: [{guid, trimType}]} | {guid, error}]}; undo with remove_trim.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElements to trim (and, without trimWith, the trimming roofs/shells)
trimTypeNoNeeds trimWith. KeepInside (default) = keep the part inside/below the roof or shell (typical: walls under a roof); KeepOutside = keep the part outside/above; KeepAll = keep all parts
trimWithNoThe Roof or Shell that trims the elements

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so safety is covered. The description adds useful behavioral context beyond annotations: the default keep-part-below/inside behavior, the fact that per-element results can contain errors, and that undo is available via remove_trim. It does not mention permissions or rate limits, so it stops short of a 5.

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 a single dense paragraph but front-loads the core operation and then details modes, return shape, and undo. It is somewhat long, yet every sentence adds actionable information; there is little wasted text.

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?

There is no output schema, but the description supplies the return shape ({results: [{guid, trimmedBy} | {guid, error}]}) and the undo path. Together with annotations covering destructive and idempotent behavior, an agent has enough context to call the tool correctly and understand consequences.

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. The description meaningfully adds operational semantics beyond the schema, especially the interaction between elements, trimWith, and trimType, and the default behavior when trimWith is omitted.

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 states a specific verb and resource: 'Trims construction elements ... to a Roof or Shell', and enumerates the element types affected (walls, columns, beams, slabs, roofs, shells, curtain walls, windows/doors/skylights). It also distinguishes the operation from the undo sibling by naming remove_trim, so an agent can identify it without opening other schemas.

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 clearly explains the two operating modes: with trimWith, elements are trimmed by the given roof/shell; without trimWith, roofs/shells in elements trim the other elements. It also gives a concrete example ('cut gable walls to the roof slope') and points to remove_trim for undo, but does not explicitly state when not to use this tool versus other modification tools.

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

undoUndoA
Destructive

Undos the last Archicad operation(s), exactly like Edit > Undo. Every connector create/modify tool call is ONE undo step (its name ends with '(Claude)'), so steps: 1 reverts one whole tool call. The Archicad 26 API has no undo function: this triggers Archicad's Edit menu item (macOS). Returns {performed, requested, undone (menu titles, e.g. 'Undo Create walls (Claude)'), next}. dryRun: true only reports what would be undone next. Note: undo also reverts changes made by the user or other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoPerform even if Archicad reports the menu item as disabled (use only if the state looks stale)
stepsNoNumber of steps (default 1)
dryRunNoOnly report the current Edit > Undo menu title/enabled state and the last run

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructive/non-idempotent, but the description adds substantial value beyond them: the (Claude)-suffixed one-step-per-tool-call semantics, the macOS-only API limitation requiring a menu-item trigger, the explicit return object shape, and the caveat that undo reverts user/other-tool changes. This is rich behavioral disclosure.

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?

Front-loaded with the core action and scope, then builds out semantics; nearly every clause carries non-obvious information. It is denser and longer than the ideal, but there is little waste.

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 mutation tool with no output schema, the description supplies the return shape (performed, requested, undone, next), the dryRun preview behavior, and the cross-user side-effect warning, so an agent has everything needed to invoke it correctly.

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 coverage is 100%, so the baseline is 3, but the description adds real semantics: it clarifies that steps counts whole tool calls (not raw operations) and that dryRun reports what would be undone next. Only 'force' is left to the schema alone.

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?

States a specific verb (Undos) and the precise resource/scope (last Archicad operation(s)), and anchors it to a familiar UI analog (Edit > Undo). It is trivially distinguishable from the sibling 'redo' and from all create/modify tools.

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?

Gives clear operating context: steps:1 reverts one whole tool call, dryRun reports without performing, and a warning that undo may also revert user/other-tool changes. It does not explicitly route the agent to 'redo' or state when NOT to use it, so it stops short of full when/when-not guidance.

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

ungroup_elementsUngroup elementsA
DestructiveIdempotent

Dissolves groups (Edit > Grouping > Ungroup). Pass group GUIDs, or any member element (its top-level group is dissolved). One level per call like Archicad: nested sub-groups survive unless completely=true. Returns {results: [{guid, dissolvedGroups: [guid], elementCount, remainingGroup?} | {guid, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesGroup GUIDs or member element GUIDs
completelyNotrue = also dissolve all nested sub-groups (default false: one level)

TDQS

A4.5/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: one-level-per-call semantics mirroring Archicad, survival of nested sub-groups unless completely=true, and the shape of the return payload including per-guid error entries. It does not spell out the fate of the member elements after dissolution or permission requirements, so it falls short of a full 5.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action and input contract, followed by the nesting rule and return shape. No filler or repetition of the title.

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?

Despite having no output schema, the description inlines the response structure (dissolvedGroups, elementCount, remainingGroup, error), and the destructive/idempotent annotations are complemented by the one-level dissolution semantics. An agent has everything needed to call it correctly.

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 coverage is 100%, so the baseline is 3. The description goes beyond the schema by clarifying that passing any member element dissolves its top-level group, a semantic the schema only hints at with 'Group GUIDs or member element GUIDs'.

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?

States a specific verb and resource ('Dissolves groups') and even anchors it to the Archicad menu path (Edit > Grouping > Ungroup), which distinguishes it clearly from siblings like group_elements, merge_elements, and unmerge_elements.

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?

Explains exactly what input is acceptable (group GUIDs or any member element, with the top-level group being dissolved) and clarifies the scope of a single call. It gives strong context but does not name a sibling alternative or an explicit when-not-to-use condition.

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

unlock_elementsUnlock elementsA
DestructiveIdempotent

Unlocks locked elements (Edit > Locking > Unlock). Call this when another tool reports 'is locked'. Elements on a LOCKED LAYER need the layer unlocked instead (layer attribute tools). Returns {results: [{guid, locked: false} | {guid, error}]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElements to edit: GUID strings (or {guid}) of any element type, e.g. from get_element_details / element search tools. A group GUID stands for all elements of that group.
includeGroupMembersNoDefault false: ONLY the listed elements are affected even when they belong to groups (Suspend Groups is switched on for the duration of the call and restored afterwards). true: all members of their (top-level) groups are affected as well.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true), so the safety burden is covered. The description adds per-guid outcome semantics ('{guid, locked: false} | {guid, error}'), signalling partial failure is possible, plus the layer caveat — real information beyond the annotations, though it doesn't state auth/reservation prerequisites.

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

Conciseness5/5

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

Three sentences, zero waste: capability first, then the trigger and the exclusion, then the return shape. Every sentence carries distinct information.

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?

No output schema exists, and the description compensates by specifying the return shape. Combined with the sibling-routing guidance and fully covered parameters, an agent has everything needed to invoke it correctly.

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% and both parameters (elements, includeGroupMembers) are fully documented in-schema, including the Suspend Groups subtlety. The description adds no syntax or format detail beyond that, so the baseline 3 applies.

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?

States a specific verb+resource ('Unlocks locked elements') and anchors it to the UI path (Edit > Locking > Unlock). It is immediately distinguishable from the sibling lock_elements and from the layer-state tools it explicitly excludes.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Call this when another tool reports is locked') and an explicit when-not with the correct alternative ('Elements on a LOCKED LAYER need the layer unlocked instead (layer attribute tools)'). Nothing is left to inference.

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

unmerge_elementsUnmerge elementsA
DestructiveIdempotent

Removes merge connections created by merge_elements. Give pairs [{element, otherElement}] and/or elements (all merges of these). Returns {results: [{element, otherElement, removed: true} | {..., error}], removedCount}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pairsNo
elementsNoRemove every merge connection of these elements

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so safety/behavior basics are covered. The description adds valuable return-shape detail ({results:[...], removedCount} with per-item removed/error), which is beyond what annotations provide. It doesn't mention auth or whether removed merges are reversible, but the return contract is a genuine addition.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the action and inverse reference, then the parameter modes and return shape. No filler; every clause carries information.

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 destructive mutation with no output schema, the description supplies the return shape, the parameter modes, and the inverse-operation link. Missing only edge details like limits (maxItems 1000/5000), behavior when a merge doesn't exist, and any permission requirements, but it is largely sufficient to call correctly.

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 coverage is only 50%, so the description must compensate, and it partly does: 'give pairs [{element, otherElement}] and/or elements (all merges of these)' clarifies that pairs targets specific connections while elements removes all merges of an element. This adds meaning beyond the schema, though it doesn't explain the guid-object alt form, maxItems limits, or overlap semantics between the two params.

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?

States a specific verb+resource ('Removes merge connections') and explicitly ties it to the inverse operation ('created by merge_elements'), which is a named sibling. An agent can immediately distinguish it from merge_elements and remove_solid_operation.

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?

It names the originating operation (merge_elements) and the two input modes (pairs and/or elements), implying when each applies. However, it doesn't state when to use pairs vs elements, nor any prerequisites (e.g. does the merge need to exist, error handling). Usage is implied rather than explicit.

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

update_drawingsUpdate drawings from their viewsA
DestructiveIdempotent

Refreshes placed drawings from their source views: pass drawing guids, layouts, or all: true. Archicad 26 has no direct update call, so the connector opens each affected layout (Archicad refreshes outdated auto-update drawings when a layout is shown), temporarily switching manual-update drawings to automatic (includeManual, default true). Returns per drawing statusBefore / statusAfter (UpToDate | Modified | Unknown) and counts. Publishing a set (publish_publisher_set) also updates the drawings it contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoUpdate the drawings of every layout
layoutsNoUpdate every drawing on these layouts
drawingsNoDrawing element guids (get_layout_drawings)
includeManualNoAlso refresh drawings set to manual update (default true)
restoreWindowNoBring back the window that was in front before the export (default true)

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: it discloses the workaround mechanism (opening each affected layout so Archicad refreshes outdated auto-update drawings), the temporary manual-to-automatic switch controlled by includeManual, and the per-drawing statusBefore/statusAfter return shape. Annotations flag mutation/destructiveness, and the description explains what is actually being changed and that it is temporary.

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?

Front-loaded with purpose and then the input modes, with the implementation detail and return format last. Dense and mostly efficient, though the parenthetical explanation of the layout-refresh mechanism is a long clause that could be tightened.

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?

There is no output schema, and the description compensates by describing the return (statusBefore/statusAfter values and counts). Combined with the disclosed refresh mechanism and input modes, an agent has everything needed to invoke the tool correctly.

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 coverage is 100%, so the baseline is 3, but the description adds mode-selection semantics (drawings vs layouts vs all) and calls out the includeManual default of true, which helps an agent understand that manual drawings are refreshed by default. It does not restate GUID formats, which the schema already covers in detail.

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?

States a specific verb+resource ('Refreshes placed drawings from their source views') and immediately differentiates from siblings by naming the input modes and explaining why a direct update call isn't used (Archicad 26 limitation). An agent can distinguish this from modify_drawings, place_drawing, and delete_drawings without opening any 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?

Gives clear context for selecting among the three input modes (drawing guids, layouts, or all: true) and names an alternative route ('Publishing a set (publish_publisher_set) also updates the drawings it contains'). It stops short of explicit when-not-to-use guidance, but the routing context is strong.

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

update_zonesUpdate zones (re-detect boundaries)A
DestructiveIdempotent

Equivalent of Archicad's Design > Update Zones for AUTOMATIC zones: after walls/columns/room separators were moved, added or deleted, re-detects each zone's boundary from its reference point (a temporary zone is placed there and deleted again) and applies it. Manual zones are skipped (change them with modify_zones). Default: all automatic zones of the project (narrow with 'zones' or 'stories'). method 'copyBoundary' (default) keeps the zone GUID and writes the new polygon into it; 'recreate' replaces each zone by a new one with the same settings, stamp parameters, element ID, classifications and custom property values (NEW GUIDs, associative labels are lost) — use it only if copyBoundary reports an error or verified:false. dryRun:true only reports which zones are 'outdated'. Returns {results: [{guid, status: updated|upToDate|outdated|recreated|skipped, before/after areas, verified, newGuid?} | {guid, error}], summary}.

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesNoZones to update (default: every automatic zone)
dryRunNoOnly check: report outdated zones (with the re-detected polygon) without changing them
methodNo'copyBoundary' (default, keeps GUIDs) or 'recreate' (fallback: new zones, new GUIDs)
storiesNoOnly zones on these story indices (0 = ground floor, negative = basements; see get_stories)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes well beyond them: it explains the temporary-zone mechanism, that 'recreate' yields NEW GUIDs and loses associative labels, and that dryRun is non-mutating. These are exactly the side effects an agent needs before choosing a method.

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?

Front-loaded with the purpose and the manual-zone exclusion, then defaults, then method tradeoffs, then return shape — a logical ordering with no filler. It is dense and long as a single block, which slightly hurts scanability, but every clause carries decision-relevant information.

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 4-param mutation tool with no output schema, the description supplies the missing pieces: default targeting, the semantics and risk of each method, the dryRun escape hatch, and even the result shape (status values, before/after areas, verified, newGuid). Nothing needed to call it safely is absent.

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?

Schema coverage is already 100%, yet the description still adds meaning the schema cannot: the semantic difference between copyBoundary (GUID-preserving) and recreate (GUID-breaking, label-losing), the default scope of zones/stories, and what dryRun actually reports. This is above the baseline-3 case where the schema carries the load.

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?

States a specific verb+resource (re-detect zone boundaries) with the Archicad menu equivalent, and explicitly scopes it to AUTOMATIC zones while naming modify_zones for manual ones and get_zones as the sibling reader. An agent can distinguish it from every neighboring zone tool 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 Guidelines5/5

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

Gives explicit when-to-use conditions: after walls/columns/separators change, default target set (all automatic zones, narrowable via zones/stories), and a clear fallback rule for method='recreate' (only if copyBoundary errors or returns verified:false). It also states the exclusion (manual zones skipped) and points to the alternative.

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

zoomZoomA
Idempotent

Zooms the active window: fit (whole drawing/model), box (2D rectangle in m), elements (GUIDs), selection, in/out by a factor, previous (undo zoom) or redraw. margin adds space around 2D zooms. Returns {mode, window: {..., zoom}}. Tip: zoom {mode:'elements', elements, margin: 0.2} and then capture_view to inspect specific elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
boxNomode 'box': area to show (m)
modeNofit = fit the whole drawing/model in the window (default; 'zoom extents'), box = show the rectangle 'box' (2D windows), elements = zoom to 'elements', selection = zoom to the selected elements, in/out = zoom by 'factor', previous = undo zoom 'steps', redraw = just redraw
stepsNomode 'previous': how many zoom steps to go back (default 1)
centerNomode 'in'/'out' in 2D: zoom around this point (default: window center)
factorNomode 'in'/'out': zoom factor (default 2)
marginNo2D: extra space around fit/box/elements/selection as a fraction of the area (e.g. 0.1 = 10% on each side)
elementsNomode 'elements': elements to zoom to

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the exact return shape ({mode, window:{...,zoom}}) and the semantics of margin as extra space around 2D zooms. It does not mention permissions or view-state side effects, but the bar is lower given the annotations.

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?

Two tight sentences plus a tip, all front-loaded with the tool's core behavior before secondary notes. Dense but not padded; the tip earns its place by showing a working call, though the mode enumeration slightly duplicates the schema enum.

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 no output schema, the description steps in by describing the return object, and it covers units and the margin modifier. For a 7-param tool with optional-only arguments, this is complete enough for correct invocation. Only the lack of any note on where the change takes effect (view vs document) is a minor gap.

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 coverage is 100%, so the schema already documents all 7 parameters including the mode enum, factor limits, and box coordinates. The description restates mode meanings but adds no syntax or format detail the schema lacks. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb (Zooms) and resource (the active window), then enumerates every mode (fit, box, elements, selection, in/out, previous, redraw) with a plain-language gloss. An agent can distinguish this from siblings like capture_view or go_to_view without opening any 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?

The description explains what each mode is for and ends with a concrete workflow tip pairing it with capture_view to inspect elements. It gives clear usage context, though it does not explicitly say when to prefer zoom over other navigation tools like open_view or set_3d_view.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 258 tool updatesv1.0.0
    • First observedadd_issue_comment
    • First observedadd_libraries
    • First observedapply_favorite
    • First observedapply_layer_combination
    • First observedarchicad_status
    • First observedattach_elements_to_issue
    • First observedcapture_view
    • First observedchange_library_part
    • First observedclone_project_map_item_to_view_map
    • First observedclose_project
    • First observedcopy_elements
    • First observedcopy_elements_to_stories
    • First observedcreate_angle_dimensions
    • First observedcreate_arcs
    • First observedcreate_attribute_folders
    • First observedcreate_beams
    • First observedcreate_building_materials
    • First observedcreate_circles
    • First observedcreate_classification_items
    • First observedcreate_classification_system
    • First observedcreate_columns
    • First observedcreate_composites
    • First observedcreate_curtain_walls
    • First observedcreate_details
    • First observedcreate_dimensions
    • First observedcreate_doors
    • First observedcreate_elements
    • First observedcreate_elevations
    • First observedcreate_favorite
    • First observedcreate_fills
    • First observedcreate_hatches
    • First observedcreate_hotspots
    • First observedcreate_interior_elevations
    • First observedcreate_issue
    • First observedcreate_labels
    • First observedcreate_lamps
    • First observedcreate_layer_combinations
    • First observedcreate_layers
    • First observedcreate_layout
    • First observedcreate_layout_subset
    • First observedcreate_level_dimensions
    • First observedcreate_library_part
    • First observedcreate_line_types
    • First observedcreate_lines
    • First observedcreate_meshes
    • First observedcreate_morphs
    • First observedcreate_objects
    • First observedcreate_openings
    • First observedcreate_pictures
    • First observedcreate_polylines
    • First observedcreate_profiles
    • First observedcreate_property_definitions
    • First observedcreate_property_groups
    • First observedcreate_radial_dimensions
    • First observedcreate_railings
    • First observedcreate_roofs
    • First observedcreate_sections
    • First observedcreate_shells
    • First observedcreate_skylights
    • First observedcreate_slabs
    • First observedcreate_splines
    • First observedcreate_stairs
    • First observedcreate_stories
    • First observedcreate_surfaces
    • First observedcreate_texts
    • First observedcreate_view_map_folder
    • First observedcreate_walls
    • First observedcreate_windows
    • First observedcreate_worksheets
    • First observedcreate_zone_categories
    • First observedcreate_zones
    • First observeddelete_attribute_folders
    • First observeddelete_attributes
    • First observeddelete_classification_items
    • First observeddelete_classification_systems
    • First observeddelete_drawings
    • First observeddelete_elements
    • First observeddelete_favorite
    • First observeddelete_hotlinks
    • First observeddelete_issue
    • First observeddelete_navigator_items
    • First observeddelete_project_info_fields
    • First observeddelete_property_definitions
    • First observeddelete_property_groups
    • First observeddelete_stories
    • First observeddetach_elements_from_issue
    • First observeddimension_walls
    • First observedduplicate_attributes
    • First observedelevate_elements
    • First observedexecute_addon_command
    • First observedexecute_json_api_command
    • First observedexport_3d_model
    • First observedexport_bcf
    • First observedexport_dwg
    • First observedexport_favorites
    • First observedexport_ifc
    • First observedexport_module
    • First observedexport_pdf
    • First observedfind_elements
    • First observedget_3d_view
    • First observedget_active_pen_tables
    • First observedget_attribute_folders
    • First observedget_attribute_property_values
    • First observedget_attributes
    • First observedget_bounding_boxes
    • First observedget_classification_availability
    • First observedget_classification_item_details
    • First observedget_classification_systems
    • First observedget_classification_tree
    • First observedget_component_property_values
    • First observedget_connected_elements
    • First observedget_connector_guide
    • First observedget_current_window
    • First observedget_databases
    • First observedget_dimension_anchors
    • First observedget_element_2d_geometry
    • First observedget_element_3d_geometry
    • First observedget_element_classifications
    • First observedget_element_components
    • First observedget_element_counts
    • First observedget_element_details
    • First observedget_element_edit_relations
    • First observedget_element_quantities
    • First observedget_element_relations
    • First observedget_element_types
    • First observedget_elements_by_classification
    • First observedget_elements_related_to_zones
    • First observedget_favorites
    • First observedget_gdl_parameters
    • First observedget_geo_location
    • First observedget_host_openings
    • First observedget_hotlinks
    • First observedget_ifc_data
    • First observedget_ifc_translators
    • First observedget_issue_comments
    • First observedget_issue_elements
    • First observedget_issues
    • First observedget_layout_drawings
    • First observedget_layout_settings
    • First observedget_libraries
    • First observedget_library_part_details
    • First observedget_library_part_scripts
    • First observedget_library_part_subtypes
    • First observedget_morph_geometry
    • First observedget_navigator_items
    • First observedget_navigator_tree
    • First observedget_preferences
    • First observedget_profile_preview
    • First observedget_project_info
    • First observedget_project_info_fields
    • First observedget_property_definitions
    • First observedget_property_ids_by_name
    • First observedget_property_values
    • First observedget_publisher_sets
    • First observedget_revision_changes
    • First observedget_revisions
    • First observedget_selection
    • First observedget_stories
    • First observedget_subelements
    • First observedget_supported_element_types
    • First observedget_teamwork_status
    • First observedget_tool_defaults
    • First observedget_view_settings
    • First observedget_zones
    • First observedgo_to_view
    • First observedgroup_elements
    • First observedimport_bcf
    • First observedimport_classifications_xml
    • First observedimport_favorites
    • First observedimport_property_definitions_xml
    • First observedlist_addon_commands
    • First observedlist_elements
    • First observedlist_views
    • First observedlock_elements
    • First observedmerge_elements
    • First observedmerge_file
    • First observedmirror_elements
    • First observedmodify_attributes
    • First observedmodify_beams
    • First observedmodify_classification_items
    • First observedmodify_classification_system
    • First observedmodify_columns
    • First observedmodify_curtain_wall_parts
    • First observedmodify_curtain_walls
    • First observedmodify_dimensions
    • First observedmodify_drawings
    • First observedmodify_elements
    • First observedmodify_meshes
    • First observedmodify_morphs
    • First observedmodify_openings
    • First observedmodify_pens
    • First observedmodify_property_definitions
    • First observedmodify_property_groups
    • First observedmodify_railings
    • First observedmodify_roofs
    • First observedmodify_shells
    • First observedmodify_slabs
    • First observedmodify_stairs
    • First observedmodify_stories
    • First observedmodify_zones
    • First observedmove_attributes_to_folder
    • First observedmove_elements
    • First observedmove_navigator_item
    • First observednew_project
    • First observedopen_project
    • First observedopen_view
    • First observedplace_drawing
    • First observedplace_hotlink
    • First observedpublish_publisher_set
    • First observedquit_archicad
    • First observedrebuild_model
    • First observedredo
    • First observedrelease_elements
    • First observedreload_libraries
    • First observedremove_libraries
    • First observedremove_solid_operation
    • First observedremove_trim
    • First observedrename_attribute_folder
    • First observedrename_favorite
    • First observedrename_navigator_item
    • First observedrender_view
    • First observedreserve_elements
    • First observedresize_elements
    • First observedrotate_elements
    • First observedsave_project
    • First observedsave_project_as
    • First observedsearch_library_parts
    • First observedselect_archicad_instance
    • First observedset_3d_view
    • First observedset_attribute_property_values
    • First observedset_current_story
    • First observedset_draw_order
    • First observedset_element_classifications
    • First observedset_gdl_parameters
    • First observedset_geo_location
    • First observedset_ifc_properties
    • First observedset_layer_states
    • First observedset_layout_settings
    • First observedset_preferences
    • First observedset_project_info_fields
    • First observedset_property_values
    • First observedset_selection
    • First observedset_suspend_groups
    • First observedset_tool_defaults
    • First observedset_view_settings
    • First observedshow_in_3d
    • First observedsolid_operation
    • First observedteamwork_receive
    • First observedteamwork_send
    • First observedtrim_elements
    • First observedundo
    • First observedungroup_elements
    • First observedunlock_elements
    • First observedunmerge_elements
    • First observedupdate_drawings
    • First observedupdate_hotlinks
    • First observedupdate_zones
    • First observedzoom

TDQS

A3.7/5.0

Scored across 258 tools

Disambiguation3/5

The set includes both generic and type-specific CRUD tools (create_elements vs create_walls, modify_elements vs modify_columns), plus several property/classification read families and escape hatches. Descriptions explicitly steer away from overlap, but with 258 tools an agent still faces many similar-looking choices.

Naming Consistency4/5

Nearly all tools use a consistent snake_case verb_noun pattern (create_walls, get_element_details, delete_navigator_items), with only a few noun-only exceptions like zoom, undo, and archicad_status. No camelCase or chaotic mixing is present.

Tool Count1/5

258 tools far exceeds any reasonable scoped surface, even for a complex BIM authoring domain. The sheer volume makes discovery and correct tool selection impractical.

Completeness5/5

The surface covers modeling, attributes, properties, classifications, documentation, publishing, exports, teamwork, issues, favorites, and navigation in remarkable depth. Only minor Archicad API limitations appear to be missing, and those are often documented.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    B
    maintenance
    Enables Claude to create, query, and modify BIM elements in Allplan via natural language, with full undo history support.
    4
    25
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables Claude to control AutoCAD—draw, edit, query, layers, blocks, annotations, screenshots, plot to PDF—using plain language.
    8
    2
    MIT