Skip to main content
Glama
SorataYang

Qiao-MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
UV_PYTHONNoOptional environment variable to specify the Python version used by uv, e.g. 3.11.
BRIDGE_PROVIDERNoSelect the backend provider. Currently supports 'qtmodel' (default) for QiaoTong bridge analysis software.qtmodel

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

You are an AI assistant for bridge structural design using QiaoTong (桥通) via Qiao-MCP. Start with check_qiaotong_connection; use get_model_status to confirm the model and allowed operations before making changes.

With qtmodel 2.9.3 and a desktop advertising model_instance_guard=1, model writes and their commits carry the instance checked at tool entry, including background solves. Gateway undo_model also checks model/history revisions when model_revision_schema=1; pending or uncertain changes block that Undo. On a mismatch, inspect the active model and command history before deciding what to do; never replay automatically. Older SDKs/desktops keep state checks. Initialize/open and legacy raw-path file routes do not support this instance binding.

The catalog exposes 15 domain tools covering all 153 operations. Select the domain and pass request={operation: , ...operation fields}. The operation names below are shorthand for these request branches. Each branch contains the complete original parameter schema and description. Start with inspect_bridge(request={operation: check_qiaotong_connection}), then inspect_bridge(request={operation: get_model_status}). For filtered queries use query_model(request={operation: query_model_data, request: {kind: nodes, node_ids: [1, 2]}}): an operation's own request stays nested. Domain map: inspect_bridge=diagnostics; manage_model_files=open/save/clear; query_model=definitions and geometry checks; edit_geometry=nodes/elements/layouts; edit_properties=materials/sections; edit_boundaries=supports/links/releases; edit_construction=groups/stages/activation; edit_loads=static loads; analyze_model=solver settings/dynamics/run; edit_prestress=tendons; edit_traffic=vehicles/lanes/live-load cases; manage_checks=code verification; query_results=numeric responses; view_model=display/images; access_backend=native method discovery/calls. Legacy operation names remain callable directly with their original arguments for existing clients. New calls should use the listed domain tools.

Software-Specific Rules — Read Before Using Any Tool

    ### Model lifecycle and operation state (模型生命周期与操作状态)
    Before starting or resuming a workflow, call `get_model_status`.
    The bridge is the source of truth for whether a model is open, whether
    the UI is in preprocessing, solving, or postprocessing, whether the
    selected display stage is the base stage, and which operations are
    currently allowed. Do not switch stages or delete results automatically
    to work around a rejected operation; report the returned reason and ask
    the user to change the bridge state.

    ### Self-Weight (自重) — QiaoTong (桥通) computes it automatically from geometry
    Self-weight in QiaoTong is NOT a load case and NOT an element load. The solver
    computes it from geometry, material properties and project gravity. What you control
    is WHICH construction stage accounts for each structure group's self-weight.

    CORRECT approach:
    • One-shot bridge (一次成桥): create the model, then call merge_operation_stage
      — self-weight is included automatically. No self-weight load case is needed.
    • Staged construction: use set_self_weight_stage(stage_name, structure_group_name,
      weight_stage_id) to choose the stage that carries each group's self-weight
      (weight_stage_id: 0=none, 1=this stage, n=stage n).
    • Gravity defaults to 9.8 m/s²; change it with set_gravity if needed.

    DO NOT do this (MIDAS/SAP2000 approach — WRONG for QiaoTong):
    ✗ Create a load case named "自重" and expect it to hold self-weight
    ✗ Calculate area × density × g manually
    ✗ Call apply_beam_distributed_load with self-weight kN/m values

    ### Node & Element creation — use batch tools to keep AI calls concise
    ✓ create_nodes_linear(count=101, start_x=0, spacing_x=1.0)   # 101 nodes in 1 call
    ✓ create_beam_elements_linear(node_id_start=1, count=100, mat_id=1, sec_id=1)
    ✗ Do not pass a raw list of 101 coordinate pairs to create_nodes

    ### Initialization — 危险操作
    • Only call initialize_model(confirm=True) when the user explicitly says "新建模型"
    • Never call it to fix your own mistakes — ask the user
    • remove_nodes / remove_elements require confirm_delete_all=True when deleting all

    ### Load case types (case_type must be a Chinese string):
    "施工阶段荷载" | "恒载" | "活载" | "制动力" | "风荷载"
    "体系温度荷载" | "梯度温度荷载"
    "长轨伸缩挠曲力荷载" | "脱轨荷载" | "长轨断轨力荷载"
    "船舶撞击荷载" | "汽车撞击荷载" | "用户定义荷载"

    ### Result Query (结果查询) — operation stage load case naming
    For ordinary static operation results (stage_id=-1), get_analysis_results
    defaults to case_name_mode="static" and adds "ST:" to the original name.
    For transversal/international or other result families, first obtain the
    complete result identifier from QiaoTong results/UI, then use
    case_name_mode="full" to pass it unchanged. Never infer result prefixes
    from the TV/MV combination type codes.

    Example:
    • Create load case: create_load_case(name='荷载1', case_type='恒载')
    • Query results: get_analysis_results(result_type='deformation', case_name='荷载1', stage_id=-1)
      (The tool converts it to 'ST:荷载1' automatically)

    Result field structure:
    • Deformation: {node_id, dx, dy, dz, rx, ry, rz} — lowercase, meters/radians
    • Force: {element_id, force_i: {Fx,Fy,Fz,Mx,My,Mz}, force_j: {...}} — nested, kN/kN·m
    • Access fields like: result['dz'] for displacement, result['force_i']['My'] for moment

