Archicad MCP Connector
Gives full read/write control of a live Graphisoft Archicad 26 project through ~260 tools in 21 families. Can create and modify every element type (walls, columns, beams, slabs, roofs, shells, meshes, morphs, curtain walls, stairs, railings, zones, doors/windows/skylights/openings, objects/lamps, custom GDL parts), perform 2D drafting, dimensions and labels, manage stories, attributes, views and 3D, capture rendered views as images, create sections/elevations/details/worksheets, build layouts and drawings, and export to PDF/IFC/DXF/OBJ/STL or publish plan books. Also handles properties, classifications, IFC data, issues & BCF, favorites, tool defaults, Teamwork, revisions, undo/redo, and project save/open, plus raw access to every official JSON API command via a companion Archicad add-on.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Archicad MCP Connector add a 6m exterior wall on the ground floor, then capture a view"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Archicad MCP Connector
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_viewso 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 theget_connector_guidetool) 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.
|
|
|
|
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_statustells 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 ( |
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 templatescripts/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."
Sign in at archicadapi.graphisoft.com with your Graphisoft ID and register as a developer → you get a Developer ID.
In your profile open Add-ons, create "Claude Connector" → Local ID.
Create
addon/mdid.local.cmake(git-ignored):set (AC_MDID_DEVELOPER <your developer id>) set (AC_MDID_LOCAL <your add-on local id>)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.jsClaude 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 |
| auto | Fixed JSON API port. Default: scan 19723-19744 and prefer an instance with the add-on. |
|
| Archicad host. |
|
| Per-request timeout (renders/exports pass their own longer timeouts). |
|
| Which tool families to load (fewer tools = less context). Comma list of families and presets, |
| – | Path to the ODA File Converter executable; enables real |
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:
Orient → discover → plan → build in batches → verify → document. Start with
archicad_status,get_project_info,get_stories; look up names withget_attributes/search_library_parts.Units are meters and degrees; elevations are relative to the element's home story.
Walls:
referenceLine: "Outside"= the outer face, body to the right of begin→end — draw exterior walls clockwise. Slabs:levelis the top surface. Openings: host wall GUID + distance from the wall begin to the centre.Look at the result:
capture_view {"threeD": {"mode": "axonometric", "azimuth": 225, "altitude": 35}},capture_view {"view": {"window": "FloorPlan", "story": 0}, "zoom": {"mode": "fit"}}.Everything is one undo step per call;
undo/redoexist.
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 |
|
elements |
|
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, |
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, |
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 | ← | ← |
IFC data ( | ✓ | ✓ | ✓ | ✓ read through the new IFC API |
Storing IFC properties / attributes / classification references ( | ✓ | ✓ | ✓ | ✗ removed from the API: store Archicad properties / classifications and map them in the IFC translator |
Opening tool | host fixed | ← | ← | new Opening API: |
MEP systems as attributes | ✓ | ✓ | ✓ | none (Archicad 29 replaced them by MEP system groups) |
Save as previous version ( | 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/redotrigger 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_dwgwrites 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_viewdepends on CineRender; if Cineware crashes on the machine it returns a blank image (flagged in the result) —capture_viewstill 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 |
| Open or create a project (the API listens only while a project is open). |
Add-on commands "not available" |
|
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: |
"Unrecognized key(s)" | Inputs are strict — fix the field name the error mentions. |
Wrong names | Attribute/library names are localized — copy them from |
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/ CICall 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.mdis 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 secretsAC_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 toolsadd_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 librariesADestructiveIdempotent
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 favoriteADestructiveIdempotent
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 combinationADestructiveIdempotent
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 statusARead-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 issueADestructiveIdempotent
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)AIdempotent
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 elementsADestructiveIdempotent
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 projectADestructive
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 foldersADestructive
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 attributesADestructive
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 itemsADestructive
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 systemsADestructive
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 drawingsADestructive
Deletes drawing elements from layouts (one undo step). The source views are not touched. Returns [{guid, deleted} | {error}].
Inputs: drawings (required), undoName.
delete_elementsDelete elementsADestructive
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 favoritesADestructive
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_hotlinksDelete or break hotlinksADestructive
Removes hotlink nodes with ALL their placed instances (one undo step). keepElements: true breaks the link instead: the elements stay in the project as own, editable elements. Nested hotlinks go with their parent. Returns [{nodeGuid, name, deleted|broken, instanceCount} | {error}].
Inputs: nodes (required), keepElements.
delete_issueDelete issuesADestructive
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_project_info_fieldsDelete custom Project Info fieldsADestructive
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 definitionsADestructive
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 groupsADestructive
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 storiesADestructive
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 issueADestructiveIdempotent
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 elementsADestructive
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 commandADestructive
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 commandADestructive
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 BCFAIdempotent
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 favoritesAIdempotent
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 elementsARead-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 settingsARead-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 tablesARead-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 foldersARead-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 valuesARead-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 attributesARead-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 boxesARead-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 availabilityARead-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 detailsARead-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 systemsARead-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 treeARead-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 valuesARead-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 elementsARead-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 guideARead-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 windowARead-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 ...)ARead-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 pointsARead-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 geometryARead-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 geometryARead-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 classificationsARead-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 componentsARead-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 elementsARead-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 detailsARead-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 relationsARead-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 quantitiesARead-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 relationsARead-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 classificationBRead-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 typesARead-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 favoritesARead-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 elementsARead-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 locationARead-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 elementsARead-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_hotlinksHotlinks (sources and instances)ARead-onlyIdempotent
Lists hotlink nodes — hotlinked modules (.pln/.pla/.mod) and XRefs (DWG/DXF) — as a tree: nodeGuid, name, type, source path, sourceStatus (Available | Missing | NotAccessible | ...), story range, last update, nested children, and the placed instances (guid, home story, position {x,y,z} m, angle deg, mirrored, options, optional elementCount). Use nodeGuid with place_hotlink {node}, update_hotlinks and delete_hotlinks.
Inputs: types, includeInstances, includeElementCounts.
get_ifc_dataGet IFC dataARead-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 translatorsARead-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 commentsARead-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 elementsARead-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 issuesARead-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 layoutsARead-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 settingsARead-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 librariesARead-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 detailsARead-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 scriptsARead-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)ARead-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 geometryARead-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_preferencesGet Project PreferencesARead-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 imageARead-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 infoARead-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 fieldsARead-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 definitionsARead-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 definitionsARead-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 valuesARead-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 setsARead-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 changesARead-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 revisionsARead-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 selectionARead-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 storiesARead-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-elementsARead-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 typesARead-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 statusARead-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 settingsARead-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 settingsARead-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)ARead-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 viewAIdempotent
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 commandsARead-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 elementsARead-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 viewpointsARead-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 elementsADestructiveIdempotent
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 elementsADestructiveIdempotent
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 elementsADestructive
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 attributesADestructiveIdempotent
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 beamsADestructiveIdempotent
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 itemsADestructiveIdempotent
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 systemBDestructiveIdempotent
Changes a classification system's name, editionVersion, description, source or editionDate. Returns {system}.
Inputs: system (required), name, source, undoName, +3 more.
modify_columnsModify columnsADestructiveIdempotent
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 / framesADestructiveIdempotent
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 wallsADestructiveIdempotent
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 dimensionsADestructiveIdempotent
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 drawingsADestructiveIdempotent
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 elementsADestructiveIdempotent
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 meshesADestructiveIdempotent
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 morphsADestructiveIdempotent
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, openingsADestructiveIdempotent
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 pensADestructiveIdempotent
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 definitionsADestructiveIdempotent
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 groupsADestructiveIdempotent
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 railingsADestructiveIdempotent
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 roofsADestructiveIdempotent
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 shellsADestructiveIdempotent
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 slabsADestructiveIdempotent
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 stairsADestructiveIdempotent
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 storiesADestructiveIdempotent
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 zonesADestructiveIdempotent
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 folderADestructiveIdempotent
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 elementsADestructive
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.
new_projectNew projectADestructive
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 projectADestructive
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 / windowAIdempotent
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.
place_hotlinkPlace hotlinked modulesA
Places hotlinked modules (one undo step): from a file ('source': .pln / .pla / .mod — a hotlink node is created, or an existing node with the same file and story settings is reused) or another instance of an existing node ('node' from get_hotlinks). Position/angle/mirror set where the source's origin lands; storyIndex is the home story. The module stays linked: refresh it with update_hotlinks, break it into own elements with delete_hotlinks {keepElements: true} (or use merge_file). Returns [{guid, nodeGuid, nodeCreated, instance, node} | {error}]. XRef (DWG) attachment is not available through the Archicad 26 API.
Inputs: hotlinks (required), undoName.
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 ArchicadADestructive
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 / redrawAIdempotent
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.
redoRedoADestructive
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)ADestructiveIdempotent
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 librariesADestructiveIdempotent
Reloads all loaded libraries (picks up library part files changed on disk, fixes stale 'missing' parts).
Inputs: no named parameters.
remove_librariesRemove librariesADestructive
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 operationADestructiveIdempotent
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 trimADestructiveIdempotent
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 folderADestructiveIdempotent
Renames an attribute folder (path or GUID). Output: {ok, folder: {path, guid}}.
Inputs: folder (required), newName (required), attributeType (required).
rename_favoriteRename favoriteADestructiveIdempotent
Renames a favorite. Output: {name, newName, renamed: true}. Fails when newName is already used.
Inputs: name (required), newName (required).
render_viewPhoto renderAIdempotent
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)ADestructiveIdempotent
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) elementsADestructive
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 elementsADestructive
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 projectADestructiveIdempotent
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 asADestructiveIdempotent
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 partsARead-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 instanceARead-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 viewAIdempotent
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 valuesADestructiveIdempotent
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 storyAIdempotent
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 orderADestructive
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 classificationsADestructiveIdempotent
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 elementsADestructiveIdempotent
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 locationADestructiveIdempotent
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 / attributesADestructiveIdempotent
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 statesADestructiveIdempotent
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 settingsADestructiveIdempotent
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 PreferencesADestructiveIdempotent
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 fieldsADestructiveIdempotent
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 valuesADestructiveIdempotent
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 selectionAIdempotent
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 groupsADestructiveIdempotent
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 settingsADestructiveIdempotent
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 settingsADestructiveIdempotent
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 3DAIdempotent
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 operationADestructiveIdempotent
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 ReceiveAIdempotent
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/shellADestructiveIdempotent
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.
undoUndoADestructive
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 elementsADestructiveIdempotent
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 elementsADestructiveIdempotent
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 elementsADestructiveIdempotent
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 viewsADestructiveIdempotent
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_hotlinksUpdate / relink hotlinksADestructiveIdempotent
Refreshes hotlinked modules / XRefs from their source files ('nodes' or all: true — like Hotlink Manager > Update) and/or relinks nodes to another file or changes their name / story range ('relink': [{node, source?, name?, storyRange?, sourceStory?}], relinked nodes are refreshed too). Missing sources are reported with a relink hint. In Teamwork reserve the hotlink cache first (reserve_elements {objectSets: ['HotlinkCacheManagement']}). Returns per node {nodeGuid, updated|relinked, node} | {error}, updatedCount.
Inputs: all, nodes, relink.
update_zonesUpdate zones (re-detect boundaries)ADestructiveIdempotent
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.
zoomZoomAIdempotent
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
Scored across 258 tools
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.
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.
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.
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
Related MCP Connectors
Design buildings as IFC4 BIM models from a brief: an AI architect that plans, builds and edits.
Design buildings in 3D by chat: rooms, walls, doors, windows, stairs, roofs and furniture.
1Check floor-plan images, trace them into editable plans, export PDF and IFC, and query IFC models.
1150+ hosted tools: describe-to-build CAD, scan-to-CAD, architecture studio, web research, media.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients like Claude to interact with Graphisoft Archicad through the Tapir add-on's JSON commands. Supports automated Archicad operations and custom tool integration for architectural design workflows.38MIT
- FlicenseBqualityBmaintenanceEnables Claude to create, query, and modify BIM elements in Allplan via natural language, with full undo history support.225-
- AlicenseCqualityCmaintenanceEnables 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.53MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables 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



