{"ok":true,"cat":null,"n_cats":37,"n_tools":509,"cats":[{"cat":"okt","no":"Økt og delelenke","en":"Session & share link","n":22,"tools":[{"name":"agent_actions","effect":"read","access":"public","line":"Every tool with what people call it (phrases, synonyms, when not) and where it is in the app, and e…"},{"name":"bind_session","effect":"read","access":"public","line":"Bind the live session from a share link (?session=&share=), sid+share, or project=<id> (logged in o…"},{"name":"close_session","effect":"write","access":"login","line":"Close a session."},{"name":"create_session","effect":"write","access":"login","line":"New empty editor session (logged in, never with an API key). It becomes the bound session for later…"},{"name":"create_share_link","effect":"account","access":"login","line":"Mint/fetch the session's old share key (?share=<token>). Now level PROPOSE: it opens a private work…"},{"name":"find_tools","effect":"read","access":"public","line":"Find tools by intent/search (query/goal), effect (read/write/…) or category. First call for new age…"},{"name":"get_recipe","effect":"read","access":"public","line":"One recipe with all its steps (id from list_recipes, e.g. tegning-til-pdf: drawing/scan → model → d…"},{"name":"get_tool","effect":"read","access":"public","line":"One tool with full description, params/input_schema, path and example (after tools_index or find_to…"},{"name":"key_open","effect":"write","access":"login","line":"Get the session the key works in (bind_session does this itself). read: a private read-only copy. p…"},{"name":"list_recipes","effect":"read","access":"public","line":"The recipes for common jobs (id, title, steps with tool names). Start here on a first visit; same l…"},{"name":"list_share_links","effect":"read","access":"share","line":"List the session's share links (no tokens): role, expiry, revoked, last used, open count."},{"name":"my_access","effect":"read","access":"public","line":"What YOUR access can do (access + key level) and which tools are open vs locked — and how to get th…"},{"name":"ordbok","effect":"read","access":"public","line":"BIM dictionary: terms, door/window/covering types, recipes, pitfalls. ?q=word filters."},{"name":"release_tool","effect":"write","access":"sandbox","line":"Release the active pointer tool."},{"name":"revoke_share","effect":"write","access":"share","line":"Revoke a share link (link_id from list_share_links). Open copies are closed at once."},{"name":"sandbox_release","effect":"write","access":"public","line":"Release the sandbox session when done."},{"name":"sandbox_session","effect":"write","access":"public","line":"Anonymous sandbox session (no login, 30 min idle, max 2 per IP). 404 when the server has no sandbox."},{"name":"select_tool","effect":"write","access":"sandbox","line":"Pick a pointer tool in the UI (wall, door, window ...); drawing then happens with the pointer over…"},{"name":"share_link","effect":"write","access":"share","line":"Mint a share link for the session at one of THREE levels. role=viewer (READ: no login, a private re…"},{"name":"tools_index","effect":"read","access":"public","line":"Compact index: tool name + one line per category (not the full /agent.json). Use get_tool for the s…"},{"name":"unshare_session","effect":"account","access":"login","line":"Withdraw the session's old share key; working copies opened with it close at once."},{"name":"view_open","effect":"read","access":"public","line":"Open a viewer or propose link without login: session=<link id>, share=<token> -> a private session…"}]},{"cat":"spec","no":"Hus-spec (hele huset fra én JSON)","en":"House spec (a whole house from one JSON)","n":5,"tools":[{"name":"build_house_from_spec","effect":"write","access":"share","line":"Build a whole house from ONE house spec (levels, walls, openings, slabs, roofs, stairs, columns, be…"},{"name":"configurator_link_to_spec","effect":"read","access":"public","line":"A configurator link (/konfigurator/plan#c=… or the state itself) as a house spec: outline, storeys,…"},{"name":"get_house_spec","effect":"read","access":"share","line":"Read the model out as a house spec (JSON): edit it and build it back with build_house_from_spec. me…"},{"name":"get_spec_schema","effect":"read","access":"public","line":"House spec v1: JSON Schema + a buildable example (copy and edit) + usage notes. Open, no session. S…"},{"name":"open_configurator_link","effect":"write","access":"login","line":"\"Open in Dibrix\": build the plan from a configurator link as a NEW session (mode=new, default) or a…"}]},{"cat":"utkast","no":"Utkast: tegn først, spør etterpå (hverdagsspråk)","en":"Draft: draw first, ask later (everyday language)","n":14,"tools":[{"name":"add_overbygg","effect":"write","access":"login","line":"Covered walkway or roof canopy on a wall."},{"name":"add_rooms","effect":"write","access":"login","line":"Number of rooms (partition walls with an open door), layout jevnt | langsgaende."},{"name":"check_rules","effect":"read","access":"login","line":"Rule check of the draft against national rules + the municipality's rule set: ok/breach/unknown wit…"},{"name":"draft_from_description","effect":"write","access":"login","line":"Everyday words -> draft: draws a first draft (with assumptions) or updates it."},{"name":"draw_from_image","effect":"write","access":"login","line":"First draft from the attached picture: shape, roof form, pitch, cladding direction, colours, openin…"},{"name":"place_openings","effect":"write","access":"login","line":"Windows/doors by words: kind, count, wall side, distribution. Computes the positions (door 0.9 m, w…"},{"name":"set_cladding_style","effect":"write","access":"login","line":"Cladding: vertical | horizontal | none."},{"name":"set_colors","effect":"write","access":"login","line":"Colours (keys such as hvit, sort, gra) for cladding, roof and corner boards."},{"name":"set_dimensions","effect":"write","access":"login","line":"Dimensions in metres, or relative (scale 1.15 = a bit bigger)."},{"name":"set_draft_prefs","effect":"write","access":"login","line":"Draft settings: mode = enkel|proff (wording and fields), default sizes and limits."},{"name":"set_roof_style","effect":"write","access":"login","line":"Roof form, pitch in DEGREES (slope_deg, recommended; slope_pct in % still accepted), overhang, roof…"},{"name":"set_site","effect":"write","access":"login","line":"Place and plot facts: municipality (choice from the rule sets or 'annen'), use, distance to the bou…"},{"name":"utkast_status","effect":"read","access":"share","line":"The draft now: the assumptions, at most 3 questions, warnings with a fix button, Enkel/Proff fields…"},{"name":"utkast_verktoy","effect":"write","access":"share","line":"Run one draft tool with enums and numbers (see the Norwegian text for the list). Saves a version, r…"}]},{"cat":"anker","no":"Mål på stedet (måle-ankere)","en":"Site measurements (anchors)","n":5,"tools":[{"name":"add_anchor","effect":"write","access":"share","line":"Save ONE measurement anchor (one undo step). kind: ytterlengde|bredde|dybde|hoyde_raft|hoyde_mone|e…"},{"name":"check_anchors","effect":"read","access":"share","line":"Check the model against the anchors: per anchor measured, model and deviation (mm), status ok|advar…"},{"name":"delete_anchor","effect":"write","access":"share","line":"Delete a measurement anchor (one undo step)."},{"name":"edit_anchor","effect":"write","access":"share","line":"Change a measurement anchor (only the fields you give; a new reference replaces the old one). One u…"},{"name":"list_anchors","effect":"read","access":"share","line":"Measurement anchors in the session: site measurements (typed, laser, read from drawing, Finn) tied…"}]},{"cat":"bildetur","no":"Bildetur: bilder med pinne på planen","en":"Photo tour: photos pinned on the plan","n":6,"tools":[{"name":"add_photo","effect":"write","access":"share","line":"Add ONE photo (jpg/png/heic) to the photo tour (one undo step). The original is stored unchanged wi…"},{"name":"delete_photo","effect":"write","access":"login","line":"Delete a photo from the tour. ONLY a logged-in person with the right (creator, team admin, owner, s…"},{"name":"get_photo_image","effect":"read","access":"share","line":"The photo itself (original, unchanged, with EXIF) as bytes; the thumbnail is .../thumb (for the UI)…"},{"name":"link_photo","effect":"write","access":"share","line":"Link a photo to elements, a room and a note (one undo step; only the fields you give). elements: 'D…"},{"name":"list_photos","effect":"read","access":"share","line":"The photo tour: the photos of the session in tour order, filtered by storey (level), room, element…"},{"name":"set_photo_pose","effect":"write","access":"share","line":"Move/turn the pin of a photo (one undo step). x, y (m) and level move the whole pin (all photos on…"}]},{"cat":"tolkebenk","no":"Tolkebenk: oppdrag, avklaringer, rettelser og regler (C18)","en":"Interpretation bench: tasks, clarifications, corrections and rules (C18)","n":8,"tools":[{"name":"add_clarification","effect":"write","access":"login","line":"Ask the user a question on the task (optional part_id and element_id). An open question blocks the…"},{"name":"add_task_part","effect":"write","access":"login","line":"Add a part to the task: kind = form | plan | vegg | rom | bilde_rom | bilde_vegg | apning | fasade…"},{"name":"create_task","effect":"write","access":"login","line":"New interpretation-bench task in a project (a card without a board): title (neutral, no customer na…"},{"name":"get_task","effect":"read","access":"login","line":"One task with its seven fields, parts (status, source, facts, receipts), clarifications, correction…"},{"name":"list_rules","effect":"read","access":"login","line":"The interpretation rules: approved (all logged in) and your own team's proposals. Anonymous: id (R1…"},{"name":"list_tasks","effect":"read","access":"login","line":"The interpretation-bench tasks you can access (optional project_id), with progress (parts, accepted…"},{"name":"log_correction","effect":"write","access":"login","line":"Log a correction: what you had interpreted (interpreted) and what was right (correct), with the sou…"},{"name":"propose_rule","effect":"write","access":"login","line":"Propose an interpretation rule (status forslag; only a system admin approves). The text is anonymou…"}]},{"cat":"punktsky","no":"Punktsky (skann): lagre, snitt og mål fra mobil","en":"Point cloud (scan): store, slice and measure from a phone","n":12,"tools":[{"name":"bekreft_skann_funn","effect":"write","access":"share","line":"The drafter measured a scan find (group from punktsky_infrastruktur placement): set bredde_m/dybde_…"},{"name":"delete_punktsky","effect":"write","access":"share","line":"Delete a stored point cloud (blob files in the project). Logged-in person with delete rights only;…"},{"name":"get_punktsky","effect":"read","access":"share","line":"One cloud: metadata (source, voxel, origin, rotation, north, bbox) and the default sections (plan 0…"},{"name":"list_punktsky","effect":"read","access":"share","line":"The point clouds stored in the project: id, name, point count, extent (m), floor levels. Build one…"},{"name":"punktsky_infrastruktur","effect":"write","access":"share","line":"Find fixtures in a point cloud: toilet, basin, bathtub, shower, stair, chimney and fireplace (and w…"},{"name":"punktsky_mobil","effect":"read","access":"share","line":"Light page for phones (not 3D): pick plan or section, drag sliders, tap two points to measure the d…"},{"name":"punktsky_points","effect":"read","access":"share","line":"Binary xyz(+rgb) to draw the cloud in Draw model-3D with walls/roofs (T-1912). Query max=LOD cap (d…"},{"name":"punktsky_snitt","effect":"read","access":"share","line":"A section through a cloud as PNG: axis z (plan) | x | y, lo/hi in metres, px_per_m, grid_m, point_p…"},{"name":"punktsky_stotte","effect":"read","access":"share","line":"Support measure (interpretation check): share of each wall, slab and roof face in the model with cl…"},{"name":"punktsky_veggbilde","effect":"read","access":"share","line":"A wall image (PNG, 1 cm/px, points from 8 cm behind to 0.9 m in front of the wall, seen from the ro…"},{"name":"punktsky_viewer","effect":"read","access":"share","line":"Full 3D viewer (Three.js): orbit, navigate and measure in 3D. Same product as python -m ingest.punk…"},{"name":"upload_punktsky","effect":"write","access":"share","line":"Store a built cloud (body = .dpc.npz, max 80 MB; same content gives the same id). Off on the server…"}]},{"cat":"fasadefoto","no":"Fasadefoto: tagger på veggen → mål → hus-spec","en":"Facade photo: tags on the wall → measurements → house spec","n":5,"tools":[{"name":"facade_photo_families","effect":"read","access":"login","line":"The tag families this server can read (AprilTag 36h11/36h10/25h9/16h5, ArUco) and the user's settin…"},{"name":"facade_photo_measure","effect":"read","access":"login","line":"Measure in the rectified facade image: ground = two points on the ground line (left and right corne…"},{"name":"facade_photo_rectify","effect":"read","access":"login","line":"One facade photo (base64) with printed tags on the wall → tags with ids, one homography G (plane u,…"},{"name":"facade_photo_spec","effect":"read","access":"login","line":"The facades to a rough house spec: storeys [{name, kind kjeller|etasje, floor_m above ground, mater…"},{"name":"facade_photo_suggest","effect":"read","access":"login","line":"Suggested windows and doors in a facade photo (contours in the rectified image, local, no AI): boxe…"}]},{"cat":"faser","no":"Faser, rehab, tidsplan (4D) og kost (5D)","en":"Phases, rehab, schedule (4D) and cost (5D)","n":33,"tools":[{"name":"add_phase_presets","effect":"write","access":"share","line":"Add the preset phases (existing, demolition, new, extension, exterior, interior, handover); ids = o…"},{"name":"assign_phase","effect":"write","access":"share","line":"Put elements in a phase: element_ids, and/or all of kind (wall|roof|slab|door|window …), level, wal…"},{"name":"compare_cost","effect":"read","access":"share","line":"Cost before/after: before (a cost summary from plan_snapshot or a version record) or with_session (…"},{"name":"cost_summary","effect":"read","access":"share","line":"5D: cost per phase and kind, unpriced count, budget and variance, monthly curve. Price order: overr…"},{"name":"create_phase","effect":"write","access":"share","line":"New phase: name, kind (existing|demolition|new|custom; existing shows grey and costs 0, demolition…"},{"name":"delete_goods_item","effect":"write","access":"share","line":"Remove an item from the procurement list. One undo step."},{"name":"delete_phase","effect":"write","access":"share","line":"Remove a phase; its elements fall back to «ny». One undo step."},{"name":"delete_task","effect":"write","access":"share","line":"Remove a task. One undo step."},{"name":"delete_work_item","effect":"write","access":"share","line":"Remove a work item (the automatic line per phase and kind comes back). One undo step."},{"name":"get_pricelist","effect":"read","access":"share","line":"The project's price list (JSON). Without a saved list: an empty example template (units, no prices)."},{"name":"list_phases","effect":"read","access":"share","line":"The model's phases (existing, demolition, new, extension …) with element counts per phase and kind,…"},{"name":"mark_all_existing","effect":"write","access":"share","line":"Start of a rehab project: put ALL elements in the «eksisterende» (existing) phase (grey, costs 0).…"},{"name":"plan_snapshot","effect":"read","access":"share","line":"Phases, plan and cost summary as JSON (what a version record stores in phases/plan). Use its cost p…"},{"name":"plan_summary","effect":"read","access":"share","line":"Everything about the plan in one answer: phases, Gantt (rows with dates, slack and critical path, r…"},{"name":"plan_tasks","effect":"read","access":"share","line":"4D: the tasks with dates, slack and critical path (Gantt data)."},{"name":"plan_timeline","effect":"read","access":"share","line":"Evenly spaced dates from plan start to end with the number of visible elements (preview of construc…"},{"name":"plan_visible_at","effect":"read","access":"share","line":"4D animation: the element ids standing on a date (YYYY-MM-DD): visible, hidden, progress 0..1. Exis…"},{"name":"rehab_report","effect":"read","access":"share","line":"The whole customer report as JSON: per phase what changes, what it costs (labour/material/VAT, unce…"},{"name":"rehab_report_csv","effect":"read","access":"share","line":"The rehab report as CSV (semicolon, UTF-8): overview, lines, performers, goods, schedule."},{"name":"rehab_report_html","effect":"read","access":"share","line":"Customer-friendly report as HTML (print-friendly; save as PDF from the browser). Also works with a…"},{"name":"rehab_report_xlsx","effect":"read","access":"share","line":"The rehab report as Excel (.xlsx, one sheet per part; no extra dependencies)."},{"name":"rehab_summary","effect":"read","access":"share","line":"Rehab in one answer: elements per status (existing/demolition/new/modified), cost per phase (labour…"},{"name":"set_goods_item","effect":"write","access":"share","line":"Goods to procure: {name, phase, supplier, qty, unit, unit_price, deadline YYYY-MM-DD, status planla…"},{"name":"set_performer","effect":"write","access":"share","line":"Default performer of a phase: role (contractor, carpenter, electrician, plumber, painter, self-buil…"},{"name":"set_phase","effect":"write","access":"share","line":"Change a phase (name, colour, status, start/end, deps, kind, order). One undo step."},{"name":"set_phase_visibility","effect":"write","access":"share","line":"Show/hide/colour per phase in 3D: hidden (phase ids to hide; replaces the list), mode phase | mater…"},{"name":"set_plan_date","effect":"write","access":"share","line":"4D in 3D: hide what is not built on a date (YYYY-MM-DD) for everyone viewing the session; date=null…"},{"name":"set_plan_settings","effect":"write","access":"share","line":"Plan settings: start, calendar, unit_prices, overrides per element, budget. Each key sent replaces…"},{"name":"set_pricelist","effect":"write","access":"share","line":"Set the price list: pricelist {items, vat_pct} or csv_text (columns key;unit;labor;material;...). N…"},{"name":"set_task","effect":"write","access":"share","line":"Add/change one task: id?, name, phase, duration_d (working days), deps (task id or {id, lag_d}), re…"},{"name":"set_work_item","effect":"write","access":"share","line":"Work item in a phase: {phase, kind | element_ids, name?, qty? (omitted = from the model), unit?, la…"},{"name":"show_phases_only","effect":"write","access":"share","line":"Filter in 3D: show only the phases of these kinds (existing|demolition|new|modified|custom) or phas…"},{"name":"suggest_plan","effect":"write","access":"share","line":"Suggest a schedule: tasks per phase and build group (slabs, walls, openings, roof …) with durations…"}]},{"cat":"komponent","no":"Komponenter (parametriske møbler og sanitær)","en":"Components (parametric furniture and sanitary)","n":3,"tools":[{"name":"find_component","effect":"read","access":"public","line":"Search the component library: Dibrix' parametric furniture, kitchen, appliance and sanitary types (…"},{"name":"insert_component","effect":"write","access":"share","line":"Insert a parametric furniture type (id from find_component, e.g. dibrix-furn-seng) with the base ce…"},{"name":"library_thumb","effect":"read","access":"public","line":"Thumbnail (SVG) of a component, cached."}]},{"cat":"inspeksjon","no":"Inspiser og velg","en":"Inspect & select","n":20,"tools":[{"name":"control_measure","effect":"write","access":"share","line":"Control measurement: the user's measures (text or read from a photo of a tape/laser) against the mo…"},{"name":"copy_selection","effect":"read","access":"login","line":"Remember the selection for paste (Ctrl+C); duplicate_selection(source='clipboard') pastes."},{"name":"delete_selection","effect":"write","access":"login","line":"Delete the selection (undoable)."},{"name":"duplicate_selection","effect":"write","access":"login","line":"Copy the selection (walls with their doors/windows, groups) dx/dy metres in plan; the copies become…"},{"name":"element_props","effect":"read","access":"share","line":"Changes nothing: the Entity Info fields of one element (key, type, choices) and its values, with id…"},{"name":"get_entity","effect":"read","access":"share","line":"One element with size, payload and health."},{"name":"get_selection_props","effect":"read","access":"login","line":"Properties of the selection (Entity Info)."},{"name":"inspect","effect":"read","access":"share","line":"Overview: faces/edges/levels, counts per kind, problems, areas, link. Start here."},{"name":"list_buildings","effect":"read","access":"login","line":"Buildings in the model."},{"name":"list_entities","effect":"read","access":"share","line":"List BIM elements (walls, slabs, roofs ...); problems_only=true finds broken joins; loose=true also…"},{"name":"list_sources","effect":"read","access":"share","line":"Everything Dibrix knows about the house as sources, in one list: drawing files (PDF/pictures from U…"},{"name":"plan_build","effect":"read","access":"share","line":"Turn a goal into a short plan from the live model (does not mutate)."},{"name":"query","effect":"read","access":"sandbox","line":"Raw model state (faces, edges, selection, tool)."},{"name":"select_all","effect":"write","access":"login","line":"Select all (Ctrl+A)."},{"name":"select_box","effect":"write","access":"login","line":"Rubber-band select (window/crossing)."},{"name":"select_building","effect":"write","access":"login","line":"Pick the active building."},{"name":"select_entities","effect":"write","access":"share","line":"Select elements by id in the live view."},{"name":"set_element_props","effect":"write","access":"share","line":"Change properties of one or more elements as in Entity Info (height_m, thickness_m, wall_type, join…"},{"name":"set_selection_props","effect":"write","access":"login","line":"Change properties of the selection (wall type, height, style ...)."},{"name":"transform_selection","effect":"write","access":"login","line":"Mirror or rotate the selection (right-click ▸ Mirror / Rotate)."}]},{"cat":"se","no":"Se: bilde, kamera, sammenligning","en":"See: picture, camera, compare","n":10,"tools":[{"name":"compare","effect":"read","access":"share","line":"Compare two sessions (original and interpreted): bbox, area, volume, counts per kind, optionally on…"},{"name":"create_tag","effect":"write","access":"share","line":"New tag: the one explicit way to make a tag. Unique, normalised names: '1.etasje' next to '1. etasj…"},{"name":"get_camera","effect":"read","access":"sandbox","line":"The agent's own camera (eye, target, projection). The browser camera stays on the client."},{"name":"list_tags","effect":"read","access":"share","line":"The tags you CHOOSE from: storeys (own group, with visibility and count) and layers/tags. Use the i…"},{"name":"render","effect":"read","access":"sandbox","line":"A PNG of the session without a browser: view=iso|front|back|left|right|top|bottom, layers=a,b (only…"},{"name":"render_index","effect":"read","access":"sandbox","line":"What is where in the picture render would give (same parameters): every element with pixels, centre…"},{"name":"scene_summary","effect":"read","access":"sandbox","line":"Compact JSON about the session without building the mesh: counts per kind, box per element, layers,…"},{"name":"session_status","effect":"read","access":"sandbox","line":"Session status: loading a big file (phase, progress) or ready; use after uploading big igz/skp."},{"name":"set_camera","effect":"read","access":"sandbox","line":"Set the agent camera: preset (iso/front/...) or eye+target, projection, zoom_to=all|selection|<elem…"},{"name":"set_layers","effect":"write","access":"share","line":"Show/hide several layers in one call: show=[...], hide=[...], only=[...] (all others off), all=true…"}]},{"cat":"vegg","no":"Vegg (yttervegg)","en":"Wall (exterior)","n":21,"tools":[{"name":"add_stair","effect":"write","access":"login","line":"Stair from the active storey to the next, with its opening in the floor (straight, L or U; TEK17)."},{"name":"batch","effect":"write","access":"share","line":"Several operations in one request: walls, slab, roof, house, terrain, delete, clear ..."},{"name":"bim_wall","effect":"write","access":"login","line":"One BIM wall a->b."},{"name":"clear_model","effect":"write","access":"share","line":"Delete every BIM element (test reset)."},{"name":"corner_boards","effect":"write","access":"login","line":"Corner boards on/off."},{"name":"delete_entities","effect":"write","access":"share","line":"Delete elements by id (openings heal the wall)."},{"name":"draw_rectangle","effect":"write","access":"share","line":"Rectangular footprint (walls), optional slab and roof."},{"name":"draw_walls","effect":"write","access":"share","line":"Draw a wall path: corners=[[x,y],...] in metres; closed=true for a loop. wall_type for inner walls."},{"name":"get_wall_types","effect":"read","access":"login","line":"Wall type library (thickness, layers, framing)."},{"name":"heal_problems","effect":"write","access":"share","line":"Find problem walls and roofs and repair them (or one element with eid)."},{"name":"heal_wall","effect":"write","access":"share","line":"Rebuild one wall from its payload (heal join)."},{"name":"heal_walls","effect":"write","access":"share","line":"Close every open wall (no open edges, the top too when the roof is gone or broken). ids=[...] for o…"},{"name":"house","effect":"write","access":"login","line":"Whole building from a form (rect, L, T, H, U ...): walls, slab, roof, windows and door."},{"name":"move_walls","effect":"write","access":"share","line":"Move walls in the plan (dx, dy metres): joined corners stretch, openings follow. Same code as the M…"},{"name":"rebuild_entity","effect":"write","access":"share","line":"Rebuild one element with changed payload fields (wall type, roof form, door style ...)."},{"name":"set_storeys","effect":"write","access":"share","line":"Create/change storeys (name, z, h) and put the elements in them (all, an id list, or by height), ru…"},{"name":"set_wall_types","effect":"write","access":"login","line":"Replace the wall type library; walls of a changed type follow."},{"name":"stair_in_shape","effect":"write","access":"share","line":"Stair in a shape: a closed plan polygon (drawn face, stair opening, scanned footprint) and the star…"},{"name":"tag_by_storey","effect":"write","access":"share","line":"Repair the storey tags: tag EVERY element (walls, slabs, roofs, openings, stairs, rooms, posts, cla…"},{"name":"wall_segment","effect":"write","access":"login","line":"One wall a->b over the plain session API (fallback when agent/* is closed)."},{"name":"walls_to_roof","effect":"write","access":"login","line":"Exterior walls follow the roof underside."}]},{"cat":"innervegg","no":"Innervegg","en":"Inner wall","n":1,"tools":[{"name":"draw_inner_wall","effect":"write","access":"share","line":"Inner wall: draw_walls with wall_type='inner_98' (or another inner type), closed=false."}]},{"cat":"apning","no":"Åpning (dør/vindu/port)","en":"Opening (door/window/gate)","n":4,"tools":[{"name":"delete_openings","effect":"write","access":"login","line":"Delete selected openings and heal the hole."},{"name":"edit_opening","effect":"write","access":"share","line":"Move/change a door or window in a wall: offset_m (along the wall), width_m/height_m/sill_m (centre…"},{"name":"face_opening","effect":"write","access":"login","line":"Door/window/opening in the selected face."},{"name":"place_opening","effect":"write","access":"share","line":"Door/window/gate in wall host_id: offset_m along the wall, width_m, height_m, sill_m. Round window:…"}]},{"cat":"dekke","no":"Dekke og gulv","en":"Slab & floor","n":5,"tools":[{"name":"add_slab","effect":"write","access":"login","line":"Slab/floor from a ring boundary=[[x,y],...] (or from the walls)."},{"name":"fit_slab_to_walls","effect":"write","access":"share","line":"Lay a slab's (terrace deck's) outline on the outer faces of walls (wall_ids; empty = the terrace-sh…"},{"name":"heal_slab","effect":"write","access":"share","line":"Put a slab laid on a wall ring back on its walls: outline on the ring, height on the walls, the wal…"},{"name":"slab_from_walls","effect":"write","access":"login","line":"Slab on the exterior wall ring: kind='sole' (under the walls, top = their base) or 'floor' (on the…"},{"name":"slab_from_walls_status","effect":"read","access":"login","line":"Closed wall rings per storey: do they have a sole / a floor, and what «Slab» suggests."}]},{"cat":"tak","no":"Tak, ark og takvindu","en":"Roof, dormer & roof window","n":10,"tools":[{"name":"add_roof","effect":"write","access":"login","line":"Roof over the exterior walls: form gable|hip|shed|flat."},{"name":"building_roof","effect":"write","access":"login","line":"Roof of one building (edges: slope/gable)."},{"name":"dormer","effect":"write","access":"login","line":"Dormer in the roof."},{"name":"heal_roof","effect":"write","access":"share","line":"Repair a roof and the walls under it: outline on the walls, saltak per wing, gable walls up to the…"},{"name":"join_roofs_as_t","effect":"write","access":"share","line":"Join two roofs into one T-roof with valleys (delivery check tak.sammenfoying). Larger plan footprin…"},{"name":"list_roof_finishes","effect":"read","access":"share","line":"Allowed roof covering types with colours, trim switches (vindski, gutter, downpipes ...), trim colo…"},{"name":"roof","effect":"write","access":"login","line":"Roof from its own outline."},{"name":"roof_window","effect":"write","access":"login","line":"Roof window."},{"name":"roof_window_catalog","effect":"read","access":"public","line":"Roof window size catalog."},{"name":"set_roof_finish","effect":"write","access":"share","line":"Roof covering (shingle/tile/standing seam), colour, vindski, gutter, downpipes, israft, snow guard…"}]},{"cat":"utvendig","no":"Terrasse, rekkverk, pergola","en":"Deck, railing, pergola","n":3,"tools":[{"name":"deck","effect":"write","access":"login","line":"Deck."},{"name":"railing","effect":"write","access":"login","line":"Railing."},{"name":"roof_on_columns","effect":"write","access":"login","line":"Roof on columns (pergola, carport)."}]},{"cat":"etasje","no":"Etasje","en":"Storey","n":4,"tools":[{"name":"ensure_levels","effect":"write","access":"sandbox","line":"Make sure the default storey list exists."},{"name":"list_levels","effect":"read","access":"sandbox","line":"Storeys (name, z, height)."},{"name":"save_levels","effect":"write","access":"login","line":"Save the storey list (rows: name, z, height)."},{"name":"set_active_level","effect":"write","access":"sandbox","line":"Active storey (where new walls go)."}]},{"cat":"rom","no":"Rom og areal","en":"Rooms & areas","n":7,"tools":[{"name":"areas_sheet","effect":"write","access":"login","line":"Area table as a sheet."},{"name":"detect_rooms","effect":"write","access":"login","line":"Detect rooms from wall loops and place labels. Tolerates joint gaps up to 12 cm; count 0 is explain…"},{"name":"edit_room","effect":"write","access":"share","line":"Name one or more rooms (from the room list: Stue, Soverom ...), set number (unique per storey), col…"},{"name":"list_rooms","effect":"read","access":"share","line":"Rooms in the model: id, name, number, area, storey, colour."},{"name":"measure_areas","effect":"read","access":"sandbox","line":"BYA / BTA / BRA (NS 3940) of the plan."},{"name":"rebuild_rooms","effect":"write","access":"share","line":"Put rooms (all, or ids) on the wall faces round them after a wall changed thickness or place. Id, n…"},{"name":"set_terrace_shed","effect":"write","access":"share","line":"Make a room (and the walls that enclose only it) a terrace shed: a light room on a terrace outside…"}]},{"cat":"snitt","no":"Snitt","en":"Section","n":8,"tools":[{"name":"create_section","effect":"write","access":"login","line":"New section plane (point+normal) and section scene."},{"name":"delete_section","effect":"write","access":"login","line":"Delete a section plane."},{"name":"edit_section","effect":"write","access":"login","line":"Edit a section in plan: op=create (from,to) | drag (uid, part, from, to; end = turn + lengthen) | f…"},{"name":"list_sections","effect":"read","access":"login","line":"Section planes (uid, symbol, point, normal)."},{"name":"move_section","effect":"write","access":"share","line":"Move/turn/rename an EXISTING section (never create a new one instead): section=«Snitt-AA»|«A»|uid,…"},{"name":"patch_section","effect":"write","access":"login","line":"Move/flip/rename a section plane."},{"name":"section_display","effect":"write","access":"login","line":"Show/hide section planes and cuts."},{"name":"suggest_section_position","effect":"read","access":"share","line":"Changes nothing: the walls a section hits now and where it could stand without hitting a wall (midd…"}]},{"cat":"terreng","no":"Terreng","en":"Terrain","n":3,"tools":[{"name":"fill_terrain_pit","effect":"write","access":"share","line":"Fill building pit: clear terrain holes so the ground is continuous under the building. One undo ste…"},{"name":"get_terrain","effect":"read","access":"share","line":"Site terrain: size, fall %, height points, z range, mean terrain."},{"name":"set_terrain","effect":"write","access":"share","line":"Create/edit terrain: width_m, depth_m, slope_x_pct/slope_y_pct, points=[[x,y,z]], fit_floor_over_m."}]},{"cat":"georef","no":"Georeferanse, koordinatplan og plankrav","en":"Georeference, coordinate plan and plan constraints","n":4,"tools":[{"name":"check_plan_constraints","effect":"read","access":"share","line":"The building against the plan constraints: zoning line (the whole building on the right side), mini…"},{"name":"fit_georef","effect":"write","access":"share","line":"Fit the georeference from 2 or more known corners (rotation + translation): corners [{model, world}…"},{"name":"get_georef","effect":"read","access":"share","line":"The project's georeference (EUREF89 UTM): crs, origin {n, e, h} = world coordinates of the model's…"},{"name":"set_georef","effect":"write","access":"share","line":"Set the georeference (one undo step): crs, origin {n, e, h?}, rotation_deg, limits, constraints (zo…"}]},{"cat":"maal","no":"Mål","en":"Dimension","n":15,"tools":[{"name":"add_dimension","effect":"write","access":"login","line":"New dimension on a sheet (paper mm)."},{"name":"check_sheet_dimensions","effect":"read","access":"login","line":"DIMENSION CHECK for one sheet (changes nothing): dimensions that do not sit on the walls, measure a…"},{"name":"clear_dimensions","effect":"write","access":"login","line":"Clear dimensions on the sheet."},{"name":"delete_dimension","effect":"write","access":"login","line":"Delete one dimension on a sheet."},{"name":"dim_units","effect":"read","access":"login","line":"Dimension units on sheets (get/set)."},{"name":"edit_dimension","effect":"write","access":"login","line":"Edit one dimension on a sheet."},{"name":"fix_sheet_dimensions","effect":"write","access":"login","line":"FIX the dimensions of a sheet: snaps the measured points to the walls (overall dimensions to the ou…"},{"name":"list_dimensions","effect":"read","access":"login","line":"Dimensions (cotas) on a sheet: index, label, side, offset, scene. BuildChat: list_cotas(sheet) also…"},{"name":"move_dimension","effect":"write","access":"login","line":"MOVE a dimension: move the dimension line of one (or a few) dimensions on a sheet: to another side…"},{"name":"rebuild_sheet_terrain","effect":"write","access":"login","line":"Rebuild the ground line and mask elements of an elevation/section page (force=true also resets your…"},{"name":"regenerate_sheet_dimensions","effect":"write","access":"login","line":"REGENERATE the dimensions of a sheet where the building is actually drawn: suggested dimensions are…"},{"name":"resuggest_dimensions","effect":"write","access":"login","line":"Regenerate the suggested dimension chains on the sheet."},{"name":"set_dim_units","effect":"write","access":"login","line":"Set dimension units on sheets."},{"name":"set_dimension_extension","effect":"write","access":"login","line":"EXTENSION LINES per dimension: set ext_gap_mm (paper mm from object to extension start) and/or ext_…"},{"name":"sheet_dims","effect":"write","access":"login","line":"Switch dimensions on/off for one page of the application set (dims=on|off|settings)."}]},{"cat":"tekst","no":"Tekst og strek på ark","en":"Text & lines on sheets","n":8,"tools":[{"name":"add_sheet_line","effect":"write","access":"login","line":"Line/arrow on a sheet (paper mm, from (x0_mm,y0_mm) to (x1_mm,y1_mm)). Body: x0_mm, y0_mm, x1_mm, y…"},{"name":"add_sheet_text","effect":"write","access":"login","line":"Text on a sheet (paper mm, Y up from the bottom edge: (x_mm, y_mm) is the first baseline, more line…"},{"name":"delete_sheet_annot","effect":"write","access":"login","line":"Delete one text or line on a page (kind text|shape, index from list_sheet_annots)."},{"name":"edit_sheet_shape","effect":"write","access":"login","line":"Edit a line/arrow/shape on a page: x_mm, y_mm, w_mm, h_mm, pts_mm, color, stroke_mm, dash solid|das…"},{"name":"edit_sheet_text","effect":"write","access":"login","line":"Edit text on a sheet."},{"name":"list_sheet_annots","effect":"read","access":"login","line":"Texts and lines (with index) on a page, and its page layers."},{"name":"opening_marks","effect":"write","access":"login","line":"Mark doors/windows on a sheet."},{"name":"plan_labels","effect":"write","access":"login","line":"Room names/labels on a sheet."}]},{"cat":"scene","no":"Scene, ark og side","en":"Scene, sheet & page","n":70,"tools":[{"name":"accept_delivery_finding","effect":"write","access":"share","line":"Mark ONE finding of the delivery check as 'accepted manually' (the key is in the finding; 'check-id…"},{"name":"add_discipline","effect":"write","access":"share","line":"Own discipline (scene group) in the project, beside Byggherre/ARK/RIB/RIV/RIE (max 32 characters)."},{"name":"add_page","effect":"write","access":"share","line":"Add a page (empty or with one scene)."},{"name":"add_scene","effect":"write","access":"share","line":"Add a scene: kind plan|fasade|snitt|situasjon|tak|detalj|3d|ringmur (foundation plan 2D-Ringmur). k…"},{"name":"add_sheet","effect":"write","access":"share","line":"Add a sheet: kind plans|facades|view|empty."},{"name":"add_sheet_set","effect":"write","access":"share","line":"Drawing set: presentasjon, soknad or konstruksjon, in fixed order: E series (plans, sections, eleva…"},{"name":"add_view","effect":"write","access":"share","line":"Put a scene on a sheet (a new viewport, e.g. Snitt-AA next to the plan)."},{"name":"add_viewport","effect":"write","access":"login","line":"New viewport (scene) on a sheet."},{"name":"apply_layout_profile","effect":"write","access":"login","line":"Use a firm profile in the project: firm name, address, web, e-mail, drawn by, logo, paper and docum…"},{"name":"apply_scene","effect":"write","access":"login","line":"Go to scene (index)."},{"name":"auto_fix_delivery_finding","effect":"write","access":"share","line":"Automatic fix for selected delivery findings (one undo step). Now: finding_id=kled.ytter_uten (defa…"},{"name":"bake_doors","effect":"write","access":"login","line":"Store door state (open/closed) in the scene."},{"name":"capture_scene","effect":"write","access":"login","line":"Save the current camera as a scene."},{"name":"composer_add_page","effect":"write","access":"login","line":"New page in the sheet set."},{"name":"composer_delete_page","effect":"write","access":"login","line":"Delete a page."},{"name":"copy_page","effect":"write","access":"share","line":"Duplicate a page (one undo step)."},{"name":"create_sheet","effect":"write","access":"login","line":"New sheet."},{"name":"delete_layout_profile","effect":"account","access":"login","line":"Delete one of your own firm profiles (builtin ones cannot be deleted)."},{"name":"delete_page","effect":"write","access":"share","line":"Delete a page."},{"name":"delete_scene","effect":"write","access":"share","line":"Delete a scene by name."},{"name":"delete_scene_index","effect":"write","access":"login","line":"Delete scene by index."},{"name":"delete_scenes","effect":"write","access":"share","line":"Delete several scenes at once (one undo step), e.g. every scene of one discipline."},{"name":"delete_sheet","effect":"write","access":"share","line":"Delete a sheet."},{"name":"delete_view","effect":"write","access":"share","line":"Remove a viewport from a sheet."},{"name":"delivery_check","effect":"read","access":"share","line":"Delivery check of the drawing set BEFORE it goes to the client/municipality: storeys, cladding (boa…"},{"name":"duplicate_page","effect":"write","access":"login","line":"Duplicate a page."},{"name":"edit_north_arrow","effect":"write","access":"login","line":"North arrow on a page: position, size and angle (x_mm, y_mm, size_mm, angle_deg)."},{"name":"edit_sheet_viewport","effect":"write","access":"share","line":"Move/resize/rescale a viewport on a sheet (paper mm): sheet, index, scale_n, x_mm, y_mm, w_mm, h_mm…"},{"name":"edit_viewport","effect":"write","access":"login","line":"Edit a viewport on a sheet: scale_n (1:N), x_mm, y_mm, w_mm, h_mm, locked, camera (cam_yaw, cam_pit…"},{"name":"ensure_standard","effect":"write","access":"share","line":"Standard scenes/sheets for what is drawn (pack: standard|presentasjon|soknad|konstruksjon|full)."},{"name":"ensure_standard_scenes","effect":"write","access":"login","line":"Standard scenes + sheet pack for the building."},{"name":"enter_plan","effect":"write","access":"login","line":"Enter the floor plan in one call: storeys, layers (other storeys and roof hidden), plan scene, scen…"},{"name":"extract_vector_logo","effect":"read","access":"login","line":"Extract a line logo (vector, not an image) from a region of a PDF page: pdf_base64, page (0-based),…"},{"name":"frame_scene","effect":"write","access":"share","line":"Aim a scene at part of the model so it opens there (stored in the scene): zoom_to all|storey|layer|…"},{"name":"get_layout_profile","effect":"read","access":"public","line":"One firm profile with all fields."},{"name":"get_sheet_chrome","effect":"read","access":"login","line":"The title strip fields (firm, address, logo, project fields) that apply to every page."},{"name":"land_3d","effect":"write","access":"login","line":"The 3D scene the 3D button lands in (makes 3D-Bygning with/without terrain when missing)."},{"name":"list_drawings","effect":"read","access":"share","line":"Scenes (and the sheets that show them), sheets/pages, what «+» can add."},{"name":"list_layout_profiles","effect":"read","access":"public","line":"Firm profiles for the title strip: builtin (tegnebua, tom) + mine + the team's. Pick an id and use…"},{"name":"list_page_layers","effect":"read","access":"login","line":"Page layers (like LayOut layers): the layer names and which are on which page."},{"name":"list_scenes","effect":"read","access":"login","line":"Saved scenes (plan, facades, sections, 3D)."},{"name":"list_sheets","effect":"read","access":"login","line":"Sheets (name, paper, viewports). Large sets: include_cotas=false&include_guides=false (brief), name…"},{"name":"lock_page","effect":"write","access":"login","line":"Lock/unlock a page so «Rebuild set» does not replace it."},{"name":"move_page","effect":"write","access":"share","line":"Move a page (to_index or delta)."},{"name":"patch_scene","effect":"write","access":"login","line":"Rename/reorder/update a scene. point_cloud=true/false: the point cloud on/off in THIS scene (the ot…"},{"name":"patch_sheet","effect":"write","access":"login","line":"Edit a sheet (title, number ...)."},{"name":"plan_scene","effect":"write","access":"login","line":"Plan scene for a storey."},{"name":"remove_discipline","effect":"write","access":"share","line":"Remove an own discipline; its scenes go to «Felles» (no scene is deleted)."},{"name":"rename_page","effect":"write","access":"share","line":"Rename a page."},{"name":"rename_scene","effect":"write","access":"share","line":"Rename a scene (sheets that show it follow) and/or move it in the list (move=-1/+1). One undo step."},{"name":"save_layout_profile","effect":"account","access":"login","line":"Save a firm profile (firm, web, address, poststed, email, tegnet_av, papir A4-A0, mal_i m|cm|mm, st…"},{"name":"seed_layout_profile_from_pdf","effect":"account","access":"login","line":"Team admin: create/update the team's firm profile from the firm's own LayOut PDF (template layout-s…"},{"name":"set_page_number","effect":"write","access":"share","line":"Page drawing number (default E1/D1/K1 via add_sheet_set; free text 1-16 chars, e.g. E-1). Kept on r…"},{"name":"set_page_paper","effect":"write","access":"share","line":"Paper size and orientation of a page."},{"name":"set_scene_camera","effect":"write","access":"share","line":"Set the camera STORED in a scene (what it opens with): target [x,y,z] m, distance, yaw/pitch (degre…"},{"name":"set_scene_discipline","effect":"write","access":"share","line":"Put scenes in a discipline (group in the scene panel): names=[...] (or name), discipline Byggherre|…"},{"name":"set_scene_layers","effect":"write","access":"share","line":"Layers a scene shows / hides when it is chosen (stored in the scene): show=[...], hide=[...]. Names…"},{"name":"set_scene_openings","effect":"write","access":"share","line":"Doors in a scene: closed|open|model (each door as set)|auto (facade/section/3D closed by default);…"},{"name":"set_sheet_annotations","effect":"write","access":"login","line":"Level marks and roof angle on a page: level {side auto|right|left|both, gap_mm, size_mm, show{store…"},{"name":"set_sheet_chrome","effect":"write","access":"login","line":"Set title-strip fields: firm, web, address, poststed, email, tiltakadresse, tiltaksted, tiltakshave…"},{"name":"set_sheet_overlays","effect":"write","access":"login","line":"Show/hide overlays on a page: nivel (level marks), pitch (roof angle), norte, sheet_no, firm."},{"name":"set_sheet_page_layers","effect":"write","access":"login","line":"Which page layers a page shows (layers: list of layer names)."},{"name":"set_view_scale","effect":"write","access":"share","line":"Scale 1:N of a viewport."},{"name":"set_view_scene","effect":"write","access":"share","line":"Swap the scene a viewport on a page shows."},{"name":"sheet_document","effect":"read","access":"login","line":"The sheet as a document (items in paper mm)."},{"name":"sheet_index","effect":"write","access":"login","line":"Sheet index sheet."},{"name":"sheet_paper","effect":"write","access":"login","line":"Paper size of a sheet."},{"name":"sheet_qa","effect":"read","access":"login","line":"Quality check of the sheets."},{"name":"sheet_svg","effect":"read","access":"login","line":"The sheet as SVG."},{"name":"sheet_title_pos","effect":"write","access":"login","line":"Title block placement of one sheet: right, bottom, none or auto."}]},{"cat":"plan","no":"Plan, stil og presets","en":"Plan, style & presets","n":18,"tools":[{"name":"add_style_legend","effect":"write","access":"login","line":"Put a legend of the style rules on a sheet (replaces an earlier one)."},{"name":"add_style_rule","effect":"write","access":"login","line":"Add a style rule (op=add), or update|remove|move|enable|clear. rule={name, combine:all|any, conds:[…"},{"name":"adjust_style","effect":"write","access":"login","line":"Relative change of one expression dial: parameter=tone|vividness|warmth|sketch|detail|line_weight,…"},{"name":"get_plan","effect":"read","access":"sandbox","line":"The editor's 2D plan as JSON (walls, openings, rooms, dimensions) for a storey."},{"name":"get_plan_svg","effect":"read","access":"sandbox","line":"The 2D plan as SVG (look at it)."},{"name":"get_style","effect":"read","access":"login","line":"The model style: the chosen style, colour/line/hatching per object type (wall, slab, roof, door, wi…"},{"name":"get_style_mood","effect":"read","access":"login","line":"Expression: dials such as tone (light-dark), vividness, warmth, sketchiness, detail level, line thi…"},{"name":"list_style_rules","effect":"read","access":"login","line":"Style rules «filter -> style» in run order (a later rule wins), with how many elements each matches…"},{"name":"list_styles","effect":"read","access":"login","line":"What can be styled: object types with their properties, colour palette, line weights (0.05-1.0 mm),…"},{"name":"public_plan_svg","effect":"read","access":"public","line":"GET entry: the 2D plan of a configuration as SVG (same parameters as quote)."},{"name":"remove_style_rule","effect":"write","access":"login","line":"Remove a style rule (id from list_style_rules)."},{"name":"reset_style_mood","effect":"write","access":"login","line":"Back to the base style (all expression dials to 0)."},{"name":"schedules","effect":"read","access":"login","line":"Schedules (doors, windows, rooms)."},{"name":"schedules_sheet","effect":"write","access":"login","line":"Schedules as a sheet."},{"name":"set_style","effect":"write","access":"login","line":"Set the look: preset=<style name> picks a named style; type+prop+value sets one property of one obj…"},{"name":"set_style_mood","effect":"write","access":"login","line":"Set the expression: preset=clean_architect|sketch|watercolour|pencil|presentation|playful and/or va…"},{"name":"style_document","effect":"read","access":"sandbox","line":"Resolved drawing style; preset=standard|presentasjon|byggeplass|faggruppe:... ."},{"name":"style_from_image","effect":"read","access":"login","line":"Measure a reference picture LOCALLY (palette, tone, saturation, warmth, contrast, line character, n…"}]},{"cat":"regelsjekk","no":"Regelsjekk","en":"Compliance check","n":4,"tools":[{"name":"compliance","effect":"read","access":"share","line":"Compliance check of the session's model (national rules + municipality); type=hus|hytte|garasje ..."},{"name":"public_compliance","effect":"read","access":"public","line":"Compliance check of a configuration (same fields as quote) + municipality and site facts."},{"name":"public_compliance_get","effect":"read","access":"public","line":"GET entry: compliance check of a configuration from query parameters."},{"name":"sandbox_compliance","effect":"read","access":"public","line":"Compliance check of the sandbox session's model (no login)."}]},{"cat":"energi","no":"Energi (klimaskjerm og energiberegning)","en":"Energy (building envelope and energy calculation)","n":3,"tools":[{"name":"energy_envelope","effect":"read","access":"share","line":"Building-envelope areas from the model: walls above/below terrain, windows and doors per compass di…"},{"name":"energy_report","effect":"read","access":"share","line":"Draft energy report (TEK17 ch. 14, 12 parts, markdown) from the building-envelope areas. Numbers ar…"},{"name":"export_energi_xlsx","effect":"read","access":"login","line":"Building-envelope areas as Excel in Tegnebua's template Underlag_Energiberegninger (sheet Underlag,…"}]},{"cat":"pris","no":"Pris og konfigurator","en":"Price & configurator","n":23,"tools":[{"name":"configurator_catalog","effect":"read","access":"login","line":"Full catalog (logged in)."},{"name":"configurator_leads","effect":"read","access":"login","line":"Incoming requests (supplier)."},{"name":"configurator_link","effect":"read","access":"share","line":"The model as a configurator share link (/konfigurator/plan#c=...): outline, inner walls, openings;…"},{"name":"configurator_my","effect":"read","access":"login","line":"My configurations."},{"name":"configurator_open","effect":"write","access":"login","line":"Open a configuration as an editor session."},{"name":"configurator_quote","effect":"read","access":"login","line":"Price with lines (logged in)."},{"name":"public_catalog","effect":"read","access":"public","line":"Configurator catalog: building types (incl. matrikkel codes), forms, choices."},{"name":"public_describe","effect":"read","access":"public","line":"Free text -> changes to the configuration."},{"name":"public_drawings","effect":"write","access":"public","line":"Drawing set (PDF) of a configuration; returns a token."},{"name":"public_drawings_pdf","effect":"read","access":"public","line":"Fetch the PDF from public_drawings."},{"name":"public_forms","effect":"read","access":"public","line":"Every form (rings) at one size."},{"name":"public_layout","effect":"read","access":"public","line":"Automatic openings for the choices."},{"name":"public_modules","effect":"read","access":"public","line":"A form as editable modules."},{"name":"public_quote","effect":"read","access":"public","line":"Build a configuration and get a price; plan=true adds the 2D plan, mesh=true the 3D mesh."},{"name":"public_quote_get","effect":"read","access":"public","line":"GET entry (web fetch only): price + matrikkel code + compliance + links from query parameters. Site…"},{"name":"public_request","effect":"external","access":"public","line":"Send a request (lead) to the supplier. SENDS to people: ask the user first."},{"name":"public_summary","effect":"read","access":"public","line":"Short summary of the configuration."},{"name":"public_validate","effect":"read","access":"public","line":"Walls and opening problems without building."},{"name":"sandbox_get_drawing","effect":"read","access":"public","line":"The sandbox drawing as a configuration (boundary, walls, openings)."},{"name":"sandbox_load_drawing","effect":"write","access":"public","line":"Draw into an EMPTY sandbox session from a configuration: boundary (ring), walls, openings."},{"name":"sandbox_price","effect":"read","access":"public","line":"Price of the sandbox model with choices (roof, wall type, foundation ...)."},{"name":"session_price","effect":"read","access":"share","line":"Price of the model in an editor session (ex. VAT)."},{"name":"session_price_detail","effect":"read","access":"login","line":"Price with article and NOBB number per line."}]},{"cat":"konstruksjon","no":"Konstruksjon (bindingsverk)","en":"Construction (framing)","n":8,"tools":[{"name":"apply_bearing_system","effect":"write","access":"login","line":"Write the proposed sections into the construction model (ridge ridge_b/h + grade, header and jack c…"},{"name":"bearing_system","effect":"read","access":"login","line":"Bearing system: ridge beam, headers, ridge posts and columns with the proposed section (smallest st…"},{"name":"construction_drawings","effect":"write","access":"login","line":"Construction sheets (K): each drawing is one viewport that follows the framing; move/scale/delete i…"},{"name":"cutlist","effect":"read","access":"login","line":"Cut list (JSON)."},{"name":"get_construction","effect":"read","access":"login","line":"Framing settings."},{"name":"refresh_construction","effect":"write","access":"login","line":"Recompute the framing."},{"name":"set_construction","effect":"write","access":"login","line":"Change framing settings."},{"name":"snow_check","effect":"write","access":"login","line":"Snow load check for the site: municipality (NS-EN 1991-1-3 NA table) and height above sea are set i…"}]},{"cat":"eksport","no":"Eksport og import","en":"Export & import","n":45,"tools":[{"name":"add_import_files","effect":"write","access":"share","line":"«Add file»: more PDFs/images to an import job that waits for you (waiting_for_user), e.g. the site…"},{"name":"add_import_files_upload","effect":"write","access":"share","line":"Same as add_import_files but as a form upload (multipart: files). BuildChat and Conversions use thi…"},{"name":"apply_import_job","effect":"write","access":"share","line":"Put a finished result into the session afterwards (when the model had content and replace_model was…"},{"name":"calibrate_approved_drawing","effect":"write","access":"share","line":"Calibrate the scale of an approved underlay: two points on the underlay (world metres, as clicked)…"},{"name":"cancel_import_job","effect":"write","access":"share","line":"Stop an import job (nothing is deleted: sources, classification and partial results stay)."},{"name":"confirm_import_job","effect":"write","access":"share","line":"Confirm the list and choose: approved=true (put the pages in as underlay and last approved; local,…"},{"name":"delete_approved_drawing","effect":"write","access":"share","line":"Remove one approved page with its underlay and its page in Drawing (one undo step)."},{"name":"edit_import_pages","effect":"write","access":"share","line":"Fix the classification while the job is waiting_for_user: edits:[{idx, kind, storey, view (Nord|Øst…"},{"name":"export_calc_elements","effect":"read","access":"login","line":"Element list for costing."},{"name":"export_capabilities","effect":"read","access":"public","line":"Which export formats the server supports."},{"name":"export_exchange","effect":"read","access":"login","line":"dibrix-exchange.json: neutral exchange format (schema v1) with elements (uid, IFC class, storey, di…"},{"name":"export_glb","effect":"read","access":"login","line":"3D model as GLB."},{"name":"export_ifc","effect":"read","access":"login","line":"IFC4 export (download link)."},{"name":"export_igz","effect":"read","access":"login","line":"The document (.igz)."},{"name":"export_plan_dxf","effect":"read","access":"login","line":"Plan as DXF."},{"name":"export_plan_pdf","effect":"read","access":"login","line":"Plan as PDF (preset=...)."},{"name":"export_sheets_dwg","effect":"read","access":"login","line":"Sheets as DWG."},{"name":"export_sheets_dxf","effect":"read","access":"login","line":"Sheets as DXF."},{"name":"export_sheets_pdf","effect":"read","access":"login","line":"All sheets as PDF. ?sheet=<name or drawing no.> returns just that sheet as its own PDF (one PDF per…"},{"name":"export_skp","effect":"read","access":"login","line":"SketchUp file."},{"name":"get_import_job","effect":"read","access":"share","line":"One import job: state, pages (kind, storey, view, scale_n, rotation, kind_conf, ask = what the code…"},{"name":"get_import_vector","effect":"read","access":"share","line":"A saved no-AI import result: job + report (GET .../import-vector/{id}), spec (/spec) and control sh…"},{"name":"get_import_vector_control","effect":"read","access":"share","line":"Control sheet (PNG) from a no-AI import: the original page of the storey with the model drawn on to…"},{"name":"get_import_vector_spec","effect":"read","access":"share","line":"The hus-spec of a saved no-AI import (with meta.provenance per element)."},{"name":"import_approved_drawings","effect":"write","access":"share","line":"Import the last approved drawings (PDF with all pages, or an image; multipart 'file'): each page be…"},{"name":"import_drawings_capabilities","effect":"read","access":"share","line":"What the import can do now: is AI available (the key is tried against the provider; ai.reason = key…"},{"name":"import_drawings_job","effect":"write","access":"share","line":"Start an import job for drawings (PDF/images as base64 in JSON: files:[{name, data_b64}], mode buil…"},{"name":"import_drawings_upload","effect":"write","access":"share","line":"Same as import_drawings_job but as a form upload (multipart: files, mode, approved_date). The web m…"},{"name":"import_drawings_vector","effect":"write","access":"share","line":"Import drawings WITHOUT AI (free, ~10-60 s): upload PDF/images (multipart: files, replace, name, de…"},{"name":"import_ifc","effect":"write","access":"login","line":"Import IFC (multipart)."},{"name":"import_ifc_as_spec","effect":"write","access":"login","line":"IFC (Revit/ArchiCAD export) → house spec (multipart): walls on the axis, openings on the host, stor…"},{"name":"import_igz","effect":"write","access":"login","line":"Load an .igz (multipart)."},{"name":"import_skp","effect":"write","access":"login","line":"Import SketchUp (multipart)."},{"name":"import_storage","effect":"read","access":"share","line":"Everything stored for the session and the project from imports: source files (content-addressed), j…"},{"name":"import_underlay","effect":"write","access":"login","line":"Underlay (image/PDF) in the plan."},{"name":"import_xdi","effect":"write","access":"login","line":"Import XDI (multipart)."},{"name":"list_approved_drawings","effect":"read","access":"share","line":"Last approved drawings of the project: per page id, kind (plan|snitt|fasade|situasjon|perspektiv|an…"},{"name":"list_import_jobs","effect":"read","access":"share","line":"The import jobs of the session and the project (id, state, mode, cost), newest first. «What needs y…"},{"name":"rename_import_job","effect":"write","access":"share","line":"The project name of an import job (project_name). If the session is not saved as a project, it is s…"},{"name":"rerun_import_job","effect":"write","access":"share","line":"Open a finished import job for a new run with other choices (the previous run is kept)."},{"name":"retry_import_ai","effect":"write","access":"share","line":"«Try the AI reading again» for a job whose pages are in but whose model was not built (result.parti…"},{"name":"retry_import_job","effect":"write","access":"share","line":"Try a failed import job again (back to the list if the pages are classified, else from the start)."},{"name":"tolk_scale_from_known","effect":"write","access":"share","line":"«Measure a known length»: idx, two points p0/p1 on the page (fractions 0-1 in the page's own unrota…"},{"name":"tolk_status","effect":"read","access":"share","line":"«Interpret»: per-page status of an import job: rotation (deg 0/90/180/270 + skew_deg, the suggestio…"},{"name":"update_approved_drawing","effect":"write","access":"share","line":"Change one approved page (one undo step): kind, storey (plan), view (facade/section scene), scale_n…"}]},{"cat":"historikk","no":"Angre / gjør om","en":"Undo / redo","n":2,"tools":[{"name":"redo","effect":"write","access":"sandbox","line":"Redo."},{"name":"undo","effect":"write","access":"sandbox","line":"Undo the last change."}]},{"cat":"versjon","no":"Versjoner og godkjenning","en":"Versions & approval","n":19,"tools":[{"name":"approve_version","effect":"write","access":"share","line":"Approve a version = «Last approved» (owner/admin ONLY). source (godkjenningskilde) is REQUIRED: wha…"},{"name":"approved_overview","effect":"read","access":"share","line":"The last approved version, the as-built version, the newest version, how many came after the approv…"},{"name":"baseline_changes","effect":"read","access":"share","line":"«Changed since last approved»: elements added, removed and changed (walls, openings, slabs, roofs,…"},{"name":"compare_versions","effect":"read","access":"share","line":"Compare two versions: elements per type, bbox, area, volume, and what was added/removed per spec li…"},{"name":"geometry_rules","effect":"read","access":"share","line":"Which geometry rules the model was saved under against today's (wall to roof etc.): saved, now, old…"},{"name":"geometry_rules_update","effect":"write","access":"share","line":"«Update to today's rules»: rebuild the walls that follow roofs / slabs with today's rules and stamp…"},{"name":"get_version","effect":"read","access":"share","line":"Get one version (id, number 3 / v3, or latest) with its numbers (elements per type, area, volume, b…"},{"name":"list_baselines","effect":"read","access":"share","line":"Last approved by the MUNICIPALITY (not the owner's «approved»): the current reference and history w…"},{"name":"list_versions","effect":"read","access":"share","line":"List the versions (newest first): number, time, author, comment, size, hash, status (draft/review/a…"},{"name":"mark_as_built","effect":"write","access":"share","line":"Mark a version «As built» (owner/admin ONLY). source is REQUIRED: what the as-built state rests on…"},{"name":"mark_phases_from_baseline","effect":"write","access":"share","line":"Mark the live model from «changed since last approved»: unchanged = existing, changed = modified, a…"},{"name":"open_info","effect":"read","access":"share","line":"What a link needs to open ready to test: the project the session belongs to (name for the title), t…"},{"name":"restore_version","effect":"write","access":"share","line":"Restore an old version AS A NEW version on top (never overwrites). The live session takes its conte…"},{"name":"save_version","effect":"write","access":"share","line":"Save the session as a NEW immutable version (igz + house spec + preview + numbers). comment = what…"},{"name":"set_municipal_baseline","effect":"write","access":"login","line":"Register a stored version as approved by the municipality: version (id/number/latest), case_ref, de…"},{"name":"set_version_status","effect":"write","access":"share","line":"Set the status draft / review / approved: send to review (edit rights), reject or withdraw an appro…"},{"name":"version_igz","effect":"read","access":"share","line":"Download the version as .igz (byte for byte as saved)."},{"name":"version_preview","effect":"read","access":"share","line":"Small preview (PNG, iso) of the version."},{"name":"version_spec","effect":"read","access":"share","line":"The house spec (JSON) the version carried: read, edit and build with build_house_from_spec."}]},{"cat":"konto","no":"Konto og prosjekt","en":"Account & projects","n":59,"tools":[{"name":"api_key_revoke","effect":"account","access":"login","line":"Revoke an API key at once (key_id from api_keys_list). Needs a login, not a key."},{"name":"api_keys_list","effect":"account","access":"login","line":"List the owner's API keys (never the key itself): name, level, scope, expiry, last used, use count,…"},{"name":"conversion_action","effect":"write","access":"login","line":"Act on a conversion (needs edit rights in the project): accept (confirms the list and builds the mo…"},{"name":"conversion_archive","effect":"write","access":"login","line":"'Remove from the list': moves a conversion to the archive (archived: true; needs edit rights; not w…"},{"name":"conversion_edit_pages","effect":"write","access":"login","line":"Fix the pages and regions straight from the Conversions row (needs edit rights; only while the job…"},{"name":"conversion_finding_action","effect":"write","access":"login","line":"One action in the findings list (needs edit rights; the conversion must have built a model): findin…"},{"name":"conversion_findings","effect":"read","access":"login","line":"The findings list in 'Clarify measurements': what the interpreter actually found, read from what is…"},{"name":"conversion_guide_action","effect":"write","access":"login","line":"One action in 'Clarify measurements' (needs edit rights): guide_add (line = {bilde: {side, region?}…"},{"name":"conversion_guides","effect":"read","access":"login","line":"'Clarify measurements': the guide lines per drawing (type, p0/p1 in the page frame 0-1, verdi_mm or…"},{"name":"conversion_north","effect":"write","access":"login","line":"The direction (north) as an interpretation discussion (needs edit rights): north_choose (deg = wher…"},{"name":"conversion_page_view","effect":"read","access":"login","line":"A page of a conversion in high resolution (JPEG, 200 dpi, longest side at most px) for zooming; unr…"},{"name":"conversion_pages","effect":"read","access":"login","line":"The pages of a conversion that waits for you: type, floor, direction, scale, rotation, the regions…"},{"name":"conversion_thumb","effect":"read","access":"login","line":"Thumbnail (PNG) of a page of a conversion."},{"name":"conversion_unarchive","effect":"write","access":"login","line":"Put an archived conversion back in the list (archived: false)."},{"name":"create_project","effect":"account","access":"login","line":"Create a new, empty project (logged in, never with an API key). owner_type=user (default, owner = y…"},{"name":"get_prefs","effect":"read","access":"login","line":"The user's effective settings (defaults filled in) and what the user changed. project_id adds the p…"},{"name":"intake_access","effect":"read","access":"login","line":"My access to AI drawing interpretation on the Dibrix machine (the team's Claude subscription): allo…"},{"name":"intake_agent_tool","effect":"write","access":"login","line":"Agent interpreter (setting import.mode_agent): one tool call from Claude on the Dibrix machine agai…"},{"name":"intake_status","effect":"read","access":"login","line":"Visible status of the Dibrix machine (Alt B): state (working|idle|offline|paused), last seen, queue…"},{"name":"intake_team_get","effect":"read","access":"login","line":"The team's choices for AI interpretation on the Dibrix machine: who (intake.cli_members: owner|sele…"},{"name":"intake_team_set","effect":"account","access":"login","line":"The team owner/admin changes the choices (only values from options). Only a system admin can turn p…"},{"name":"intake_team_usage","effect":"read","access":"login","line":"Usage overview for the team owner over the last 30 days: jobs, pages and last time per user. Counte…"},{"name":"key_info","effect":"read","access":"login","line":"Who this API key (DIBRIX_API_KEY) is: level (read/propose/write), scope (one session or projects),…"},{"name":"list_conversions","effect":"read","access":"login","line":"The status of your conversions (drawings/PDF, pictures, point clouds) across every project you can…"},{"name":"list_prefs","effect":"read","access":"public","line":"All user settings: groups, types, ranges, defaults and Norwegian/English text (open). Check them be…"},{"name":"list_projects","effect":"read","access":"login","line":"Projects."},{"name":"list_teams","effect":"read","access":"login","line":"Teams of the logged-in user (id, name, slug, role). Use the name in set_project_team."},{"name":"login","effect":"account","access":"public","line":"Log in (email + password from the user; never in a chat log)."},{"name":"logout","effect":"account","access":"login","line":"Log out."},{"name":"project_conversions","effect":"read","access":"login","line":"Like list_conversions but for one project (needs read access)."},{"name":"project_storage","effect":"read","access":"login","line":"Stored import data per project (like import_storage but for a project id; needs read access)."},{"name":"retolk_laering","effect":"read","access":"login","line":"Learning data for the interpretation bench: the corrections users reported to the interpreter (text…"},{"name":"save_into_project","effect":"write","access":"login","line":"Save the bound session INTO an existing project (Ctrl+S / POST /projects/{id}/save/{sid}). Not Save…"},{"name":"save_project","effect":"account","access":"login","line":"Save the session as a project (Save as)."},{"name":"set_prefs","effect":"account","access":"login","line":"Change user settings (values: {key: value}, reset: [keys], reset_groups: [groups], project_id for a…"},{"name":"set_project_folder","effect":"account","access":"login","line":"Move a project into a folder inside Dibrix (the folder field; shown under Projects). Folder name =…"},{"name":"set_project_team","effect":"account","access":"login","line":"Put a project in a team («save the project in team Tegnebua»): team = name, slug or id from list_te…"},{"name":"talk_audio","effect":"read","access":"login","line":"The audio of a voice message (team member)."},{"name":"talk_audio_part","effect":"read","access":"login","line":"Audio part no. part (0, 1, …) of a voice message when the audio was restarted during the recording…"},{"name":"talk_chunk","effect":"write","access":"public","line":"One audio chunk during a /talk recording (multipart: audio, draft, seg, seq, start_s, at). Sent eve…"},{"name":"talk_draft_finish","effect":"write","access":"login","line":"Finish a /talk recording that was never sent (team admin): the audio is assembled, the photos that…"},{"name":"talk_drafts","effect":"read","access":"login","line":"Recordings to the team that were started but never sent (team admin): sender, number of audio chunk…"},{"name":"talk_info","effect":"read","access":"public","line":"What the /talk page needs: team, limits and, when logged in, the teams and the team's projects."},{"name":"talk_link_create","effect":"account","access":"login","line":"Make a secret team link to /talk (team admin): team_id, label (who it is for), ttl_days (default 90…"},{"name":"talk_link_list","effect":"read","access":"login","line":"The team's /talk links (team admin), without tokens."},{"name":"talk_link_revoke","effect":"account","access":"login","line":"Revoke a /talk link at once (team admin)."},{"name":"talk_message","effect":"write","access":"public","line":"Voice message from /talk (multipart, metadata only): draft (audio chunks from /talk/chunk and photo…"},{"name":"talk_messages","effect":"read","access":"login","line":"Voice messages to a team (member), newest first: address, sender, transcript, photos with text and…"},{"name":"talk_photo","effect":"read","access":"login","line":"Photo no. i of a voice message (team member)."},{"name":"talk_photo_upload","effect":"write","access":"public","line":"One photo during a /talk recording, as soon as it is taken (multipart: photo, draft, idx, at = time…"},{"name":"talk_skann_del","effect":"write","access":"public","line":"«Share to Dibrix» from an iOS shortcut (the Scaniverse share sheet): multipart with the file (fil o…"},{"name":"talk_skann_get","effect":"read","access":"public","line":"The plan from one scan with the corrections applied and the status computed with today's thresholds…"},{"name":"talk_skann_list","effect":"read","access":"login","line":"The team's scans from /talk/skann (team member)."},{"name":"talk_skann_modell","effect":"write","access":"login","line":"Make a model from a scan: the approved scan plan (with the laser corrections) becomes a NEW Dibrix…"},{"name":"talk_skann_retting","effect":"write","access":"public","line":"Correct one measure with a laser: {etasje, rom, vegg, lengde_m} (the neighbouring walls move parall…"},{"name":"talk_skann_upload","effect":"write","access":"public","line":"Upload one scan per storey (multipart: fil = Scaniverse .ply or .glb, navn, project_id, team_id; te…"},{"name":"talk_skann_veggbilde","effect":"read","access":"public","line":"Colour image straight at one wall from the scan (orthophoto 1 cm/pixel, 8 cm behind to 0.9 m in fro…"},{"name":"talk_start","effect":"write","access":"public","line":"A /talk recording starts (link or logged in): returns the draft id for the audio chunks uploaded du…"},{"name":"whoami","effect":"read","access":"public","line":"Who is logged in."}]},{"cat":"buildchat","no":"BuildChat (KI i appen)","en":"BuildChat (in-app AI)","n":10,"tools":[{"name":"build_chat","effect":"write","access":"login","line":"One BuildChat turn (the in-app AI runs Python in the session)."},{"name":"build_chat_clear","effect":"write","access":"login","line":"Clear BuildChat history."},{"name":"build_chat_inbox_add","effect":"write","access":"login","line":"Message during a run: put a message in the BuildChat queue while a turn runs. The setting «New mess…"},{"name":"build_chat_inbox_delete","effect":"write","access":"login","line":"Remove a message still waiting in the BuildChat queue (409 once read)."},{"name":"build_chat_inbox_edit","effect":"write","access":"login","line":"Edit a message still waiting in the BuildChat queue (409 once read)."},{"name":"build_chat_inbox_list","effect":"read","access":"login","line":"The BuildChat queue: queued and read messages (status queued|read), whether a turn runs."},{"name":"build_chat_smart","effect":"write","access":"login","line":"BuildChat turn with a model brief injected (better interpretation)."},{"name":"build_chat_status","effect":"read","access":"login","line":"Is BuildChat configured / busy?"},{"name":"build_chat_stop","effect":"write","access":"login","line":"Stop a running BuildChat turn (clear_queue=true also empties the queue; otherwise the queued messag…"},{"name":"build_chat_stream","effect":"write","access":"login","line":"Same turn as build_chat, as server-sent events with progress per round (progress ... done)."}]},{"cat":"drift","no":"Drift og feilsøking (bare systemadmin)","en":"Operations & debugging (system admin only)","n":12,"tools":[{"name":"client_input","effect":"write","access":"public","line":"The browser sends a batch of recording lines (only with input recording on). Open, rate-limited and…"},{"name":"close_developer_message","effect":"write","access":"login","line":"Set the status of a developer message: lukket (closed, default; note = the PR/rev that solved it),…"},{"name":"get_capability_request","effect":"read","access":"public","line":"Read the status of your own mangler request (poll_token from request_capability). Returns status, n…"},{"name":"list_developer_messages","effect":"read","access":"login","line":"Messages to the developers from BuildChat and the API, newest first: id, type, text, session, proje…"},{"name":"ops_errors","effect":"read","access":"login","line":"Error groups from browser, Shell and the server's own 500s: fingerprint, count, first/last seen, re…"},{"name":"ops_input_log","effect":"read","access":"login","line":"Input recordings from browsers with recording on (?debug=input or the setting debug.input_log): per…"},{"name":"ops_logs","effect":"read","access":"login","line":"Last lines of dibrix-web.log, masked (e-mail, keys, long ids, IP, URL query). lines (max 1000), q =…"},{"name":"ops_status","effect":"read","access":"login","line":"Server status now: rev, uptime, sessions, memory, disk, age of the newest backup, log size, errors…"},{"name":"recording_timeline","effect":"read","access":"login","line":"Troubleshooting recordings per user in a time window: the tabs (session, browser, screen, mode) and…"},{"name":"report_to_developer","effect":"write","access":"login","line":"Report to the developers from a session (same as the BuildChat tool): kind feil | ønske | tolkefeil…"},{"name":"request_capability","effect":"write","access":"login","line":"Ask the developers for a missing tool/parameter (kind=mangler): goal, attempted_tool, expected_para…"},{"name":"session_oplog","effect":"read","access":"share","line":"Journal of the session's last writing operations (scrubbed: no secrets, no long texts). Replay them…"}]}]}