Skip to main content
Glama
Archicad MCP Connector

Archicad MCP Connector

Archicad MCP Connector

CI License: MIT

An MCP server that gives Claude full read/write control of Graphisoft Archicad 26, 27, 28 and 29 — 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.

  • One add-on source for Archicad 26–29 on macOS and Windows: the version differences of the C API (reorganized in Archicad 27, new C++ element APIs in 29) are bridged inside the add-on, the MCP server adapts to the version it is connected to. See Archicad versions.

  • Verified live against Archicad 26 (build 5002, macOS) and Archicad 29 (build 3100, Windows 11): unit tests + live regression suites across all families (npm run test:live); the Archicad 27 and 28 builds compile and link against the official DevKits in CI.

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-29 ── 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–29 API DevKits) 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, 27, 28 or 29 — one add-on build per version (tested live: 26.0.0 build 5002 Russian on macOS, 29.0 build 3100 international on Windows 11). Any localization works.

OS

macOS (Intel or Apple Silicon) or Windows 10/11 (x64; Windows on ARM runs the x64 Archicad and add-on under emulation).

Node.js

≥ 20

Add-on build (macOS)

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

Add-on build (Windows)

Visual Studio 2019, 2022 or 2026 (or its Build Tools) with the toolset the Archicad headers demand: v142 for Archicad 26–28 (MSVC v142 - VS 2019 C++ x64/x86 build tools), v143 (Visual Studio 2022) for Archicad 29; CMake, 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

export ARCHICAD_VERSION=26         # 26 (default), 27, 28 or 29: the scripts below build for and control that version
bash scripts/fetch-devkit.sh       # downloads Graphisoft's official API DevKit of that version (≈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 (Archicad 26), addon/build-ac<version>/ (others)
bash scripts/install-addon.sh      # copies it to ~/Library/ClaudeConnector/AC<version>/ 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.

Windows (PowerShell, from the repository folder; put your add-on ID into addon\mdid.local.cmake first):

powershell -ExecutionPolicy Bypass -File scripts\windows\build-addon.ps1 -ArchicadVersion 29            # -> addon\build-win-ac29\Release\ClaudeConnector.apx
powershell -ExecutionPolicy Bypass -File scripts\windows\build-addon.ps1 -ArchicadVersion 29 -Install   # also copies it into Archicad's Add-Ons folder (run as administrator)

-ArchicadVersion is 26 (default), 27, 28 or 29. The script downloads that Windows DevKit (≈65 MB) into .devkit\, picks a Visual Studio installation that has the right toolset (v142 for 26–28, v143 for 29) and builds the x64 add-on. Instead of -Install you can load the .apx from any folder with Options › Add-On Manager › Edit List of Available Add-Ons › Add. Restart Archicad afterwards.

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 — Settings › Developer › Edit Config opens ~/Library/Application Support/Claude/claude_desktop_config.json (Windows: %APPDATA%\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, on Windows C:\\Program Files\\nodejs\\node.exe with doubled backslashes in JSON) — GUI apps do not see your shell's PATH.

Archicad in a Windows virtual machine (Parallels on a Mac): install Node.js and this repository inside Windows (npm install && npm run build), then let Claude on the Mac start the server in the VM through Parallels' command line, which keeps the stdio connection:

claude mcp add archicad-windows -s user -- prlctl exec "Windows 11" --current-user "C:\Program Files\nodejs\node.exe" 'C:\Users\<you>\archicad-mcp-connector\dist\index.js'

("Windows 11" is the VM name from prlctl list -a; in Claude Desktop use the same command / args.) 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

Archicad versions

The same tools work on every supported version; where the Archicad API itself differs, this is what changes:

Archicad 26

27

28

29

Attribute folders

Layers, composites, profiles, surfaces, building materials

every attribute type except pens, fonts, dimension standards, model view options (the folder tools switch to the GUID-based official commands automatically)

←

←

Pens, fonts, dimension standards, model view options

attributes

own API — still listed as attribute types by get_attributes / modify_attributes

←

←

IFC data (get_ifc_data)

✓

✓

✓

✓ read through the new IFC API

Storing IFC properties / attributes / classification references (set_ifc_properties)

✓

✓

✓

✗ removed from the API: store Archicad properties / classifications and map them in the IFC translator