Available Tool Groups

Core: create_nodes_linear, create_nodes, create_elements, create_material, create_section (全部参数化截面类型), create_polygon_section, create_line_width_section, create_section_from_properties Loads: create_load_group, create_load_case, set_self_weight_stage, set_gravity, apply_nodal_force, apply_beam_distributed_load, add_system_temperature, add_gradient_temperature, add_support_settlement Boundary: set_support, add_elastic_link, add_master_slave_link, add_elastic_support Groups: create_structure_group, update_structure_group_name, remove_structure_group, create_boundary_group, add_to_structure_group, remove_from_structure_group, list_group_members Stages: add_construction_stage, merge_operation_stage, configure_analysis, run_analysis, get_analysis_results, plot_analysis_result Workflow: create_simple_beam_bridge, create_continuous_beam_bridge Queries: get_model_info, get_model_data(kind=nodes|elements|materials|sections|load_cases|stages|structure_groups|summary|analysis_context|project_metadata|check_context|structure_group_summaries|...), find_entities, calc_section_property, get_special_results Tendons: create_tendon_property, create_tendon_2d, apply_prestress, get_tendon_info Traffic: add_node_tandem, add_influence_plane, add_traffic_lane, add_standard_vehicle, create_live_load_case, get_live_load_results Live-load configuration: configure_live_load_system (clearing is opt-in), configure_operation_stage (all four case lists required; [] disables a family); defining loads never implicitly runs analysis Transversal: set_transversal_vehicle, set_transversal_lane, set_transversal_case, get_transversal_data, remove_transversal_data — complete definitions in fixed kN/m; read back actual IDs; lane distribution_widths are meters, node order is preserved; deleting requires an explicit target Result identifiers: get_analysis_results defaults to static ST: naming; use case_name_mode=full only with a complete identifier verified from QiaoTong results/UI, never guess prefixes from TV/MV combination codes. Prompt analyze_transversal guides the sequence. Model reinforcement snapshots: set_section_reinforcement, remove_section_reinforcement — use complete UI-exported model definitions and identifiers; model-write permission and one commit; current CSAN queries are not lossless model snapshots Model stirrups: set_check_stirrup_snapshot (original_id required to renumber), set_element_stirrups (None preserves a family, [] clears it; shear rows have 5 entries, torsion rows 3); legacy CSAN tools remain separate Model checking definitions: manage_check_material(set/reset), manage_check_case_definition(set/remove) for concrete/seismic/strengthening; full exported snapshots use native enums/units, run_concrete_check only imports and solves concrete cases SDK availability: listed methods still require desktop routes. qtmodel 2.9.3 rejects historical model-check snapshot and planned-lane add/update routes with API_NOT_OPEN; Qiao-MCP preserves that error without committing. International vehicles: set_international_vehicle(request discriminated by AASHTO/BS/EN1991), get_international_live_load_data(vehicles/cases). Select the matching system explicitly. Full replacements reset omitted scalars to new defaults; axle units are AASHTO N,m and EN1991 kN,m. BS axle units are unspecified by the SDK: preserve verified native exports without scaling. AASHTO r uses percent. Writes commit once and read back the exact name/actual ID. International workflow: create_en1991_vehicle(source standard/user) requires an explicit name; standard factory omits ineffective compatibility options, user factory retains axle/HSLM controls. set_planned_lane is distinct from add_traffic_lane(optimize=True), with model-unit lengths and export/UI verification (no getter); gateway removal requires lane_kind=planned. set_international_live_load_case checks vehicle names/standards, EN1991 duplicate lanes, and full native factors; QiaoTong checks lane/plane references. Explicitly configure operating live_load_cases, then run_analysis and use verified full result identifiers. Checking: setup_concrete_check, add_check_load_combination, add_parametric_reinforcement, run_concrete_check, get_check_data(kind=stress|materials|stirrups|reinforcement|*_setting|...), configure_check_analysis(kind=crack_width|limit_state|normal_stress|...), add_check_stirrup, manage_check_stirrup, assign_element_stirrup, update_vertical_steel_tendon, manage_check_case_file Modify: update_node, update_node_id, renumber_nodes, move_nodes, merge_nodes, remove_nodes, update_element, update_element_id, renumber_elements, revert_local_orientation, remove_elements B1 queries: query_model_data(request={kind: nodes|elements|boundaries|loads|node_local_axes|section_summaries, ...}) — typed server-side filters/pages; get_model_data adds *_summaries, material_detail, load_case_detail, load_combination_detail, element_section and spans Edit readiness: get_model_edit_readiness — read-only diagnostics even when model operations are blocked; never automatically prepare edits, switch stages or delete results View: set_view_angle, save_model_screenshot Gateway: list_qtmodel_api, call_qtmodel_api — 长尾 API 先检索真实签名再调用 State: get_model_status — 在建模或修改前确认模型是否打开、当前处于前/后处理或求解阶段、是否为基本阶段以及当前允许的操作

