add_dimension
ChatGPTPlace a construction dimension on the floor plan — the annotation a drawing is delivered with, not a one-off reading (that is measure). Give it walls and the dimension binds to their endpoints and follows them when they move; give it points for a free dimension. The dimension line is offset from the run automatically. A chain of connected walls becomes one continuous dimension string.
add_door
ChatGPTAdd a door to an existing wall. t/position is 0..1 along the wall: 0 = start, 0.5 = center, 1 = end.
add_drawing_dimension
ChatGPTWrites a dimension entity into a CAD drawing. 'linear' measures along one axis (which one is decided by where the dimension line sits), 'aligned' measures the true distance between the points. For a dimension that follows the model when a wall moves, use add_dimension instead.
add_window
ChatGPTAdd a window to an existing wall. t/position is 0..1 along the wall; sillHeight is the height from floor to window bottom.
answer_editor_request
ChatGPTReport back on a prompt you took with await_editor_request. The text lands in the editor next to what the user typed, so write it for them: what you changed, or what you found. Scene edits already reach the editor on their own — this is the sentence explaining them.
apply_parcel_to_site
ChatGPTApplies a found parcel to the site node in the scene. Will replace the site polygon and update its location data.
apply_patch
ChatGPTApply a batch of create/update/delete operations atomically. All patches are validated before any are applied; the entire batch forms a single undo step.
await_editor_request
ChatGPTWait for the user to type something in the Pascal editor's agent box, and return it. This is how a prompt written in the editor reaches you — the editor cannot message you directly. When the user asks you to watch the editor, call this, act on whatever comes back using the other tools, report with answer_editor_request, then call this again to keep watching. A timeout is normal and means nothing arrived; just call again.
check_collisions
ChatGPTDetect overlapping item footprints via a rotation-aware plan AABB test. Optionally scoped to a single level (items parented to that level).
create_drawing
ChatGPTCreates a new blank 2D CAD drawing in the scene. Use this before adding CAD entities.
create_drawing_layer
ChatGPTAdds a layer to a drawing. New geometry inherits the drawing's current layer, so pass makeCurrent to draw onto it next.
create_from_template
ChatGPTInstantiate a seed Pascal scene template into the bridge. Regenerates all ids before applying. When save: true and a SceneStore is wired, also persists the new scene and returns the SceneMeta.
create_house_from_brief
ChatGPTHigh-level hosted workflow for external agents: choose a starter house from a brief, create/save/publish it, and return the editor URL. Use semantic tools afterward for exact customization.
create_level
ChatGPTAppend a new level above the given building's current top level. height is stored as the level's floor-to-floor storey height.
create_project
ChatGPTCreate a browser-visible Pascal project for the authenticated user. Use this before save_scene when the user asks for a new project.
create_roof
ChatGPTCreate a roof container with one roof segment. By default creates a dedicated roof level above the reference level so exploded/solo level views can isolate the roof.
create_room
ChatGPTCreate a room on a level: zone, slab, ceiling, and one wall per polygon edge. Returns wallIds in polygon edge order.
create_sheet
ChatGPTCreates a paper-space sheet — an ISO page with a margin and a title block — to place viewports of other drawings onto. The title block reads the project facts from the scene rather than storing copies, so leave owner and author empty unless the sheet declares its own.
create_stair_between_levels
ChatGPTCreate a straight stair and a single rectangular manual opening in the destination slab/source ceiling. This disables stair auto-opening mode to avoid duplicate or irregular holes.
create_story_shell
ChatGPTCreate one level-owned building shell from a footprint: perimeter walls plus optional slab and ceiling. Use once per story; do not make first-floor walls span multiple stories.
create_wall
ChatGPTCreate a new wall on the given level between two 2D points. Thickness and height default to the core library defaults when omitted.
cut_opening
ChatGPTCut a door or window opening into an existing wall. position is a parametric 0..1 offset along the wall centreline.
delete_drawing_layer
ChatGPTDeletes a layer. Its entities move to 'into' when given; without it they move to the drawing's current layer — a layer is never deleted with its geometry, because that would lose work no undo names.
delete_node
ChatGPTDelete a node. If it has children, pass cascade: true to delete descendants recursively.
delete_scene
ChatGPTDelete a scene from the SceneStore by id. Optionally pass expectedVersion for optimistic concurrency.
describe_node
ChatGPTReturn a structured summary of a node including its ancestry, children IDs, key properties, and a short human description.
describe_node_type
ChatGPTGet the field schema for a scene node kind, as JSON Schema, plus the paintable surfaces it exposes. Read this before using apply_patch to create a kind that has no dedicated tool — column, skylight, chimney, fence, elevator, cabinet, gutter, solar panel, vents, duct and pipe runs, structural grids, section planes, dimensions — and before paint_surfaces, for the kind's slot ids. Call with no arguments first for the index of every kind, then ask for the specific ones you need. Everything is read from the editor's own definitions, so it matches exactly what apply_patch and paint_surfaces accept.
duplicate_level
ChatGPTClone a level and all its descendants into a new subtree attached to the same building.
export_dxf
ChatGPTExports a CAD drawing to DXF string format.
export_json
ChatGPTReturn the scene as a serialized JSON string. Pass pretty: true to indent with 2 spaces.
find_nodes
ChatGPTFind nodes matching any combination of type, parentId, levelId, or zoneId filters.
furnish_room
ChatGPTPlace furniture for a room type (levelId+polygon or zoneId). Skips or nudges poses that block door clear zones or overlap existing items (rotation-aware). Parent floor items to the level.
generate_elevation
ChatGPTProduces the orthographic elevation of the model from one compass direction, or from all four at once, and files each as its own drawing document. Solids are graded into three lineweight bands by depth, and geometry a nearer solid hides is removed unless 'hiddenLines' says otherwise.
generate_plan
ChatGPTDraws one level's floor plan from the model and files it as a new drawing document, one layer per node kind (A-DUVAR, A-KAPI, A-MAHAL …) so it can be restyled and printed like a hand-drawn plan. A floor plan is a horizontal section, so 'cutHeight' decides what is in it.
generate_section
ChatGPTCuts the model with a section-plane node and files the result as a new drawing document: cut outlines with poché, background geometry, and a storey line per level. Spans the whole building the plane's level belongs to, not just that level. Background geometry a nearer solid hides is removed unless 'hiddenLines' says otherwise.
generate_variants
ChatGPTGenerate N variations of a base scene by forking and applying seeded mutations. Example: "give me 5 variations of this kitchen". If save=true, each variant is persisted via scene operations and returned with an id + URL; otherwise the graph is returned inline.
get_buildable_area
ChatGPTGets the buildable area derived from the site polygon and setbacks (yapılaşma alanı).
get_level_summary
ChatGPTGet a compact model-friendly summary of one level: counts plus walls, zones, slabs, ceilings, and items. Omit levelId to use the first level.
get_node
ChatGPTReturn the full node payload for the given ID.
get_project_status
ChatGPTAuthoritative status/debug call for a Pascal project: editor URL, browser-visible version, latest saved version, published version, node count, and graph hash.
get_scene
ChatGPTReturns the full scene graph: flat node dictionary, root node IDs, and collections.
get_walls
ChatGPTGet walls on a level with start/end coordinates, length, height, thickness, and child doors/windows. Omit levelId to use the first level.
get_zones
ChatGPTGet room/zone polygons on a level with names, colors, bounds, and approximate areas. Omit levelId to use the first level.
list_drawing_layers
ChatGPTThe drawing's layer table, with which one is current. Frozen means hidden and out of the snap scan; locked means visible but neither selectable nor editable.
list_levels
ChatGPTList all levels in the current scene with ids, names, floor indices, and child counts.
list_materials
ChatGPTList the finishes available to paint onto a node's surfaces — wood, stone, tile, brick, concrete, metal, fabric, flat colours — plus any the user authored inside this scene. Returns a ref for each, which is what paint_surfaces takes. Filter by category, by the surface being painted, or by a text query; call with no arguments for the category index. Read from the editor's own catalog, so every ref returned is real.
list_scenes
ChatGPTList scenes in the SceneStore. Optionally filter by projectId and cap results with limit (default 100).
list_templates
ChatGPTList the seed Pascal scene templates available to create_from_template. Returns the id, display name, one-line description and node count for each.
load_scene
ChatGPTLoad a scene from the SceneStore into the bridge. Returns the scene metadata. Throws scene_not_found if the id does not exist.
measure
ChatGPTMeasure distance (in meters) between two nodes, or the net area of a polygon node when fromId === toId.
paint_surfaces
ChatGPTApply a material to a surface of one or more nodes — wall faces, floor slabs, ceilings, doors, windows, stairs, columns, fences, cabinets, shelves, elevators, ducts. Get material refs from list_materials and slot ids from describe_node_type. The whole call is one undo step. Nodes whose surfaces come from a GLB (items) accept any slot id; read their existing slots with get_node to see which ones they use.
place_item
ChatGPTPlace a catalog item into the scene. Target a level/slab/zone for floor items, a wall for wall-attached items, or a ceiling for ceiling-attached items. Do not target the site node directly.
place_viewport
ChatGPTPuts a window onto another drawing on a sheet, at a printed scale. Without a rectangle the window fills the sheet's printable area; the source is centred in it, so a plan lands framed rather than at the drawing's origin.
read_cad_drawing
ChatGPTParse a DXF asset belonging to the loaded Mimart scene and report its layers, units, extent and line work. The path must be its asset:// identifier; local server files, public URLs, and files merely attached to ChatGPT cannot be read. Inspect layers first, then request structural layer names and use the returned coordinates with create_wall. Confirm the declared drawing units before building.
read_drawing_entities
ChatGPTReads the entities of a CAD drawing, a page at a time. A drawing can hold a hundred thousand entities, so the whole of one does not fit in a reply — filter by layer or type and page through with 'offset'.
redo
ChatGPTRedo the next N previously-undone steps (default 1). Returns the number of steps actually redone.
remove_drawing_entities
ChatGPTRemoves entities from a CAD drawing by handle.
rename_scene
ChatGPTRename a scene in the SceneStore. Returns the updated SceneMeta. Optionally pass expectedVersion for optimistic concurrency.
save_scene
ChatGPTSave the current scene (or a provided graph) to the SceneStore. Defaults to a browser-visible draft save so agents can iterate without creating many project versions. Use saveMode: "checkpoint" for meaningful version history.
search_assets
ChatGPTSearch the built-in MCP item catalog by keyword. Call before place_item when you need a valid catalogItemId.
search_parcel
ChatGPTSearch for a parcel (arazi/arsa) in TKGM by district/island/parcel or coordinates. Does NOT modify the scene.
set_setbacks
ChatGPTSets setbacks (çekme mesafesi) for the site edges (road, side, rear) and an optional default setback.
set_zone
ChatGPTCreate a polygonal zone on the given level. label is stored as the zone name and properties are merged into metadata.
undo
ChatGPTUndo the most recent N steps in the scene history (default 1). Returns the number of steps actually undone.
update_drawing_layer
ChatGPTSets a layer's properties, or renames it. A rename repoints every entity on the layer, which is one edit, not two.
validate_scene
ChatGPTRun Zod validation against every node in the scene. Returns { valid, errors } where each error has { nodeId, path, message }.
verify_scene
ChatGPTHigh-level self-check after complex edits. Returns validation status, per-level room/content counts, empty levels, and practical layout issues.
write_drawing_entities
ChatGPTUpserts entities into a CAD drawing. Coordinates use the drawing node unit, millimeters by default: inspect it with get_node and convert requested measurements before writing. The input schema describes each supported entity type.