Opening tool

host fixed

←

←

new Opening API: modify_openings {owner} moves an opening to another host, cutElements / addCutElements / removeCutElements let one opening cut several elements

MEP systems as attributes

✓

✓

✓

none (Archicad 29 replaced them by MEP system groups)

Save as previous version (save_project_as {format: "previous"})

pln25

pln26

pln27

pln28

ifcXML export

✓

✗

✗

✗

New official JSON API commands of a version (e.g. API.GetAttributesIndices in 28) are always reachable through execute_json_api_command. archicad_status reports the connected version.

Limitations

  • No native undo API — undo/redo trigger Archicad's Edit menu and act on the whole undo history. This is implemented for macOS only; on Windows they report that they are not available.

  • 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; before Archicad 29 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 (Windows: %LOCALAPPDATA%\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
scripts/windows/         build-addon.ps1 (Windows build + install)
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), macOS and Windows, a check that docs/TOOLS.md is up to date, and builds of the add-on against the public Archicad 26, 27, 28 and 29 DevKits: universal (arm64 + x86_64) for macOS and x64 for Windows (scripts/windows/build-addon.ps1, v142 / v143 toolset). With the repository secrets AC_MDID_DEVELOPER / AC_MDID_LOCAL (your own Graphisoft add-on ID, never a borrowed one) the builds carry that ID and are uploaded as workflow artifacts. 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 (image downscaling uses PowerShell there); the add-on builds with scripts/windows/build-addon.ps1. The live-test and Archicad control scripts (scripts/*.sh) are macOS-only.

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.

Inputs: comments (required), undoName.

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.

Inputs: paths (required).

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?}.

Inputs: name (required), target, elements, undoName, +3 more.

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}.

Inputs: layerCombination (required).

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.

Inputs: no named parameters.

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}]}.

Inputs: issue (required), type, elements, undoName, +1 more.

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}}.

Inputs: view, zoom, width, format, +7 more.

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}].

Inputs: elements (required), keepSize, undoName, libraryPart, +1 more.

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.

Inputs: item (required), parent.

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.

Inputs: confirm (required), saveFirst, discardChanges.

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?}.

Inputs: vector (required), elements (required), count, includeGroupMembers.

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?}.

Inputs: stories (required), elements (required), includeGroupMembers.

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}].

Inputs: angleDimensions (required).

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.

Inputs: arcs (required).

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.

Inputs: folders (required), attributeType.

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.

Inputs: beams (required), undoName.

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.

Inputs: buildingMaterials (required), ifExists.

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.

Inputs: circles (required).

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}.

Inputs: items (required), system (required), parent, undoName.

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}.

Inputs: name (required), items, source, undoName, +4 more.

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).

Inputs: columns (required), undoName.

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.

Inputs: composites (required), ifExists.

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).

Inputs: curtainWalls (required), undoName.

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}.

Inputs: details (required), undoName.

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.

Inputs: dimensions (required).

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.

Inputs: doors (required).

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.

Inputs: elements (required), undoName.

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, ...}].

Inputs: elevations (required), undoName.

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.

Inputs: favorites (required).

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.

Inputs: fills (required), ifExists.

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.

Inputs: hatches (required).

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.

Inputs: hotspots (required).

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}.

Inputs: interiorElevations (required), undoName.

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.

Inputs: issues (required), undoName.

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).

Inputs: labels (required).

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}].

Inputs: lamps (required), undoName.

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.

Inputs: layerCombinations (required), ifExists.

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.

Inputs: layers (required), ifExists.

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.

Inputs: name (required), master, parent, customLayoutNumber, +2 more.

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'}.

Inputs: name (required), parent, startAt, ownPrefix, +8 more.

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}].

Inputs: levelDimensions (required).

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)

Inputs: name (required), a, b, type, +14 more.

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.

Inputs: lines (required).

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.

Inputs: lineTypes (required), ifExists.

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).

Inputs: meshes (required), undoName.

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.

Inputs: morphs (required), undoName.

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.

Inputs: objects (required), undoName.

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.

Inputs: openings (required).

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.

Inputs: pictures (required).

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).

Inputs: polylines (required).

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.

Inputs: profiles (required), ifExists.

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.

Inputs: definitions (required), undoName, createMissingGroups.

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}]}.

Inputs: groups (required), undoName.

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}].

Inputs: radialDimensions (required).

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.

Inputs: railings (required), undoName.

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).

Inputs: roofs (required), undoName.

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.

Inputs: sections (required), undoName.

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).

Inputs: shells (required), undoName.

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.

Inputs: skylights (required).

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).

Inputs: slabs (required), undoName.

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.

Inputs: splines (required).

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.

Inputs: stairs (required), undoName.

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}]}.

Inputs: stories (required).

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.

Inputs: surfaces (required), ifExists.

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.

Inputs: texts (required).

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.

Inputs: name (required), after, parent.

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.

Inputs: walls (required).

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).

Inputs: windows (required).

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}.

Inputs: worksheets (required), undoName.

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.

Inputs: zoneCategories (required), ifExists.

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.

Inputs: zones (required).

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}]}.

Inputs: folders (required), attributeType.

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}]}.

Inputs: type (required), attributes (required), force, undoName.

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}]}.

Inputs: items (required), system, undoName.

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}]}.

Inputs: systems (required), undoName.

delete_drawingsDelete placed drawingsA
Destructive

Deletes drawing elements from layouts (one undo step). The source views are not touched. Returns [{guid, deleted} | {error}].

Inputs: drawings (required), undoName.

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?}.

Inputs: elements (required), includeGroupMembers.

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.

Inputs: names (required).

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}]}.

Inputs: issues (required), undoName, acceptAllElements.

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}]}.

Inputs: items (required).

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}].

Inputs: fields (required).

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}]}.

Inputs: properties (required), undoName.

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.

Inputs: groups (required), undoName, deleteDefinitions.

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}.

Inputs: stories (required), dryRun, keepLevels.

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).

Inputs: issue (required), elements (required), undoName.

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.

Inputs: walls (required), mode, side, layer, +31 more.

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.

Inputs: type (required), attributes (required), ifExists.

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.

Inputs: deltaZ (required), elements (required), copy, count, +1 more.

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'.

Inputs: command (required), namespace, parameters.

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/

Inputs: command (required), parameters.

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)}.

Inputs: path (required), units, binary, format, +12 more.

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}.

Inputs: path (required), issues, overwrite, createFolders, +2 more.

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}.

Inputs: path (required), view, units, format, +12 more.

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}.

Inputs: path (required), names, overwrite, createFolders.

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.

Inputs: path (required), scope, format, elements, +5 more.

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}.

Inputs: path (required), elements, overwrite, useSelection, +1 more.

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).

Inputs: path, view, paper, layout, +6 more.

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.

Inputs: limit, types, layers, locked, +19 more.

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.

Inputs: no named parameters.

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.

Inputs: pens, includePens.

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.

Inputs: attributeType (required), depth, folder, includeAttributes.

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).

Inputs: attributes (required), scope, properties, includeDisplay.

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.

Inputs: type, limit, offset, detailed, +2 more.

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?}.

Inputs: elements (required), kind.

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).

Inputs: items, limit, system, properties.

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}]}.

Inputs: items (required), system, includeChildren.

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.

Inputs: includeItemCounts.

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.

Inputs: root, limit, format, search, +3 more.

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?}.

Inputs: properties (required), elements, components.

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.

Inputs: elements (required), types, includeOwner, includeTrims, +2 more.

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.

Inputs: no named parameters.

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.

Inputs: no named parameters.

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).

Inputs: types, search, includeViews, navigatorItems, +1 more.

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}]}.

Inputs: elements (required), near, limit, radius.

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.

Inputs: elements (required), kinds, maxPoints, summaryOnly, +3 more.

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).

Inputs: elements (required), mode, maxPolygons, maxVertices, +3 more.

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.

Inputs: elements (required), systems.

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.

Inputs: elements (required), properties.

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.

Inputs: types, layers, locked, region, +15 more.

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.

Inputs: elements (required).

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.

Inputs: elements (required).

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.

Inputs: elements (required), includeParts, coverElements, includeTotals, +3 more.

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.

Inputs: elements (required), includePolygons.

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?}]}.

Inputs: item (required), system, includeTypes, includeSubItems.

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).

Inputs: elements (required).

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.

Inputs: type, limit, names, folder, +5 more.

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.

Inputs: elements (required), names, search, includeHidden, +1 more.

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.

Inputs: no named parameters.

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...).

Inputs: hosts (required), details.

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}]}.

Inputs: include, elements, storedOnly, ifcGlobalIds, +1 more.

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.

Inputs: no named parameters.

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)}]}]}.

Inputs: issues.

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.

Inputs: types, issues.

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.

Inputs: limit, issues, offset, search, +3 more.

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.

Inputs: layouts, includeFrame, includeLinkInfo, includeMasterLayouts.

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.

Inputs: layouts (required).

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.

Inputs: no named parameters.

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).

Inputs: libraryParts (required), includeHidden, parameterNames, includeParameters, +1 more.

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.

Inputs: libraryPart (required), scripts, maxLength.

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.

Inputs: type, limit, query, offset.

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.

Inputs: elements (required), maxVertices.

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}]}.

Inputs: ids (required), locate.

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.

Inputs: root, tree, limit, types, +4 more.

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.

Inputs: sections.

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'}).

Inputs: profiles (required), width, height, background.

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.

Inputs: includeTemplates.

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.

Inputs: search, category, nonEmptyOnly.

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?}.

Inputs: kind, limit, detail, groups, +9 more.

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.

Inputs: group, limit, offset, search, +5 more.

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.

Inputs: scope, elements, properties, includeDisplay, +1 more.

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.

Inputs: name, limit, maxDepth.

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}]}.

Inputs: layouts, elements, changeIds, allLayouts, +2 more.

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).

Inputs: issue, include.

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'.

Inputs: limit, offset, onlyEditable, includePartial, +2 more.

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.

Inputs: atLevels, includeElementCounts.

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.

Inputs: elements (required), types, maxPerType, includeDetails.

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.

Inputs: no named parameters.

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.

Inputs: elements, objectSets, includeMembers, includeAccessRights.

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.

Inputs: type, types, variation, gdlParameterNames, +6 more.

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).

Inputs: view.

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.

Inputs: limit, zones, offset, search, +6 more.

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}.

Inputs: view (required).

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.

Inputs: groups, elements, parentGroup.

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]}.

Inputs: path (required), undoName, openIssuePalette, alignBySurveyPoint.

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, ...}]}.

Inputs: xml, filePath, undoName, itemConflictPolicy, +1 more.

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.

Inputs: path (required), folder, importFolders, conflictPolicy.

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}.

Inputs: xml, filePath, undoName, conflictPolicy.

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.

Inputs: no named parameters.

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.

Inputs: limit, types, offset, includeTypes, +2 more.

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).

Inputs: limit, types, include, nameContains.

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?}.

Inputs: elements (required), includeGroupMembers.

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).

Inputs: elements (required).

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).

Inputs: path (required), name, angle, layer, +13 more.

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.

Inputs: elements (required), axis, copy, axisEnd, +3 more.

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}]}.

Inputs: attributes (required), undoName.

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.

Inputs: beams (required), undoName.

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}]}.

Inputs: items (required), system, undoName.

modify_classification_systemModify classification systemB
DestructiveIdempotent

Changes a classification system's name, editionVersion, description, source or editionDate. Returns {system}.

Inputs: system (required), name, source, undoName, +3 more.

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.

Inputs: columns (required), undoName.

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}].

Inputs: parts (required), undoName.

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}].

Inputs: curtainWalls (required), undoName.

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}].

Inputs: dimensions (required), undoName.

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}].

Inputs: drawings (required), undoName.

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}].

Inputs: elements (required), undoName.

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.

Inputs: meshes (required), undoName.

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.

Inputs: morphs (required), undoName.

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}].

Inputs: openings (required).

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}.

Inputs: pens (required), penTable, undoName.

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}]}.

Inputs: definitions (required), undoName.

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.

Inputs: groups (required), undoName.

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}].

Inputs: railings (required), undoName.

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.

Inputs: roofs (required), undoName.

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.

Inputs: shells (required), undoName.

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.

Inputs: slabs (required), undoName.

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}].

Inputs: stairs (required), undoName.

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.

Inputs: stories (required).

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.

Inputs: zones (required).

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}}.

Inputs: target (required), attributeType (required), folders, attributes.

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: []}.

Inputs: moves, vector, elements, includeGroupMembers.

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}.

Inputs: item (required), parent (required), after.

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}.

Inputs: reset, template, saveFirst, discardChanges.

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}.

Inputs: path (required), saveFirst, discardChanges, archiveLibraryFolder.

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.

Inputs: name, story, window, element, +4 more.

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.

Inputs: drawings (required), undoName, restoreWindow.

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.

Inputs: name, index, items, outputPath, +1 more.

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.

Inputs: confirm (required), saveFirst.

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).

Inputs: mode.

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.

Inputs: force, steps, dryRun.

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.

Inputs: elements, objectSets, enableDialogs, hotlinkCacheManagement.

reload_librariesReload librariesA
DestructiveIdempotent

Reloads all loaded libraries (picks up library part files changed on disk, fixes stale 'missing' parts).

Inputs: no named parameters.

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.

Inputs: libraries (required).

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}.

Inputs: links, elements.

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}.

Inputs: pairs, elements.

rename_attribute_folderRename attribute folderA
DestructiveIdempotent

Renames an attribute folder (path or GUID). Output: {ok, folder: {path, guid}}.

Inputs: folder (required), newName (required), attributeType (required).

rename_favoriteRename favoriteA
DestructiveIdempotent

Renames a favorite. Output: {name, newName, renamed: true}. Fails when newName is already used.

Inputs: name (required), newName (required).

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).

Inputs: item (required), newId, newName.

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.

Inputs: scene, width, format, height, +4 more.

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.

Inputs: elements, objectSets, enableDialogs, hotlinkCacheManagement.

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.

Inputs: ratio (required), elements (required), copy, center, +1 more.

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.

Inputs: angle (required), elements (required), copy, count, +2 more.

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}.

Inputs: no named parameters.

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}.

Inputs: path (required), format, archive, overwrite, +1 more.

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.

Inputs: type, limit, query, offset, +3 more.

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).

Inputs: port (required).

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.

Inputs: sun, mode, roll, style, +15 more.

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.

Inputs: values (required), undoName.

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}.

Inputs: story (required), openFloorPlan.

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?}]}.

Inputs: elements (required), level, steps, action, +1 more.

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.

Inputs: assignments (required), system.

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.

Inputs: elements (required), params, undoName.

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).

Inputs: altitude, dateTime, latitude, longitude, +10 more.

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}.

Inputs: undoName, attributes, properties, classificationReferences.

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}.

Inputs: layers (required), undoName.

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}]}.

Inputs: layouts (required).

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.

Inputs: zones, legacy, layouts, dimensions, +7 more.

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.

Inputs: fields (required), createIfMissing.

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}.

Inputs: values (required), undoName.

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.

Inputs: mode, elements.

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}.

Inputs: suspend.

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}}.

Inputs: defaults (required), returnSettings.

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}.

Inputs: view, zoom, penSet, style3D, +9 more.

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.

Inputs: mode, elements.

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]}].

Inputs: target, operation, operators, permanent, +3 more.

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.

Inputs: no named parameters.

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.

Inputs: comment.

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.

Inputs: elements (required), trimType, trimWith.

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.

Inputs: force, steps, dryRun.

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}]}.

Inputs: elements (required), completely.

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}]}.

Inputs: elements (required), includeGroupMembers.

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}.

Inputs: pairs, elements.

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.

Inputs: all, layouts, drawings, includeManual, +1 more.

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}.

Inputs: zones, dryRun, method, stories.

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.

Inputs: box, mode, steps, center, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    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 recent community 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.
      2
      25
      -
    • A
      license
      C
      quality
      C
      maintenance
      Enables Claude and other MCP clients to query and modify an open Archicad project through Graphisoft's official JSON API and the ~250 commands of the Tapir add-on, covering model summaries, quantity takeoffs, quality checks, element creation (walls, slabs, zones), ID management, undo/journal history, and execution of arbitrary API or Tapir commands.
      53
      MIT
    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables Claude and ChatGPT to read and drive Trimble SketchUp for modelling, massing and GFA/FAR studies, architectural elements, scenes and sun studies, model audits, schedules, import/export and Ruby scripting. It also returns captured view images so the AI can see the model, backed by a team rules/guides knowledge base.
      MIT