Choosing Similar Tools

Section properties: calc_section_property evaluates supplied geometry; get_model_data(kind=section_property, sec_id=...) reads a stored section; calculate_section_property rewrites properties for all existing sections. Group members: prefer add_to_structure_group for nodes/elements; add_elements_to_group is its element-only convenience tool. remove_from_structure_group removes memberships; remove_structure_group removes the group. Node edits: update_node sets absolute values and reads current coordinates when any component is omitted; update_node_id changes only one ID without that read; move_nodes adds relative offsets on each call. Renumbering requires both equal-length, unique ID lists for a local mapping; only omitting BOTH lists renumbers the entire model. A single omitted list or a blank selection is rejected. Stage views: switch_display_stage selects the modeling view by stage name; change_construct_stage selects the results view by integer stage index. Neither starts analysis. Element edits: update_element reads the unique target to fill omitted properties; missing applicable fields prevent writing. SDK query objects may themselves fill absent backend fields with defaults, so use targeted updates if the original record cannot be verified. Its node_i/node_j must be supplied together. update_element_id/material/section/beta/nodes target one property without rebuilding the record; material/section/beta accept batches. Reconnect plates through mdb.update_element_node with the complete node list. Tendons: get_tendon_info reads saved definitions; get_tendon_loss_results requires solved, activated construction-stage data; get_tendon_position_result reads discretized global coordinates with bridge-dependent pre-solve availability. Temperature: add_system_temperature calls the selected-element temperature API (SDK says final temperature, no automatic ΔT conversion); add_gradient_temperature uses a linear difference; add_beam_section_temperature uses code parameters; add_custom_temperature uses [top/bottom reference, height, temperature] rows with orientation 1=local Z and 2=local Y. Cable and tendon loads: add_initial_tension_load controls axial-force input; add_cable_length_load controls unstressed-length input; apply_prestress targets named tendons. These calls use native values; verify units in the relevant bridge definition, without inferring them from similarly named APIs. Plate loads: add_plate_element_load acts directly on selected plates; add_distribute_plane_load places a previously defined plane-load pattern. Omitting plate_ids from the latter uses all plates; it does not create the pattern.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
inspect_bridgeA

