Complete reference for tools and resources available in Tekla MCP Server.
Safety annotations:
- 🔒 Read-only - reads model data without modifying it, kept visible in read‑only mode
- ✏️ Creative - creates new model objects without modifying or deleting existing data
⚠️ Destructive - modifies or deletes existing model data
Parameter notation:
param = required, param = optional.
Type and default shown where relevant.
| Category | Tool | Description | Parameters |
|---|---|---|---|
| Selection | 🔒 select_elements_by_filter |
Select elements by type, Tekla class, name, profile, material, finish, phase, part/assembly prefix/number. Supports AND/OR logic | element_type (str), tekla_classes (int | list[int]), standard_string_filters (dict), standard_numeric_filters (dict), custom_string_filters (dict), custom_numeric_filters (dict), combine_with (str, default: "AND") - all optional |
| Selection | 🔒 select_elements_by_filter_name |
Select elements using a saved Tekla filter | filter_name (str) |
| Selection | 🔒 select_elements_by_guid |
Select elements by GUID | guids (list[str]) |
| Selection | 🔒 select_elements_assemblies_or_main_parts |
Switch selection to assemblies or main parts for the currently selected elements | mode (str): "Assembly" | "Main Part" |
| Components | ✏️ put_components |
Insert a Tekla component on selected elements. Supports semantic attribute mapping and intelligent defaults (e.g. anchor type by weight) | component_name (str), properties_set (str, default: "standard"), custom_properties (dict) |
| Components | 🔒 get_components |
Get all components attached to selected elements. Returns name, number, attribute schema and current values | - |
| Components | modify_components |
Modify attributes of existing components on selected elements | component_name (str), custom_properties (dict) |
| Components | remove_components |
Remove all components with the given name from selected elements | component_name (str) |
| Properties | 🔒 get_elements_properties |
Retrieve structured data about selected elements. mode="flat" (default) returns flat tables (assemblies, parts, reinforcement, IFC objects) with UDAs and report properties. mode="snapshot" returns full snapshots with all report properties, all UDAs, and nested reinforcement - use for convention checking. mode="guids_only" returns just each element's GUID (skips property extraction) |
report_props_definitions (list[str]), mode (str: "flat" | "snapshot" | "guids_only", default: "flat") - all optional |
| Properties | set_elements_properties |
Set properties on selected elements. Parts: name, profile, material, finish, class, numbering, phase. Assemblies: name, numbering, phase. UDAs supported via user_properties |
name (str), profile (str), material (str), tekla_class (int), finish (str), part_prefix (str), part_start_number (int), assembly_prefix (str), assembly_start_number (int), phase (int), user_properties (dict) - all optional |
| Properties | 🔒 get_elements_cut_parts |
Find all boolean cut parts in selected elements, grouped by parent part with GUIDs and profiles | - |
| Properties | clear_elements_udas |
Clear UDAs from selected parts and assemblies. Clears all UDAs if no names provided | uda_names (list[str], optional) |
| Properties | 🔒 get_elements_coordinates |
Get coordinates of selected elements: start/end points and offsets for beams, contour points for slabs | - |
| Properties | 🔒 get_elements_bounding_boxes |
Get axis-aligned bounding boxes for selected elements. Returns per element: element_type (Tekla C# class name), min/max corners {x, y, z}, centroid {x, y, z} (mm) |
- |
| Properties | 🔒 compare_elements |
Compare two selected elements and return detailed differences (properties, UDAs, cut parts, welds, reinforcements) | ignore_numbering (bool, default: false) |
| Properties | copy_properties_from_ifc |
Copy properties from IFC reference objects to matching Tekla elements by bounding-box overlap | user_properties (dict[str, str]): IFC property name → Tekla UDA name |
| View | 🔒 draw_elements_labels |
Draw temporary labels on selected elements. Parts show position, GUID, name, profile, material, finish, class, weight. Assemblies show position, GUID, name, weight | label (str, optional), custom_label (str, optional) |
| View | 🔒 zoom_to_selection |
Zoom the active rendered view to fit selected elements | - |
| View | 🔒 redraw_view |
Redraw the active view | - |
| View | 🔒 show_only_selected |
Hide everything except selected elements in the active view | - |
| View | 🔒 hide_selected |
Hide selected elements in the active view | - |
| View | 🔒 color_selected |
Color selected elements with an RGB colour | red (int, 0–255), green (int, 0–255), blue (int, 0–255) |
| View | 🔒 apply_view_filter |
Apply a saved view filter to the active view | filter_name (str) |
| Operations | cut_elements_with_cutters |
Boolean-cut selected elements using parts identified by class or GUID | cutter_class (int | null), cutter_guids (list[str] | null) - exactly one required, delete_cutting_parts (bool, default: false) |
| Operations | convert_cut_parts_to_real_parts |
Convert all cut parts in selected elements into standalone model parts | - |
| Operations | 🔒 check_for_orphans |
Find orphaned embedded subassemblies or rebars inside the bounding box of selected elements. Returns {object_guid, target_guid} pairs to feed to the attach tools |
mode (str): "subassemblies" | "rebars" |
| Operations | attach_assemblies |
Attach specified assemblies to target assemblies | pairs (list): each item has object_guid (str), target_guid (str) |
| Operations | attach_rebars |
Attach specified reinforcement to target assemblies' main parts | pairs (list): each item has object_guid (str), target_guid (str) |
| Operations | 🔒 check_for_invalid_objects |
Find invalid objects (missing profile/material, bad geometry, no parent) among selected elements and their bounding boxes | - |
| Operations | 🔒 clash_check |
Run Tekla's clash check against the current selection. Returns one record per detected clash with object1, object2 (each: guid, name, profile, material, tekla_class, top_assembly_guid), clash_type, and overlap (only for CLASH_TYPE_CLASH). When filter_name is supplied, selected assemblies are expanded to their child parts and reinforcement before the check runs, only objects matching the named filter are selected and checked |
min_distance (float, mm, default: 0.0), between_parts (bool, default: true), between_reference_models (bool, default: false), objects_inside_reference_models (bool, default: false), filter_name (str) - all optional |
| Operations | 🔒 create_report |
Create a Tekla report from the current selection using a report template. Waits for the file to appear and returns content_preview (configurable via reports.preview_max_chars) + size_bytes. When output_folder is omitted, writes to XS_REPORT_OUTPUT_DIRECTORY |
template_name (str), output_filename (str, optional - defaults to template name), output_folder (str, optional), title1/title2/title3 (str) - optional, return_full_content (bool, default: False) |
| Operations | run_macro |
Run a Tekla macro by filename | macro_name (str) |
| Operations | 🔒 select_model_objects_from_drawings |
Select the model objects corresponding to the currently selected drawings | - |
| Drawings | 🔒 get_drawings |
Get drawings with optional filtering | drawing_type (str: G/A/W/C/M), name_filter (dict), mark_filter (dict), title1_filter (dict), title2_filter (dict), title3_filter (dict) - all optional |
| Drawings | 🔒 get_drawings_properties |
Get properties of drawings by mark list, or the currently selected drawings if omitted | marks (list[str], optional) |
| Drawings | set_drawings_properties |
Set name, titles and UDAs on drawings by mark list, or the currently selected drawings if omitted. Does not require any drawing to be open | marks (list[str], optional), name (str), title1/title2/title3 (str), user_properties (dict) - all optional |
| Drawings | set_drawings_issue_state |
Issue or unissue drawings by mark list, or the currently selected drawings if omitted. Drawing-list level action, no drawing needs to be open | marks (list[str], optional), action (str: "issue"/"unissue", default: "issue") |
| Drawings | update_drawings |
Update drawings from the model by mark list, or the currently selected drawings if omitted. Already up-to-date drawings are skipped, not errors. None of the target drawings can be the active drawing | marks (list[str], optional) |
| Drawings | ✏️ check_drawing_collisions |
Detect drawing-layout problems in drawings selected in the Document Manager (or by marks) by exporting each to DXF and analysing geometry: mark overlaps, view-vs-view overlaps, views outside the sheet grid, view frames hitting sheet furniture, and content crossing the sheet boundary. None of the target drawings can be the active drawing, and all must be up to date. A revision cloud is drawn at every found problem, colored by category: Red for geometry/view-frame collisions, Blue for mark overlaps, Cyan for content outside the sheet |
marks (list[str], optional) |
| Drawings | ✏️ check_for_unattached_dimensions |
Flag dimensions not attached to part geometry in drawings selected in the Document Manager (or by marks) and cloud them. A point is attached at an edge corner, the centre of a bolt/hole/bar/corner cap, or anywhere along a perpendicular edge (part/section edges, reinforcement, hidden lines, grids/centre lines, embeds). Views with part shortening are handled. None of the target drawings can be the active drawing, and all must be up to date. Magenta clouds are drawn at every unattached point. Reports degraded_dimensions - dimensions whose anchor state could not be read, so the check was not fully conclusive for them |
marks (list[str], optional) |
| Drawings | 🔒 print_drawings |
Print drawings to PDF with automatic paper size/orientation/multi-sheet tiling detection (A0-A4, or a clean tiling of one). With print_settings, customer settings are used as-is. Per-mark failures are reported in errors, a batch whose file count falls short (marks cannot be tied to output files) is reported once in warnings |
marks (list[str], optional), print_settings (str, optional) |
| Drawings | 🔒 export_drawings |
Export drawings to DWG/DXF/DGN via the Document Manager export macro. With export_settings, customer settings are used as-is |
marks (list[str], optional), drawing_format (str: dxf/dwg/dgn, default: dwg), version (str: 2000/2004/2007/2010/2013, default: 2010), export_settings (str, optional) |
| Drawings | 🔒 open_drawing |
Open a drawing by its mark in Tekla's drawing editor. | mark (str) |
| Drawings | 🔒 close_drawing |
Close the active drawing | save (bool, default: true) |
| Drawings | 🔒 get_drawing_views |
List all views in the active drawing with type, scale, position, size and display settings. Includes the sheet view (is_sheet=true, with its own size), needed to read title block annotations via get_view_annotations. Returns the total sheet count too. If the sheet combines multiple standard-size pages, each model view gets a sheet_number (1-based, top-left page first, or null if outside the page grid) |
- |
| Drawings | 🔒 get_view_objects |
List the model objects (parts, rebars, etc.) shown in a view, resolved to name/profile/material/class. Bolts also report their standard, size, count and connected parts. Parts of an embedded detail sub assembly are reported once as the subassembly. Model objects only, not annotations. No geometry | view_key (str), limit (int, default: 200) |
| Drawings | 🔒 get_view_annotations |
Read the marks, dimensions and text in a view with their content (mark string, dimension value, text). Marks with no readable text (e.g. WeldMark, LevelMark) report content "N/A". For the sheet view, only text/graphics are returned (marks/dimensions are aggregated per child view). No geometry |
view_key (str), type_filter (str: all/dimensions/marks/text/graphics, default: all), limit (int, default: 200) |
| Drawings | 🔒 check_for_unmarked_objects |
Find parts, reinforcement and bolts with no mark pointing at them. An embedded detail subassembly is one parts unit - a mark on any one of its member parts covers the whole assembly. Reinforcement and bolts inside the assembly are still checked individually, not collapsed. Reports unresolved_count - view objects that could not be resolved to a model object and so were not checked |
view_keys (list[str], optional - checks every non-sheet view in the active drawing when omitted), categories (list[str]: all/parts/reinforcement/bolts, default: all), limit (int, default: 200) |
| Drawings | move_view |
Move a view by an offset (mm) | view_key (str), dx (float, mm), dy (float, mm) |
| Drawings | align_section_views |
Align section views in projection with the view they were cut from: a horizontal cut aligns the section's X position, a vertical cut aligns Y (only one coordinate changes). Parent found by matching the section view's name to a section mark of the same name. A section that overlaps the parent on the non-aligned axis by more than overlap_tolerance is treated as intentionally placed outside its projection lane (e.g. parked in a row below the parent) and left as-is. view_keys aligns only the listed section views. Views that could not be moved are reported in failed and the loop continues rather than aborting |
view_keys (list[str], optional - aligns all when omitted), overlap_tolerance (float, default: 5.0, mm) |
| Drawings | set_views_attributes |
Set display attributes (scale, opening symbols, reflected/undeformed/unfolded) on one or more drawing views | views_attributes (list): each item has view_key (str) and at least one of scale (float), show_part_openings_or_recess_symbol (bool), reflected_view (bool), undeformed_view (bool), unfolded_view (bool) |
| Drawings | delete_views |
Delete one or more views from the active drawing | view_keys (list[str]) |
| Drawings | delete_clouds |
Delete all clouds from model views and the sheet view | view_keys (list[str], optional - processes all views when omitted) |
| Modeling | ✏️ place_beams |
Place one or more beams | beams (list): each item has start_point, end_point, profile, material, tekla_class (int); optional: start_point_offset, end_point_offset, name, position, part_number, assembly_number |
| Modeling | ✏️ place_columns |
Place one or more columns | columns (list): each item has base_point, height (float, mm), profile, material, tekla_class (int); optional: start_point_offset, end_point_offset, name, position, part_number, assembly_number |
| Modeling | ✏️ place_panels |
Place one or more wall panels | panels (list): each item has start_point, end_point, profile, material, tekla_class (int); optional: start_point_offset, end_point_offset, name, position, part_number, assembly_number |
| Modeling | ✏️ place_slabs |
Place one or more slabs | slabs (list): each item has points (list of ≥3 points), profile, material, tekla_class (int); optional: name, position, part_number, assembly_number |
| Modeling | move_elements |
Move selected elements by a displacement vector | dx (float, mm, default: 0), dy (float, mm, default: 0), dz (float, mm, default: 0) - at least one must be non-zero |
| Modeling | ✏️ copy_elements |
Copy selected elements to a new position defined by the displacement vector, keeping originals in place. Assemblies are expanded to all constituent parts recursively | dx (float, mm, default: 0), dy (float, mm, default: 0), dz (float, mm, default: 0) - at least one must be non-zero |
| Modeling | ✏️ place_grid |
Place a rectangular grid in the Tekla model | x (list[float], mm), y (list[float], mm), z (list[float], mm), x_labels (list[str]), y_labels (list[str]), z_labels (list[str]), origin (PointInput), name (str) |
| Modeling | delete_selected |
Delete all selected elements | - |
| Modeling | ✏️ create_phase |
Create a new phase in the Tekla model | phase_number (int), name (str, optional) |
| Resource | Description |
|---|---|
project://context |
Index of project context Markdown files (name, description, file key) |
project://context/{file} |
Full content of a specific project context Markdown file |
tekla://components |
Mapping of Tekla component name → config key for all components configured on the server |
tekla://components/{component_key} |
Description and custom_properties schema (attribute keys, types, allowed values) for a specific component |
tekla://catalog/materials |
All available material names from the Tekla material catalog |
tekla://catalog/rebars |
All available rebar grades and sizes from the Tekla rebar catalog |
tekla://macros |
Available Tekla macro filenames from XS_MACRO_DIRECTORY |
tekla://reports |
Available Tekla report template names (.rpt files) from XS_TEMPLATE_DIRECTORY |
tekla://element_types |
Element types with their Tekla class numbers from element_types.json |
tekla://filters/selection |
Available Tekla selection filter names (.SObjGrp files) |
tekla://filters/view |
Available Tekla view filter names (.VObjGrp files) |
tekla://phases |
All phases in the current model (number, name, comment) and the active phase number |
tekla://grids |
Rectangular grid data: guid, name, X/Y/Z axes with coordinates and labels |
tekla://connection_status |
Current Tekla connection status: connected (bool), message |
Filter resources search in:
XS_FIRMadvanced option directoriesXS_PROJECTadvanced option directories- Model attributes directory (
./attributes)