{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:25:08.488Z","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp","markdownUrl":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp.md","server":{"slug":"moha2005269-etabs-mcp","name":"ETABS MCP","registryName":"io.github.Moha2005269/etabs-mcp","description":"Agentic MCP server for CSI ETABS v22+: model, load, analyse, design and inspect structures.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"etabs-mcp","type":"pypi","identifier":"etabs-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp","version":"0.3.2","transport":"stdio","scoredAt":"2026-11-05T05:23:43.295Z"},"score":{"total":60,"tier":"medium","status":"scored","weekDelta":-20,"history":[{"date":"2026-11-05","total":60},{"date":"2026-11-04","total":80},{"date":"2026-11-03","total":80},{"date":"2026-11-02","total":80},{"date":"2026-11-01","total":80},{"date":"2026-10-31","total":80},{"date":"2026-10-30","total":80},{"date":"2026-10-29","total":80},{"date":"2026-10-28","total":65},{"date":"2026-10-27","total":65},{"date":"2026-10-26","total":65},{"date":"2026-10-25","total":65},{"date":"2026-10-24","total":65},{"date":"2026-10-23","total":65},{"date":"2026-10-22","total":65},{"date":"2026-10-21","total":65},{"date":"2026-10-20","total":65},{"date":"2026-10-19","total":65},{"date":"2026-10-18","total":65}]},"categories":[{"name":"Supply Chain Security","score":50,"verdict":"unverified","reasons":["Malware scan not yet available for this package.","No known CVEs affecting this package version or its production dependencies.","Runs hatchling.build at install time, a recognised build step with no custom scripting around it.","0 of 35 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"vendor_no_verdict"}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"hatchling.build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"35","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":71,"verdict":"fail","reasons":["Repository check failed: the declared repository URL returned HTTP 404.","Cryptographically verified build provenance (signed, bound to Moha2005269/etabs-mcp).","Clear OSI-approved license (Apache-2.0).","Actively maintained (last published 18 days ago).","Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"codes":[{"code":"provenance.repo_http_error","args":{"status":"404"}},{"code":"provenance.verified","args":{"repo":"Moha2005269/etabs-mcp"}},{"code":"license.osi","args":{"spdx":"Apache-2.0"}},{"code":"maintenance.recent","args":{"age_days":"18"}},{"code":"disclosure.repo_inconclusive","args":{"reason":"repo_not_visible"}}]},{"name":"Schema Quality & AI Usability","score":77,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 7975 tokens (~109/item across 73 items; 71 tools + 2 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"109","items":"73","tools":"71","tokens":"7975","resources":"2"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":87,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","55% of tool parameters carry a description.","Structured output schemas are declared (97% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"55"}},{"code":"toolquality.output_present","args":{"pct":"97"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.","An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_declared","args":{"pct":"100","annotated":"1","destructive":"1"}},{"code":"toolsafety.manipulation_clean","args":{"units":"73","judged":"73"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["Malware scan not yet available for this package.","Security-disclosure policy not yet verified: we couldn't inspect the source repository.","Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"etabs-mcp","type":"pypi","identifier":"etabs-mcp","withdrawn":false,"score":60,"current":true,"url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp","markdownUrl":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"etabs-mcp"},{"label":"Version","value":"0.3.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"etabs_list_installations","title":null,"description":"List ETABS installations on this machine (v22+ are supported) and ETABS instances that are running now.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":34},{"name":"etabs_connect","title":null,"description":"Connect to ETABS. Other tools connect automatically with mode 'auto', so call this only to choose a\nspecific instance or version, to drive several ETABS instances, or to recover after ETABS was closed.\nLaunching ETABS takes 10-30 s.","inputs":[{"name":"install_dir","type":null,"required":false,"description":"ETABS program folder, overrides 'version'."},{"name":"instance","type":"string","required":false,"description":"Name for this connection. Use a new name (e.g. 'b') to drive a second ETABS alongside the first; it becomes the active instance."},{"name":"mode","type":"string","required":false,"description":"attach = use a running ETABS; start = launch a new one; auto = attach if one is running, else start."},{"name":"pid","type":null,"required":false,"description":"Attach to this ETABS process id (see etabs_list_installations)."},{"name":"reconnect","type":"boolean","required":false,"description":"Drop the current connection first."},{"name":"version","type":null,"required":false,"description":"ETABS major version to use, e.g. 22 or 23. Default: the running one, else the newest installed."},{"name":"visible","type":"boolean","required":false,"description":"Show the ETABS window when launching it."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":223},{"name":"etabs_instances","title":null,"description":"List the ETABS instances this server drives, switch which one every other tool acts on, or remove one.\nTypical use: compare two design options side by side, or copy data from one model into another.","inputs":[{"name":"action","type":"string","required":false,"description":null},{"name":"close_etabs","type":"boolean","required":false,"description":"'remove' only: also exit that ETABS (needs confirm)."},{"name":"confirm","type":"boolean","required":false,"description":null},{"name":"name","type":null,"required":false,"description":"Instance for 'use' or 'remove'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":100},{"name":"etabs_status","title":null,"description":"Connection and model status without connecting: whether ETABS is attached, its version, the open\nmodel file, present units, and whether the model is locked (has analysis results).","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":45},{"name":"etabs_disconnect","title":null,"description":"Release the ETABS connection. ETABS keeps running unless close_etabs is true.","inputs":[{"name":"close_etabs","type":"boolean","required":false,"description":"Also exit the ETABS application."},{"name":"confirm","type":"boolean","required":false,"description":"Required when closing ETABS without saving."},{"name":"save","type":"boolean","required":false,"description":"Save the model before exiting (only with close_etabs)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":73},{"name":"etabs_model_overview","title":null,"description":"One-call summary of the open model: file, version, units, lock state, object counts, stories,\nload patterns/cases/combinations, materials, sections and groups. Start every task with this.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":52},{"name":"etabs_new_model","title":null,"description":"Start a new model (replaces the open one). Lengths are in the chosen units.","inputs":[{"name":"bottom_story_height","type":null,"required":false,"description":"Number in the new model's units or e.g. '6 m'."},{"name":"confirm","type":"boolean","required":false,"description":"Required when the current model has objects: it is replaced without saving."},{"name":"grid_lines_x","type":"integer","required":false,"description":null},{"name":"grid_lines_y","type":"integer","required":false,"description":null},{"name":"number_of_stories","type":"integer","required":false,"description":null},{"name":"spacing_x","type":null,"required":false,"description":"Number in the new model's units or e.g. '6 m'."},{"name":"spacing_y","type":null,"required":false,"description":"Number in the new model's units or e.g. '6 m'."},{"name":"template","type":"string","required":false,"description":"blank = empty model; grid_only = grids + stories; steel_deck = grids, stories and a steel floor system."},{"name":"typical_story_height","type":null,"required":false,"description":"Number in the new model's units or e.g. '6 m'."},{"name":"units","type":"string","required":false,"description":"Units for the new model."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":202},{"name":"etabs_open_model","title":null,"description":"Open an existing ETABS model file (.EDB, or an importable .e2k text file). Replaces the open model.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Required when the current model has objects: it is closed without saving."},{"name":"path","type":"string","required":true,"description":"Full path of an .EDB (or importable .e2k/.$et) file."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":85},{"name":"etabs_save_model","title":null,"description":"Save the model. A new (untitled) model needs a path. Analysis also requires a saved model.","inputs":[{"name":"path","type":null,"required":false,"description":"Save as this .EDB path. Omit to save to the current file."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":53},{"name":"etabs_set_units","title":null,"description":"Set the present units. All tool inputs and outputs use the present units.","inputs":[{"name":"units","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":32},{"name":"etabs_get_stories","title":null,"description":"Story table, top story first: name, elevation, height, master/similar settings.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":30},{"name":"etabs_set_stories","title":null,"description":"Redefine the story table. ETABS only accepts this on a model without objects on the affected stories.","inputs":[{"name":"base_elevation","type":null,"required":false,"description":null},{"name":"stories_bottom_up","type":"array","required":true,"description":"Stories from the lowest to the highest."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":56},{"name":"etabs_add_frames","title":null,"description":"Draw beams, columns and braces between two points (like Draw > Frame). Joints are created or merged\nautomatically. Returns the ETABS names of the new frames, in input order; failures are listed per item.","inputs":[{"name":"csys","type":"string","required":false,"description":null},{"name":"frames","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":70},{"name":"etabs_add_areas","title":null,"description":"Draw floors, slabs and walls from corner points (like Draw > Floor/Wall). Returns new area names.","inputs":[{"name":"areas","type":"array","required":true,"description":null},{"name":"csys","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":48},{"name":"etabs_add_points","title":null,"description":"Add joints at coordinates (existing joints at the same location are reused).","inputs":[{"name":"csys","type":"string","required":false,"description":null},{"name":"points","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":39},{"name":"etabs_list_objects","title":null,"description":"List frames, areas or points with their geometry (in present units), sections and stories.\nETABS 'name' is the unique name used by every API call; 'label' is what the GUI shows per story.","inputs":[{"name":"include_labels","type":"boolean","required":false,"description":"Add the label and story of each object (one extra call per object)."},{"name":"kind","type":"string","required":true,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"offset","type":"integer","required":false,"description":null},{"name":"story","type":null,"required":false,"description":"Only objects on this story."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":107},{"name":"etabs_delete_objects","title":null,"description":"Delete frames, areas or points chosen by name, by group, or the current selection.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Deleting cannot be undone through the API. Ask the user first."},{"name":"group","type":null,"required":false,"description":null},{"name":"kind","type":"string","required":true,"description":null},{"name":"names","type":null,"required":false,"description":null},{"name":"selected","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":72},{"name":"etabs_set_restraints","title":null,"description":"Assign supports (Assign > Joint > Restraints): fixed, pinned, roller or custom DOFs, to joints chosen by\nname, by elevation, by group, or the current selection.","inputs":[{"name":"at_elevation","type":null,"required":false,"description":"Apply to every joint at this Z, e.g. 0 or '0 m'."},{"name":"dofs","type":null,"required":false,"description":"[UX, UY, UZ, RX, RY, RZ] for 'custom'."},{"name":"group","type":null,"required":false,"description":null},{"name":"points","type":null,"required":false,"description":"Joint names."},{"name":"restraint","type":"string","required":false,"description":"Support type; 'custom' uses 'dofs'."},{"name":"selected","type":"boolean","required":false,"description":null},{"name":"tolerance","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":143},{"name":"etabs_assign_section","title":null,"description":"Assign a frame section or an area property (Assign > Frame > Section / Shell > Property).","inputs":[{"name":"group","type":null,"required":false,"description":null},{"name":"kind","type":"string","required":true,"description":null},{"name":"names","type":null,"required":false,"description":null},{"name":"section","type":"string","required":true,"description":"Frame section or area (slab/deck/wall) property name."},{"name":"selected","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":74},{"name":"etabs_select","title":null,"description":"Change or read the selection, like clicking in the ETABS window. Many tools accept selected=true to act\non it. Returns the selected objects grouped by type.","inputs":[{"name":"action","type":"string","required":false,"description":"'get' only reports the selection; 'objects' selects 'names' of 'kind'."},{"name":"deselect","type":"boolean","required":false,"description":null},{"name":"group","type":null,"required":false,"description":null},{"name":"kind","type":null,"required":false,"description":null},{"name":"names","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":90},{"name":"etabs_generate_building","title":null,"description":"Build a complete regular building in one call: grids, stories, materials, sections, columns, beams,\nbraces or shear walls (with pier labels), slabs, fixed supports, a rigid diaphragm, SDL/LL patterns with\nslab loads, and default design combinations. Follow with lateral loads (etabs_define_seismic_load ...),\nthen analysis.","inputs":[{"name":"bays_x","type":"array","required":true,"description":"Bay widths along X, e.g. ['8 m', '8 m', '6 m']."},{"name":"bays_y","type":"array","required":true,"description":"Bay widths along Y."},{"name":"beam_section","type":null,"required":false,"description":"Steel: AISC16 shape (default W18X35)."},{"name":"beam_size","type":"array","required":false,"description":"Concrete beam [depth, width]."},{"name":"brace_section","type":null,"required":false,"description":"Steel braced: AISC16 shape (default W10X33)."},{"name":"column_section","type":null,"required":false,"description":"Steel: AISC16 shape (default W14X90). Concrete: ignored, use column_size."},{"name":"column_size","type":"array","required":false,"description":"Concrete column [depth, width]."},{"name":"confirm","type":"boolean","required":false,"description":"Required when the open model has objects: it is replaced."},{"name":"diaphragm","type":"boolean","required":false,"description":null},{"name":"live","type":null,"required":false,"description":"Live area load in present force/length² units."},{"name":"slab_thickness","type":null,"required":false,"description":null},{"name":"story_heights","type":"array","required":true,"description":"Story heights bottom-up, e.g. ['4.5 m', '3.5 m', '3.5 m']."},{"name":"superimposed_dead","type":null,"required":false,"description":"SDL area load in present force/length² units (e.g. 1.5 for kN/m²)."},{"name":"system","type":"string","required":false,"description":"Lateral system. Braces/walls go in the end bays of every perimeter frame line."},{"name":"units","type":"string","required":false,"description":null},{"name":"wall_thickness","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":366},{"name":"etabs_list_properties","title":null,"description":"List materials (with type), frame sections (with shape and dimensions in present units) and area\nproperties (slabs, decks, walls).","inputs":[{"name":"kind","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":46},{"name":"etabs_define_material","title":null,"description":"Define a material, either from the ETABS library (region + standard + grade, the same lists as the\n'Add Material' dialog) or as a custom isotropic material from E, weight and strength.","inputs":[{"name":"elastic_modulus","type":null,"required":false,"description":"Custom material: E (present force/length^2)."},{"name":"fc","type":null,"required":false,"description":"Concrete compressive strength f'c."},{"name":"fu","type":null,"required":false,"description":"Steel/rebar tensile strength (default 1.25 fy)."},{"name":"fy","type":null,"required":false,"description":"Steel/rebar yield strength."},{"name":"grade","type":null,"required":false,"description":"Library material: grade, e.g. 'Grade 50', 'C30/37'."},{"name":"material_type","type":"string","required":true,"description":null},{"name":"name","type":"string","required":true,"description":null},{"name":"poisson_ratio","type":"number","required":false,"description":null},{"name":"region","type":null,"required":false,"description":"Library material: region, e.g. 'United States', 'Europe', 'India'."},{"name":"standard","type":null,"required":false,"description":"Library material: standard, e.g. 'ASTM A992', 'EN 1992-1-1'."},{"name":"thermal_coefficient","type":"number","required":false,"description":null},{"name":"unit_weight","type":null,"required":false,"description":"Weight per unit volume (present units)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":228},{"name":"etabs_define_frame_section","title":null,"description":"Define a frame section: parametric concrete/steel shapes, or a steel shape imported from an ETABS\nsection library. Dimensions are in present length units.","inputs":[{"name":"bottom_flange_thickness","type":null,"required":false,"description":"i_section only; defaults to flange_thickness."},{"name":"bottom_flange_width","type":null,"required":false,"description":"i_section only; defaults to width."},{"name":"depth","type":null,"required":false,"description":"t3: overall depth (rectangle, i_section, tube) or outside diameter (circle, pipe)."},{"name":"flange_thickness","type":null,"required":false,"description":null},{"name":"library_file","type":null,"required":false,"description":"from_library: section database file, e.g. 'AISC16.xml', 'Euro.xml', 'Indian.xml'."},{"name":"library_section","type":null,"required":false,"description":"from_library: section name in that file, e.g. 'W14X90'."},{"name":"material","type":"string","required":true,"description":"Material name (see etabs_list_properties)."},{"name":"name","type":"string","required":true,"description":null},{"name":"shape","type":"string","required":true,"description":null},{"name":"web_thickness","type":null,"required":false,"description":"Web thickness (i_section, tube) or wall thickness (pipe)."},{"name":"width","type":null,"required":false,"description":"t2: width (rectangle, tube) or top flange width (i_section)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":230},{"name":"etabs_define_area_section","title":null,"description":"Define a slab or wall property (Define > Section Properties > Slab/Wall Sections).","inputs":[{"name":"kind","type":"string","required":true,"description":null},{"name":"material","type":"string","required":true,"description":null},{"name":"name","type":"string","required":true,"description":null},{"name":"shell_type","type":"string","required":false,"description":null},{"name":"slab_type","type":"string","required":false,"description":null},{"name":"thickness","type":null,"required":true,"description":"Number in present units or e.g. '200 mm'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":82},{"name":"etabs_define_load_patterns","title":null,"description":"Define load patterns (Define > Load Patterns), each optionally with its linear static load case.","inputs":[{"name":"patterns","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":36},{"name":"etabs_assign_loads","title":null,"description":"Assign loads (Assign > Frame/Shell/Joint Loads): distributed or point loads on frames, uniform loads on\nareas, and forces/moments on joints. Values are in present units; 'gravity' acts downward (-Z).","inputs":[{"name":"loads","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":65},{"name":"etabs_define_combinations","title":null,"description":"Define load combinations (Define > Load Combinations) from load cases and other combinations, and/or\ngenerate the default design combinations for the active design codes.","inputs":[{"name":"add_default_design_combos","type":"array","required":false,"description":"Also generate the code default design combinations for these materials."},{"name":"combinations","type":"array","required":false,"description":"Combinations to create."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":74},{"name":"etabs_list_load_definitions","title":null,"description":"Load patterns (with type and self-weight multiplier), load cases (with type) and combinations (with\ntheir cases and scale factors).","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":39},{"name":"etabs_define_seismic_load","title":null,"description":"Define an ASCE 7-16 equivalent-lateral-force seismic load pattern (Define > Load Patterns > Auto\nLateral Load). Creates the Quake pattern and its load case.","inputs":[{"name":"bottom_story","type":null,"required":false,"description":"Default: Base."},{"name":"cd","type":"number","required":false,"description":"Deflection amplification Cd."},{"name":"ct_type","type":"integer","required":false,"description":"Approximate-period Ct/x set (ETABS numbering, 2 = 0.03;0.75 'all other')."},{"name":"directions","type":"array","required":false,"description":"Directions and accidental eccentricity sense."},{"name":"eccentricity","type":"number","required":false,"description":null},{"name":"importance","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":null},{"name":"omega","type":"number","required":false,"description":"Overstrength factor Ω0."},{"name":"period","type":"string","required":false,"description":"Fundamental period source."},{"name":"r","type":"number","required":false,"description":"Response modification coefficient R."},{"name":"s1","type":"number","required":false,"description":"Mapped MCER 1-s acceleration S1 (g)."},{"name":"site_class","type":"string","required":false,"description":null},{"name":"ss","type":"number","required":false,"description":"Mapped MCER short-period acceleration Ss (g)."},{"name":"tl","type":"number","required":false,"description":"Long-period transition TL (s)."},{"name":"top_story","type":null,"required":false,"description":"Default: the top story."},{"name":"user_period","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":247},{"name":"etabs_define_wind_load","title":null,"description":"Define an automatic wind load pattern applied to diaphragms (Define > Load Patterns > Auto Lateral\nLoad > Wind). ASCE 7-16 is fully parameterised; other codes take their table fields via 'fields'.","inputs":[{"name":"angle","type":"number","required":false,"description":"Wind direction angle in degrees (0 = +X, 90 = +Y)."},{"name":"bottom_story","type":null,"required":false,"description":null},{"name":"cases","type":"string","required":false,"description":"ASCE 7 wind load cases."},{"name":"code","type":"string","required":false,"description":"Auto-wind table code suffix, e.g. 'ASCE 7-16', 'ASCE 7-22', 'Eurocode1 2005'. Other codes need 'fields'."},{"name":"exposure","type":"string","required":false,"description":null},{"name":"fields","type":null,"required":false,"description":"Extra/override table fields for the chosen code (see etabs_get_table on 'Load Pattern Definitions - Auto Wind - <code>')."},{"name":"gust_factor","type":"number","required":false,"description":null},{"name":"kd","type":"number","required":false,"description":null},{"name":"kzt","type":"number","required":false,"description":null},{"name":"leeward_cp","type":"number","required":false,"description":null},{"name":"name","type":"string","required":false,"description":null},{"name":"top_story","type":null,"required":false,"description":null},{"name":"wind_speed","type":"number","required":false,"description":"Basic wind speed V (mph for ASCE 7)."},{"name":"windward_cp","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":260},{"name":"etabs_define_response_spectrum","title":null,"description":"Define an ASCE 7-16 response spectrum function and a response-spectrum load case that uses it.","inputs":[{"name":"case_name","type":"string","required":false,"description":null},{"name":"damping","type":"number","required":false,"description":null},{"name":"direction","type":"string","required":false,"description":null},{"name":"eccentricity","type":"number","required":false,"description":null},{"name":"function_name","type":"string","required":false,"description":null},{"name":"importance","type":"number","required":false,"description":null},{"name":"modal_case","type":"string","required":false,"description":null},{"name":"r","type":"number","required":false,"description":null},{"name":"s1","type":"number","required":false,"description":null},{"name":"scale_factor","type":null,"required":false,"description":"Default g·I/R in present units (from importance and r)."},{"name":"site_class","type":"string","required":false,"description":null},{"name":"ss","type":"number","required":false,"description":null},{"name":"tl","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":142},{"name":"etabs_set_mass_source","title":null,"description":"Set the default mass source (Define > Mass Source): element self mass, added mass and load patterns.","inputs":[{"name":"include_added_mass","type":"boolean","required":false,"description":null},{"name":"include_self_weight","type":"boolean","required":false,"description":null},{"name":"loads","type":null,"required":false,"description":"Load patterns that contribute mass, e.g. [{'pattern':'SDL'}, {'pattern':'LL','multiplier':0.25}]."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":81},{"name":"etabs_assign_diaphragm","title":null,"description":"Define a rigid or semi-rigid diaphragm and assign it to the slabs (area objects) on the chosen stories.","inputs":[{"name":"name","type":"string","required":false,"description":null},{"name":"semi_rigid","type":"boolean","required":false,"description":null},{"name":"stories","type":null,"required":false,"description":"Stories to assign (default: all with slabs)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":66},{"name":"etabs_set_modal_case","title":null,"description":"Set how many modes the eigen modal case computes (raise it until mass participation is enough).","inputs":[{"name":"case","type":"string","required":false,"description":null},{"name":"max_modes","type":"integer","required":false,"description":null},{"name":"min_modes","type":"integer","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":52},{"name":"etabs_run_analysis","title":null,"description":"Run the analysis (Analyze > Run Analysis). ETABS needs a saved model, saves it again before running,\nand locks the model afterwards. Large models can take minutes: use background=true to avoid client timeouts.","inputs":[{"name":"background","type":"boolean","required":false,"description":"Return a job id at once and run in the background (for big models or clients with short tool timeouts). Follow with etabs_job_wait / etabs_job_status."},{"name":"cases","type":null,"required":false,"description":"Load cases to run (default: all)."},{"name":"save_as","type":null,"required":false,"description":"Save to this .EDB path first. Required for a never-saved model."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":129},{"name":"etabs_analysis_status","title":null,"description":"Per-case analysis status (not run / finished ...), run flags, and whether the model is locked.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":31},{"name":"etabs_unlock_model","title":null,"description":"Unlock the model so it can be edited after analysis (the padlock button). Deletes analysis results.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Unlocking deletes all analysis and design results. Ask the user first."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":50},{"name":"etabs_get_results","title":null,"description":"Read analysis results the way they appear in ETABS tables: base reactions, story drifts and forces,\njoint displacements/reactions, modal periods and mass ratios, element forces, piers and spandrels.\nFor any other result table use etabs_get_table.","inputs":[{"name":"group","type":"string","required":false,"description":null},{"name":"limit","type":null,"required":false,"description":null},{"name":"load_cases","type":null,"required":false,"description":"Load cases to include. Omit both lists for every case and combination."},{"name":"load_combinations","type":null,"required":false,"description":null},{"name":"offset","type":"integer","required":false,"description":null},{"name":"result","type":"string","required":true,"description":"Which result table to read."},{"name":"where","type":null,"required":false,"description":"Row filter, e.g. {'Story': 'Story2'} or {'OutputCase': 'Dead'}."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":148},{"name":"etabs_run_design","title":null,"description":"Run design (Design > ... > Start Design/Check) with the model's current design codes and preferences.\nNeeds analysis results. Steel and concrete return a member summary, worst first.","inputs":[{"name":"background","type":"boolean","required":false,"description":"Run as a background job (see etabs_job_wait)."},{"name":"kind","type":"string","required":true,"description":"Shear wall design cannot be started through the ETABS API; read its results with etabs_get_table."},{"name":"summary_limit","type":"integer","required":false,"description":"Members to return in the summary, worst first."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":110},{"name":"etabs_job_status","title":null,"description":"Status of a background job (analysis or design): running / done / failed, elapsed time, the tail of the\nETABS analysis log while it runs, and the full result once done. Never blocks.","inputs":[{"name":"job_id","type":null,"required":false,"description":"Job id; omit for the most recent job."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":67},{"name":"etabs_job_wait","title":null,"description":"Wait for a background job to finish, up to timeout_seconds, then report it (same shape as etabs_job_status).\nCall again if it is still running.","inputs":[{"name":"job_id","type":null,"required":false,"description":"Job id; omit for the most recent job."},{"name":"timeout_seconds","type":"number","required":false,"description":"Give up waiting after this long (the job keeps running). Keep it under your client's tool timeout."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":85},{"name":"etabs_get_design_summary","title":null,"description":"Design results per member: steel demand/capacity ratios with governing combo, or concrete required\nreinforcement for beams and columns. Worst members first.","inputs":[{"name":"kind","type":"string","required":true,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"only_failing","type":"boolean","required":false,"description":"Steel: only members with ratio > 1 or errors."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":75},{"name":"etabs_design_codes","title":null,"description":"Read, list or change the design codes (Design > ... > View/Revise Preferences). 'list' returns every code\nthis ETABS version supports for steel, concrete, shear wall, slab and composite design.","inputs":[{"name":"action","type":"string","required":false,"description":null},{"name":"code","type":null,"required":false,"description":"For 'set': e.g. 'AISC 360-16', 'ACI 318-19', 'Eurocode 2-2004'. 'list' shows valid names."},{"name":"kind","type":null,"required":false,"description":"For 'set'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":111},{"name":"etabs_run_shear_wall_design","title":null,"description":"Run shear wall design (Design > Shear Wall Design > Start Design/Check) and return pier and spandrel\nresults. The ETABS API has no call for this, so the server invokes the menu command through Windows UI\nAutomation; ETABS must be visible. Walls must carry pier/spandrel labels (etabs_assign_label).","inputs":[{"name":"limit","type":"integer","required":false,"description":"Pier/spandrel rows to return, worst first."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":100},{"name":"etabs_get_wall_design","title":null,"description":"Shear wall design results: piers (reinforcing ratio, D/C, boundary zones, messages) or spandrels\n(flexural and shear reinforcement), worst first. Run etabs_run_shear_wall_design first.","inputs":[{"name":"kind","type":"string","required":false,"description":null},{"name":"label","type":null,"required":false,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"story","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":81},{"name":"etabs_get_concrete_design","title":null,"description":"Concrete frame design results (after etabs_run_design(kind='concrete')): required longitudinal and shear\nreinforcement for beams, PMM ratios and areas for columns, joint shear and beam/column capacity ratios.\nAreas are in present units.","inputs":[{"name":"element","type":"string","required":false,"description":null},{"name":"envelope","type":"boolean","required":false,"description":"One row per frame (governing station) instead of every station."},{"name":"limit","type":"integer","required":false,"description":null},{"name":"names","type":null,"required":false,"description":"Only these frames."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":104},{"name":"etabs_get_slab_design","title":null,"description":"Concrete slab design results (after etabs_run_design(kind='concrete_slab')): design-strip flexure and\nshear reinforcement, or punching shear checks at columns, worst first.","inputs":[{"name":"limit","type":"integer","required":false,"description":null},{"name":"part","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":64},{"name":"etabs_menu","title":null,"description":"Use ETABS menu commands that have no API, exactly as a person would click them (through Windows UI\nAutomation, no mouse). 'list' browses the menus; 'invoke' runs a command. Commands that open a dialog\nleave it open: check with etabs_screenshot and close it with etabs_dialogs.","inputs":[{"name":"action","type":"string","required":false,"description":null},{"name":"confirm","type":"boolean","required":false,"description":"Required for 'invoke': menu commands can change or delete model data. Ask the user first."},{"name":"path","type":null,"required":false,"description":"Menu path, e.g. ['Design', 'Shear Wall Design'] to list, or ['Analyze', 'Check Model...'] to invoke."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":142},{"name":"etabs_dialogs","title":null,"description":"List or close dialogs ETABS has open. A modal dialog blocks the ETABS API, so close leftovers after\netabs_menu or a design run.","inputs":[{"name":"action","type":"string","required":false,"description":null},{"name":"title","type":null,"required":false,"description":"Close the dialog with this title ('close' with no title closes all)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":67},{"name":"etabs_code_checks","title":null,"description":"Run the standard post-analysis checks in one call: story drift against the allowable, torsional\nirregularity, soft story, weight (mass) irregularity, modal mass participation and response-spectrum base\nshear vs ELF. Each check reports its clause, the governing numbers and pass/fail.","inputs":[{"name":"cases","type":null,"required":false,"description":"Lateral cases/combos to check (default: every Quake, Wind and RS case)."},{"name":"checks","type":null,"required":false,"description":"Default: all."},{"name":"drift_amplification","type":"number","required":false,"description":"Cd/Ie applied to elastic drifts (1.0 for wind or drifts already amplified)."},{"name":"drift_limit","type":"number","required":false,"description":"Allowable story drift ratio Δa/h (ASCE 7-16 Table 12.12-1: 0.020 for most Risk Category I/II buildings)."},{"name":"elf_case","type":null,"required":false,"description":null},{"name":"modal_case","type":"string","required":false,"description":null},{"name":"modal_target","type":"number","required":false,"description":null},{"name":"rs_case","type":null,"required":false,"description":null},{"name":"rs_direction","type":"string","required":false,"description":null},{"name":"rs_target","type":"number","required":false,"description":null},{"name":"soft_story_limits","type":"array","required":false,"description":"[ratio to story above, ratio to average of 3 above]."},{"name":"torsion_limits","type":"array","required":false,"description":null},{"name":"weight_limit","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":257},{"name":"etabs_scale_response_spectrum","title":null,"description":"Scale a response-spectrum case so its base shear reaches the ELF base shear (ASCE 7-16 12.9.1.4),\nthen optionally re-run and verify.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Scaling unlocks the model and deletes results. Ask the user first."},{"name":"direction","type":"string","required":false,"description":null},{"name":"elf_case","type":"string","required":true,"description":null},{"name":"rerun","type":"boolean","required":false,"description":"Re-run the analysis after scaling (the model is unlocked to edit the case)."},{"name":"rs_case","type":"string","required":true,"description":null},{"name":"target","type":"number","required":false,"description":"Fraction of the ELF base shear to reach (ASCE 7-16: 1.0)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":142},{"name":"etabs_list_tables","title":null,"description":"List ETABS database tables (definitions, assignments, analysis and design results), with whether each\nhas data and whether it can be edited. Result tables appear after analysis/design.","inputs":[{"name":"contains","type":null,"required":false,"description":"Case-insensitive filter on the table key, e.g. 'drift', 'frame assign', 'material'."},{"name":"include_empty","type":"boolean","required":false,"description":"Include tables with no data in the current model."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":89},{"name":"etabs_get_table","title":null,"description":"Read any ETABS database table as rows (Display > Show Tables). Values with units are in present units.","inputs":[{"name":"fields","type":null,"required":false,"description":"Only these field keys (default: all)."},{"name":"group","type":"string","required":false,"description":"Only objects in this group ('' = all)."},{"name":"limit","type":null,"required":false,"description":null},{"name":"load_cases","type":null,"required":false,"description":"Result tables: load cases to show. Omit both lists for all cases and combinations."},{"name":"load_combinations","type":null,"required":false,"description":null},{"name":"numeric","type":"boolean","required":false,"description":"Convert fields that carry units to numbers."},{"name":"offset","type":"integer","required":false,"description":null},{"name":"table_key","type":"string","required":true,"description":"Exact table key from etabs_list_tables, e.g. 'Story Drifts' or 'Frame Assignments - Section Properties'."},{"name":"where","type":null,"required":false,"description":"Keep rows whose fields equal these values, e.g. {'Story': 'Story3'}."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":173},{"name":"etabs_edit_table","title":null,"description":"Edit a model table the way the Interactive Database editor does: read it, change/append/delete rows,\nthen apply. Returns ETABS's import log with error and warning counts.","inputs":[{"name":"append_rows","type":null,"required":false,"description":"New rows (field key -> value); missing fields are left blank."},{"name":"apply","type":"boolean","required":false,"description":"Apply the edits to the model. False validates and cancels (dry run)."},{"name":"delete_where","type":null,"required":false,"description":"Remove rows matching any of these field filters."},{"name":"group","type":"string","required":false,"description":null},{"name":"replace_rows","type":null,"required":false,"description":"Replace the entire table with these rows."},{"name":"table_key","type":"string","required":true,"description":"An editable table key (etabs_list_tables shows editable=true)."},{"name":"updates","type":null,"required":false,"description":"Change fields on rows matching 'match'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":153},{"name":"etabs_screenshot","title":null,"description":"Take a screenshot of the ETABS window: the model views, selection and any open dialog, exactly what an\nengineer sees. Use it to check geometry, deformed shapes or design colours after other tools ran.","inputs":[{"name":"capture","type":"string","required":false,"description":"screen = what is on the monitor (brings ETABS forward for a moment, then restores focus); offscreen = never changes focus, but ETABS's GPU model views come out blank."},{"name":"max_width","type":"integer","required":false,"description":null},{"name":"refresh","type":"boolean","required":false,"description":"Refresh the model views first so recent API edits are drawn."},{"name":"zoom_to_fit","type":"boolean","required":false,"description":"Zoom all views to the full model."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":141},{"name":"etabs_show_window","title":null,"description":"Show or hide the ETABS application window. Hidden ETABS runs faster for batch work.","inputs":[{"name":"visible","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":35},{"name":"etabs_refresh_view","title":null,"description":"Redraw the ETABS model views (and optionally zoom to fit) after model changes made through the API.","inputs":[{"name":"zoom_to_fit","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":41},{"name":"etabs_render_view","title":null,"description":"Render the model offscreen from its data: any angle, deformed shape of any case, members coloured by\ndesign ratio, displacement, section or storey. Works with ETABS hidden and never takes focus. Use it to\nlook at what you built and at results the ETABS window cannot be switched to through the API.","inputs":[{"name":"azimuth","type":null,"required":false,"description":"Override the camera azimuth in degrees."},{"name":"color_by","type":"string","required":false,"description":"design_ratio needs a design run; displacement needs deformed_case."},{"name":"deformed_case","type":null,"required":false,"description":"Load case or combination whose deflected shape to draw."},{"name":"deformed_scale","type":null,"required":false,"description":"Displacement multiplier; omit for automatic (largest deflection ≈ 4% of the model height)."},{"name":"elevation","type":null,"required":false,"description":"Override the camera elevation in degrees."},{"name":"height","type":"integer","required":false,"description":null},{"name":"highlight","type":null,"required":false,"description":"Frame names to emphasise (e.g. from etabs_find_objects)."},{"name":"show_slabs","type":"boolean","required":false,"description":null},{"name":"stories","type":null,"required":false,"description":"Only draw these stories."},{"name":"theme","type":"string","required":false,"description":null},{"name":"view","type":"string","required":false,"description":null},{"name":"width","type":"integer","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":230},{"name":"etabs_find_objects","title":null,"description":"Find objects by engineering criteria: 'columns on Story3', 'beams longer than 8 m', 'members with\nD/C over 0.9', 'everything in this box'. Returns names usable by every other tool; can select them.","inputs":[{"name":"box","type":null,"required":false,"description":"Only objects whose centroid lies inside this box."},{"name":"group","type":null,"required":false,"description":"Only objects assigned to this group."},{"name":"kind","type":"string","required":false,"description":null},{"name":"limit","type":"integer","required":false,"description":null},{"name":"max_length","type":null,"required":false,"description":null},{"name":"max_ratio","type":null,"required":false,"description":null},{"name":"min_length","type":null,"required":false,"description":"Frames at least this long (number in present units or e.g. '8 m')."},{"name":"min_ratio","type":null,"required":false,"description":"Frames whose design D/C ≥ this (needs design results)."},{"name":"role","type":null,"required":false,"description":"Frames only, from geometry."},{"name":"sections","type":null,"required":false,"description":"Frame sections or area properties."},{"name":"select","type":"boolean","required":false,"description":"Also select the matches in ETABS (clears the current selection)."},{"name":"stories","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":196},{"name":"etabs_what_changed","title":null,"description":"What changed in the model since the last call (or since the baseline): objects added, removed or\nmodified, sections/loads/combos/groups/stories added or removed, units, lock and file. Picks up edits\nthe engineer made by hand in the ETABS window, so the agent can stay in sync. The first call records\nthe baseline.","inputs":[{"name":"limit","type":"integer","required":false,"description":null},{"name":"reset","type":"boolean","required":false,"description":"Only record a new baseline."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":103},{"name":"etabs_checkpoint","title":null,"description":"Save the model and keep a copy as a named checkpoint (an undo point before risky edits). Restore it\nwith etabs_restore_checkpoint. Needs a saved model.","inputs":[{"name":"label","type":"string","required":true,"description":"Short name, e.g. 'before-resize'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":59},{"name":"etabs_list_checkpoints","title":null,"description":"Checkpoints saved for the open model, newest first.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":22},{"name":"etabs_restore_checkpoint","title":null,"description":"Roll the model back to a checkpoint. The model keeps its original file name.","inputs":[{"name":"checkpoint","type":"string","required":true,"description":"Checkpoint file name or label from etabs_list_checkpoints."},{"name":"confirm","type":"boolean","required":false,"description":"Restoring replaces the current model state. Ask the user first."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":64},{"name":"etabs_export_model","title":null,"description":"Export the whole model as ETABS's .e2k text and return it (paged). One read gives the complete\ndefinition (stories, grids, materials, sections, objects, assignments, loads, cases), ideal for audits.","inputs":[{"name":"max_chars","type":"integer","required":false,"description":null},{"name":"offset","type":"integer","required":false,"description":"Character offset into the file, for paging."},{"name":"path","type":null,"required":false,"description":"Where to write the .e2k text file (default: next to the model)."},{"name":"sections","type":null,"required":false,"description":"Only return these $-sections (prefix match), e.g. ['STORIES', 'FRAME ASSIGNS', 'LOAD PATTERNS']."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":136},{"name":"etabs_design_report","title":null,"description":"Write an engineering summary in Markdown: model, loads, analysis status, base reactions, modal\nperiods, drifts and the design check with the most critical members. Returns the text and the file.","inputs":[{"name":"path","type":null,"required":false,"description":"Write the Markdown here (default: <model>_report.md next to the model)."},{"name":"top","type":"integer","required":false,"description":"Critical members to list."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":84},{"name":"etabs_assign_label","title":null,"description":"Assign objects to a group, pier or spandrel label (created if missing), like Assign > ... in ETABS.","inputs":[{"name":"group","type":null,"required":false,"description":"Assign to every object already in this group."},{"name":"label","type":"string","required":true,"description":null},{"name":"label_type","type":"string","required":true,"description":"Groups organise selection and output; piers/spandrels drive wall design and forces."},{"name":"names","type":null,"required":false,"description":null},{"name":"object_kind","type":"string","required":false,"description":null},{"name":"remove","type":"boolean","required":false,"description":"Groups only: remove the objects from the group instead."},{"name":"selected","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":116},{"name":"etabs_search_api","title":null,"description":"Search all ~1,300 ETABS API methods. Use this to find a method when no curated tool covers the task,\nthen etabs_describe_api for its parameters and etabs_call_api to run it.","inputs":[{"name":"interface","type":null,"required":false,"description":"Restrict to one interface, e.g. 'cFrameObj'."},{"name":"limit","type":"integer","required":false,"description":null},{"name":"query","type":"string","required":true,"description":"Words to match against method names, interface paths and parameter names, e.g. 'frame release' or 'story drift'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":109},{"name":"etabs_describe_api","title":null,"description":"Show a method's exact signature (types, ByRef outputs, defaults, enum values, safety level), or list an\ninterface's methods and sub-interfaces, or an enum's values. Reflects the connected ETABS version.","inputs":[{"name":"path","type":"string","required":true,"description":"A method path ('FrameObj.GetReleases'), an interface ('cFrameObj' or 'FrameObj') or an enum name ('eLoadPatternType')."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":96},{"name":"etabs_call_api","title":null,"description":"Call any ETABS API method. Arguments are validated and converted against the live signature; ByRef\nvalues come back in 'outputs'. A non-zero 'ret' means ETABS rejected the call (ok=false).","inputs":[{"name":"args","type":null,"required":false,"description":"Arguments by parameter name. Omit ByRef outputs; enums accept names or numbers; arrays are JSON lists."},{"name":"confirm","type":"boolean","required":false,"description":"Required for destructive methods (Delete*, New*, OpenFile, unlocking...). Ask the user first."},{"name":"max_items","type":null,"required":false,"description":"Cap on returned array lengths."},{"name":"path","type":"string","required":true,"description":"Method path relative to SapModel ('PointObj.SetRestraint'), or 'App.<method>' for the application object."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":146},{"name":"etabs_call_api_batch","title":null,"description":"Run several API calls in order in one round trip (for example, define and assign many properties).\nEach result is reported; with stop_on_error the batch halts at the first failure.","inputs":[{"name":"calls","type":"array","required":true,"description":null},{"name":"confirm","type":"boolean","required":false,"description":"Confirms every destructive call in the batch."},{"name":"stop_on_error","type":"boolean","required":false,"description":"Stop at the first failed call."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":86}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T05:23:43.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":35,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-18","recent":[{"id":"chg_01a1aa29-b852-7db8-abad-67a7f9e351bc","kind":"check.verdict","summary":"Source repository (pass → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a1aa29-b852-7db8-abad-67a7f9e351bc"},{"id":"chg_01a1aa29-b854-7236-8036-7490df47f6af","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a1aa29-b854-7236-8036-7490df47f6af"},{"id":"chg_01a1aa29-b854-77e6-b5c5-5e60df853229","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a1aa29-b854-77e6-b5c5-5e60df853229"},{"id":"chg_01a1aa29-b854-7d66-a947-07971a114147","kind":"score.total_changed","summary":"Trust score (80 → 60)","materiality":"functional","direction":"regression","scoreDelta":-20,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a1aa29-b854-7d66-a947-07971a114147"},{"id":"chg_01a185a4-c847-7a26-830f-c6ac52d66a1a","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a185a4-c847-7a26-830f-c6ac52d66a1a"},{"id":"chg_01a185a4-c848-7e75-9e85-a9f4d383ea3d","kind":"score.total_changed","summary":"Trust score (65 → 80)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a185a4-c848-7e75-9e85-a9f4d383ea3d"},{"id":"chg_01a14ce7-31fd-72df-9859-9088cc1b4f6e","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp#chg-chg_01a14ce7-31fd-72df-9859-9088cc1b4f6e"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp","markdown":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp.md","changelogJson":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/moha2005269-etabs-mcp/etabs-mcp.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/etabs-mcp/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/etabs-mcp"}]}}