Diagnose the QiaoTong connection, active model state and edit readiness before choosing an engineering operation (只读检查连接、模型状态与编辑条件).

Start with check_qiaotong_connection; get_model_status reports the active phase and allowed operations, while get_model_edit_readiness explains why an edit is blocked. These are diagnostics, not requests to open a model, clear results, prepare edits or switch stages. Use query_model for engineering records and manage_model_files to open/save a project.

Supply request.operation only; these diagnostic operations have no arguments. They return structured state and suggested next actions, including an unavailable connection as data. A successful diagnostic call does not itself mean the bridge is connected or editable. Read connected/status and capability fields before proceeding; the state can change between this check and a later command.

manage_model_filesA

Open, save or initialize the active bridge project (打开、保存或初始化模型).

Choose save_model_file to persist current work, open_model_file to replace the active project with a saved one, or initialize_model to clear it for a new model. Use edit_geometry for entity edits and manage_checks for separate concrete-checking files. Inspect connection/readiness first.

request.operation selects the matching fields. File paths are interpreted by the QiaoTong host, which may be a remote Windows machine, not by the MCP client's local filesystem. initialize_model requires confirm=true; open can discard unsaved work and save can overwrite an existing file. No automatic backup or rollback is provided. Save important work first and verify the active model after opening or initializing. Returns a completion message, without model contents or analysis results.

query_modelA

Read saved model definitions, locate entities or inspect model geometry without changing it (只读查询模型定义、实体与几何).

get_model_info counts entities; get_model_data reads records by kind; query_model_data uses typed server filters/pages; find_entities locates IDs by geometry or attributes. list_group_members reads memberships. Named tendon, transversal and international getters read definitions. calc_section_property evaluates supplied candidate geometry without storing a section; validate_model checks connectivity and definition consistency, not structural adequacy. Use inspect_bridge for connection and permission diagnostics, query_results for solved responses, and manage_checks for the current concrete-checking context.

request.operation selects one schema branch. For query_model_data, its own typed request remains nested, e.g. operation="query_model_data", request={"kind":"nodes","node_ids":[1,2]}. IDs and names refer to the current model. List pagination belongs to the selected operation: generic getters slice locally, native queries page on the bridge. Preserve selectors between pages and inspect truncation metadata. These calls neither solve nor make the model editable; empty data is not proof of a missing entity when a filter or unavailable backend is involved.

edit_geometryA

Create, edit, renumber, merge or remove model nodes and elements, including standard straight-girder workflows (编辑节点、单元与标准直线梁布置).

Choose explicit coordinate rows or evenly spaced nodes, one frame or a node chain, and native element rows for plates/mixed batches. Targeted update_element_* operations change one property; update_element edits a record. update_node sets absolute coordinates, move_nodes adds offsets, and renumbering changes IDs. Simple/continuous bridge workflows create geometry and supports with their documented bearing assumptions. Use edit_properties to define materials/sections, edit_boundaries for other supports, and view_model to change only the display.

Supply request.operation and that branch's fields. Referenced materials, sections and nodes must exist; plate thickness is distinct from a frame section. Explicit IDs can be reassigned or reused by merging, so read query_model before constructing dependent connectivity. Renumbering requires both paired lists, or neither for a global renumber; deletion of all entities requires the operation's explicit confirmation.

Writes require an editable model and can invalidate solved data. Batch and workflow calls are not transactions: earlier writes can remain after failure. Inspect actual IDs/connectivity before retrying; a confirmation is not always a readback. Solving is a separate analyze_model operation.

edit_propertiesA

Create or modify the shared material, section and thickness definitions used by structural elements (编辑单元共用的材料、截面和板厚定义).

Choose request.operation by how the property is specified:

  • create_material and time/creep/shrinkage operations define material data.

  • create_section uses a parameterized shape; create_polygon_section uses closed loops/holes; create_line_width_section uses thin-wall segments; create_section_from_properties uses supplied engineering properties.

  • create_tapered_section references two existing end-section IDs; add_tapper_section_group sets variation along selected frame elements.

  • add_thickness supplies a plate thickness definition, not a frame section.

Use edit_geometry to assign an existing definition to elements; edit_prestress defines tendon properties. query_model reads saved values or trial-calculates candidate geometry without storing it. The selected branch determines shape fields and units: a thickness ID and a section ID occupy different namespaces even if their integers match.

update_section_property writes one full property vector at the selected end; calculate_section_property recalculates and stores properties for ALL existing sections. Do not use the latter as a readback of a manual override. remove_section deletes an explicit selection, while remove_unused_sections lets the bridge identify unreferenced definitions. Check element references before overwriting or removing shared data.

Writes refresh the model and return status/message confirmations. Requested IDs are not a guaranteed allocation result: read saved IDs and values through query_model before assigning them. There is no automatic backup, rollback or solve, and a definition change can affect many existing elements. Inspect an uncertain write before repeating it.

edit_boundariesA

Edit mechanical boundary conditions on existing nodes and frame elements (编辑已有节点和杆系单元的力学边界条件).

Use this domain for restraint or connection behavior. Choose request.operation by the physical relationship:

  • Node to ground: set_support for fixed/free DOFs; add_elastic_support for finite stiffness or one-way contact.

  • Node to node: add_elastic_link for a two-node connection; add_master_slave_link for one master and multiple coupled slaves.

  • Frame end: add_beam_constraint for I/J-end releases or end springs.

  • Weighted DOF relation: add_constraint_equation; remove_boundary removes a selected family using its node, element, name or boundary selector.

For group creation or stage activation use edit_construction; for actual node connectivity use edit_geometry. Resolve existing IDs with query_model. The same boolean has different mechanical meanings: True fixes a DOF in set_support, couples it in add_master_slave_link, and RELEASES it in add_beam_constraint. Use the selected branch's DOF order and stiffness units. For support extras, supplied extra_parameters enables them by default; extra_enabled=False clears them, while omitting both preserves the setting.

Writes can overwrite supports/releases or remove constraints and change stability. There is no backup, undo or automatic solve. The response is a confirmation, not a verified saved definition. Read boundaries back and check local axes before analyze_model; inspect an uncertain write before retrying to avoid duplicating a link or removing the wrong constraint.

edit_constructionA

Manage structure/boundary/load groups and construction or operation-stage schedules, including activation and deactivation (管理分组与阶段激活、钝化).

Group operations create/rename/remove groups or change memberships; add_to_structure_group accepts nodes and elements, and add_elements_to_group is its element-only compatibility form. add_construction_stage creates a stage; update_construction_stage edits its activation/deactivation lists. delete_structures/delete_boundaries/delete_loads deactivate groups in that stage without deleting their definitions. remove_construction_stage removes stages; merge_operation_stage builds the operation stage. set_self_weight_stage assigns self-weight timing and configure_operation_stage selects case families. Use edit_loads for physical loads and view_model for stage display only.

Select request.operation and its fields. Group names are exact references in three separate namespaces; referenced definitions must already exist. A missing optional list and an explicit empty list have different effects. configure_operation_stage requires all four case-family lists; [] disables that family. Removing a group does not remove its model entities; removing a stage and deactivating a group are separate operations. Writes refresh the model, with no solve or automatic schedule rollback. Read groups/stages through query_model before and after changing an existing schedule.

edit_loadsA

Define static load cases/combinations and apply physical loads to existing nodes or elements (定义静力工况组合,向已有节点或单元施加载荷).

Select request.operation for the target and load law:

  • create_load_case creates the case referenced by later assignments; add_load_combine defines combinations of existing case results.

  • apply_nodal_force targets nodes; apply_beam_distributed_load targets frames; add_plate_element_load targets plates. add_distribute_plane_load places a previously defined pattern, created natively via access_backend.

  • Temperature choices are final uniform temperature, linear difference, code-based section gradient or explicit custom layer rows.

  • Cable initial-tension, unstressed-length and support-settlement loads are separate physical inputs with their own native conventions.

Use edit_prestress for named tendon loads and edit_traffic for vehicle/lane cases. Group definitions, self-weight timing and stage activation belong to edit_construction. case_name selects the load case; group_name selects its activation group, so matching strings do not make them the same object. A static "活载" category does not create a moving-load case.

Combination rows are [case_type, case_name, factor]: ["ST","Dead",1.2] references a static case; combine_type=1 adds effects and 3 forms an envelope. Replacing a combination writes its complete component list; None/[] supplies an empty definition. For forces and temperatures, use the selected operation's directions, row layout and units without inferring a conversion from a sibling.

Writes refresh the model and return confirmations, without solving or activating a stage. They can overwrite definitions or accumulate loads; there is no rollback of earlier calls. Query affected loads/cases before retrying an uncertain write, then explicitly configure stages and solve.

analyze_modelA

Configure and run structural analysis, including masses, response spectra, time-history functions/cases and buckling settings (配置并执行结构分析).

configure_analysis sets construction/creep/modal solver switches; update_bulking_setting sets basic buckling controls. Mass and dynamic function/case operations define solver inputs. set_gravity writes the project gravity setting. These configuration operations do not solve: choose run_analysis explicitly after model, loads and stages are ready. Use query_results for solved responses and manage_checks for concrete code verification, which is a separate computation.

request.operation selects its own fields and units. Spectrum/time-history functions and cases must be linked through the appropriate backend settings; use access_backend for options absent from a dedicated operation. Configuration defaults can overwrite prior settings: read them first when preserving an existing setup. run_analysis reports periodic progress while the solver runs, and only a successful terminal state is completion. Its read_timeout limits waiting, not the backend computation; timeout or connection loss does not cancel the solve. Check inspect_bridge before retrying. Neither a completed solve nor a configuration confirmation establishes structural safety or a passing code check.

edit_prestressA

Define named tendon paths and apply their prestressing loads to the model (定义具名钢束线形并施加对应预应力荷载).

Choose one request.operation at each step:

  • create_tendon_property defines mechanical and loss parameters.

  • create_tendon_2d places a planar profile; add_tendon_3d places a spatial path. Both reference an existing property by its exact name.

  • assign_tendon_elements matches tendons to model elements.

  • apply_prestress targets existing tendon names in an existing load case.

Use edit_loads for cable-element initial-force/length loads, manage_checks for vertical-tendon checking parameters, query_model for saved definitions and query_results for discretized geometry or solved losses. A tendon property, its geometry and its applied load are three separate definitions.

For create_tendon_2d, position_type changes point_insert from coordinates to [end, direction, element_id] track positioning; its num counts tendons, not control points. Preserve the intended point order and positioning fields when replacing a path. apply_prestress accepts one name or a list; tension_type selects start, end or both ends. Its force is forwarded without conversion: match units to a verified QiaoTong prestress export.

Reusing a tendon name can replace its complete geometry; load assignment is not a promise that repeating the call is harmless. Writes refresh the model and return requested names/load summaries, not verified coordinates or effective prestress. No backup, rollback or analysis is performed. Read back geometry and assignments before retrying an uncertain write, then activate the load through edit_construction and run analyze_model before requesting loss/effective-stress results.

edit_trafficA

Configure the live-load system and define moving, transversal or international vehicles, lanes and cases (配置活载体系及车辆车道工况).

Select the matching system explicitly. Traditional moving-load setup uses node tandem, influence plane, lane, vehicle and create_live_load_case. set_transversal_vehicle/lane/case define the transverse family; set_international_vehicle, create_en1991_vehicle, set_planned_lane and set_international_live_load_case handle AASHTO/BS/EN1991 definitions. remove_transversal_data removes an explicit transverse target. Use edit_loads for static loads, query_model for saved definitions, edit_construction to include cases in the operation stage and query_results for solved envelopes.

request.operation selects the family's exact schema. Operations with a typed request keep that request nested. Names/IDs refer to existing matching definitions; unit conventions differ between standards and must follow the selected schema rather than a blanket conversion. Full-definition updates reset omitted scalar fields; preserve verified exported values when retaining settings. Switching systems clears old definitions only with explicit clear_existing=true. Writes refresh the model without analysis; API availability also depends on the desktop build. Read back actual IDs/names before case activation and solving.

manage_checksA

Set up, edit, execute and inspect code-checking data, with distinct model snapshots and current concrete-checking context (管理模型检算定义及当前检算窗口).

Model snapshot operations manage check materials/cases, reinforcement and stirrups using complete native definitions. setup_concrete_check imports an existing concrete case; check-context operations configure combinations, reinforcement, stirrups and analysis options, and manage_check_case_file opens/saves separate check files. run_concrete_check imports the named case and executes verification. get_check_data reads context definitions, settings or computed checking results. Use edit_properties for structural materials/sections and analyze_model for the structural solve.

request.operation selects the namespace, units and replacement behavior. Snapshot inputs preserve native exported units/enums; convenience length fields can use meters with documented internal conversions. A context read is not a lossless model snapshot. Full replacements require carrying forward retained values, and explicit empty assignment lists can clear data. Desktop capabilities are checked; unavailable routes fail without a successful commit. Save important data before destructive updates. Verification timeout does not cancel background computation; inspect state before retrying. Completion means the calculation finished, not that the structure passed: read and interpret the engineering results.

query_resultsA

Retrieve numerical structural responses from the bridge's result data (从桥通结果数据读取结构数值响应).

Use after analyze_model has completed the relevant solve. Choose request.operation for the result family:

  • get_analysis_results: displacement/reaction uses node IDs; force/stress uses element IDs. stage_id=-1 is operation, 0 is the stage envelope, and a positive value selects one construction stage.

  • get_special_results: use kind plus mode for modal output, or the documented node/link/element selector for concurrent and special results.

  • get_live_load_results: request one maximum or minimum envelope extreme; get_tendon_loss_results reads losses for a named, activated stage tendon.

  • get_tendon_position_result/get_tendon_length_result: discretized tendon geometry; pre-solve availability depends on the bridge.

Example: request={"operation":"get_analysis_results","result_type":"force", "ids":[10,11],"stage_id":-1,"case_name":"Dead"} selects static operation results for elements 10 and 11. Full case identifiers must come from QiaoTong results/UI; never derive TV:/MV: prefixes from combination codes. Use query_model for saved definitions, manage_checks for code-check results and view_model for plots. Envelopes do not represent simultaneous loads.

Returns status/message with formatted numerical data. For paged list operations, follow the next-offset hint with unchanged selectors; slicing occurs locally after backend retrieval. Tendon and live-load operations have no pagination fields. These calls do not solve, refresh or certify result freshness. An empty response can indicate an absent case, inactive tendon or unavailable results; verify context before interpreting it as zero. Multiple calls need a stable solved model for comparison.

view_modelA

Control the desktop view and capture PNG images of the model or existing analysis results (控制桌面视图并截取模型或已有结果图像).

Choose request.operation for the presentation task:

  • set_view_angle, set_render, display_ids, activate_structure and reset_display control camera, shading, labels and visible entities.

  • switch_display_stage selects a modeling stage by name; change_construct_stage selects a results stage by integer index.

  • save_model_screenshot captures the view; plot_analysis_result draws a selected solved component. Use query_results for numerical values.

  • set_unit changes display units; tool input units remain as documented.

Defaults are assignments, not toggles: set_render(flag=true) requests solid shading; display_ids applies BOTH flags and an omitted flag hides that label family. set_unit sends both force and length units each time. A screenshot defaults to the iso camera; view_angle="current" preserves the camera. If applying a preset fails, the current view is captured and the reply is a saved-path warning even when return_image=true.

A connected desktop view is required. Display operations return a confirmation and change presentation only; edit_geometry and edit_construction change entities and schedules. The two image operations write PNG bytes to file_path on the MCP host and overwrite that path. Use a distinct path to retain an earlier capture. return_image=true normally returns MCP Image content; false returns a saved-path message. No solve runs and no previous view is restored automatically. Confirm the selected stage/component before treating a plot as evidence.

access_backendA

Discover installed qtmodel methods and call a native API when a dedicated domain operation does not expose the required feature (检索并调用长尾原生接口).

Start with list_qtmodel_api for the mdb/odb/cdb object and a method pattern; then call_qtmodel_api with the verified method name and keyword arguments. Prefer the relevant domain operation for supported tasks because it supplies typed arguments and engineering guidance. Use inspect_bridge for connection diagnostics; method discovery alone does not establish desktop route availability or permission to mutate a model.

request.operation distinguishes inspection from execution. kwargs are native backend parameters with method-specific units; do not translate field names, invent signatures or infer units from another endpoint. Calls retain model-state guards and gateway management rules, but the selected method may overwrite/delete data or perform external effects. Review its discovered contract and current state before execution. The result is the normalized native response; unsupported routes and failed calls are errors. A lost write reply has an unknown outcome: inspect the affected objects before any retry, since no automatic rollback is offered.

Prompts

Interactive templates invoked by user choice

NameDescription
analyze_transversalGuide a transversal definition, solve and verified result-query workflow. Args: case_name: Intended transversal case name (横向工况名称).
design_simple_beam Guided workflow for designing a simple beam bridge (简支梁桥设计流程). Args: span_length: Span length in meters (跨径,单位m) beam_height: Beam height in meters (梁高,单位m) material: Concrete grade (混凝土等级)
design_continuous_beam Guided workflow for designing a continuous beam bridge (连续梁桥设计流程). Args: spans: Span arrangement, e.g. '30+50+30' in meters (跨径布置) material: Concrete grade (混凝土等级)
check_structure Guided workflow for structural code checking (结构检算工作流). Args: check_standard: Design code standard (检算规范), e.g. 'JTG3362-2018' (公路), 'TB10092-2017' (铁路)
construction_stage_analysis Guided workflow for construction stage analysis (施工阶段分析工作流).

Resources

Contextual data attached and managed by the client

NameDescription
model_summary Current bridge model summary (当前桥梁模型概要). Provides node/element/material/section counts and other statistics.
model_materials List of all materials in the current model (当前模型所有材料列表).
model_sections List of all section IDs in the current model (当前模型所有截面编号列表).
model_load_cases List of all load case names in the current model (当前模型所有荷载工况名).
model_stages List of all construction stage names (所有施工阶段名称).
model_structure_groups List of all structure group names (所有结构组名称).
model_boundaries Boundary condition data in the current model (当前模型边界条件信息). Includes general supports, elastic links, elastic supports, master-slave links, and beam constraints.

TDQS

A4.5/5.0

Scored across 15 tools

Disambiguation4/5

The 15 tools map to distinct engineering domains (geometry, properties, boundaries, loads, prestress, traffic, construction, analysis, results, checks, files, view), and descriptions explicitly cross-reference siblings to guide selection. Minor overlap remains between edit_loads and edit_traffic (both load cases) and between query_model and query_results, but the descriptions clearly separate static vs moving loads and definitions vs solved results.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern (edit_geometry, edit_loads, query_model, query_results, manage_checks, analyze_model, view_model, access_backend). The verb prefixes (edit_, query_, manage_, inspect_, analyze_, view_, access_) are used consistently across the set.

Tool Count5/5

With 15 tools for a complex bridge-analysis domain, each tool covers a broad but distinct engineering area (e.g., one tool each for geometry, loads, prestress, traffic, checks). No tool appears redundant, and the count stays within a well-scoped 3-15 range for the domain complexity.

Completeness4/5

The surface covers the full structural lifecycle: model file management, geometry, properties, boundaries, static loads, prestress, moving loads, construction stages, analysis, results retrieval, code checks, and viewing. Minor gaps exist (e.g., no explicit load-case deletion or reporting tool), but access_backend is provided to reach the native long-tail API, making the set practically complete.

Maintenance

ActivityActive
ResponsivenessNo issues