etabs-mcp
Rendered from a live ETABS 23 session: every member, deflection and D/C ratio is real. MP4
etabs-mcp
Your AI agent, inside ETABS.
An agentic Model Context Protocol server for CSI ETABS v22+. Claude Code, Codex, Factory Droid, Cursor and any other MCP client can model, load, analyse, design and inspect structures the way an engineer does, through the official ETABS API, with every call checked against the real signatures.
Quick start · Tools · How it works · Testing · Configuration
Why
ETABS has a huge automation API: 143 interfaces, 1,293 reachable methods, 58 enums. It's also full of
ref arrays, status codes and silent quirks. Agents should be designing buildings, not wrestling with COM marshalling.
etabs-mcp gives agents two layers:
71 curated tools | Engineer-shaped workflows: |
The entire API |
|
Related MCP server: ETABS MCP Server
Highlights
Full coverage, zero guesswork Search all 1,293 methods, read exact signatures with enum values, and call any of them. ByRef outputs come back as named JSON.
Sees like an engineer
etabs_render_view draws the model offscreen from any angle: deformed shapes, D/C ratios, sections, stories. etabs_screenshot shows the real ETABS window.
The Interactive Database Read any of ETABS's tables and edit importable ones (update / append / delete rows, then apply), with the import log returned.
Safe by design
Destructive calls need confirm=true, internals are blocked, and --read-only mode refuses every write. Tool annotations tell clients what is safe.
Version-adaptive
Finds every ETABS 22/23/24… install, loads that version's ETABSv1.dll and reflects its API live. Methods missing in older versions fail clearly.
Built for agents
Errors carry a code and a hint. Lengths accept "6 m" or "20 ft", long runs go to background jobs, and etabs_what_changed notices hand edits in ETABS.
Quick start
Requirements: Windows · ETABS 22 or newer (licensed) · Python 3.10+ · the .NET 8 Desktop Runtime (installed with ETABS 22+).
Claude Desktop, one click: download etabs-mcp-0.3.0-py3XX.mcpb for your Python version from the
latest release and open it. Claude Desktop installs
the extension with every dependency bundled.
Everything else: install the package from the release:
pip install "https://github.com/Moha2005269/etabs-mcp/releases/download/v0.3.0/etabs_mcp-0.3.0-py3-none-any.whl"Or from GitHub:
pip install "git+https://github.com/Moha2005269/etabs-mcp@v0.3.0"Check that it finds ETABS:
etabs-mcp --list-installsConnect your agent
claude mcp add etabs -- etabs-mcpAnalyses can take minutes on big models; raise the tool timeout with MCP_TOOL_TIMEOUT=600000.
~/.codex/config.toml
[mcp_servers.etabs]
command = "etabs-mcp"
tool_timeout_sec = 600{
"mcpServers": {
"etabs": {
"command": "etabs-mcp",
"env": { "ETABS_MCP_CONNECT_MODE": "auto" }
}
}
}etabs-mcp --transport streamable-http --port 8765Then just ask:
"Model a 2-storey steel frame, 2×1 bays of 6 m × 5 m, W14X90 columns, W18X35 beams, 200 mm slab. Apply 1.5 kPa SDL and 3 kPa live, run the analysis, report T₁, wind drift and the worst steel D/C ratio, and show me the 3D view."
The server connects on its own: it attaches to a running ETABS, or launches one.
71 tools
Area | Tools |
Session |
|
Model & file |
|
Geometry |
|
Properties |
|
Loads |
|
Lateral system |
|
Generate |
|
Analysis & design |
|
Concrete & walls |
|
Code checks |
|
Background jobs |
|
Database tables |
|
See & query |
|
Track & undo |
|
Export & report |
|
Menus & dialogs |
|
Instances |
|
Entire API |
|
Plus resources (etabs://api/interfaces, etabs://api/interface/{name}, etabs://api/enum/{name},
etabs://server/info) and a prompt (etabs_build_and_check) that walks an agent through the full workflow.
// 1. find it
etabs_search_api({ "query": "frame releases" })
// → SapModel.FrameObj.SetReleases(Name, ref II[], ref JJ[], ref StartValue[], ref EndValue[], ItemType)
// 2. call it: plain JSON, validated and converted to the exact .NET types
etabs_call_api({
"path": "FrameObj.SetReleases",
"args": { "Name": "13", "II": [false,false,false,false,false,true],
"JJ": [false,false,false,false,false,true],
"StartValue": [0,0,0,0,0,0], "EndValue": [0,0,0,0,0,0] }
})
// → { "ok": true, "ret": 0, "outputs": { ... } }What the agent sees
The film above is cut from one recorded session. An agent built a 6-storey, 4×3-bay braced steel building
through etabs-mcp, analysed it, ran the AISC 360-16 check, found 48 overstressed girders, upsized them,
and re-ran everything until no member was over capacity.
etabs_render_view
The agent's own view of the model, drawn from its data. It works with ETABS hidden, never takes focus, and shows what the ETABS API cannot switch the GUI to.
How it works
flowchart LR
A["AI agent<br/>Claude Code · Codex · Droid · Cursor"] -- "MCP (stdio / HTTP)" --> S
subgraph S["etabs-mcp"]
direction TB
T["71 curated tools<br/>+ generic dispatcher"] --> P["Policy<br/>read-only · confirm · blocked"]
P --> C["Coercion<br/>JSON → typed args, ByRef placeholders"]
C --> K["API catalog<br/>live reflection of ETABSv1.dll"]
K --> W["Single STA worker thread"]
end
W -- "pythonnet / CoreCLR<br/>MethodInfo.Invoke" --> D["ETABSv1.dll<br/>(the installed version)"]
D -- "COM, cross-process" --> E["ETABS.exe"]
E -. "screen capture" .-> AReverse-engineering the API, not ETABS. This server stays on the official, documented OAPI and never patches or decompiles the ETABS engine. Its API surface was mapped from the shipped interop assembly:
REA static metadata analysis of
ETABSv1.dll: 365 types, 3,275 method defs, 14,752 parameters.A reflection dumper (
tools/ApiDump) emits every public interface, signature, ByRef flag, default and enum intoetabs_api_spec.json.Cross-check: reflection and raw metadata agree exactly (e.g.
cFrameObj+cAnalysisResults+cDatabaseTables= 136 methods + 1 property accessor = REA's 137).At runtime the server re-reflects the loaded DLL, so validation always matches the ETABS you run.
Engineering details that make it "just work":
Typed marshalling. pythonnet boxes Python
intasPyIntinsideobject[], which reflection rejects forInt32. Every argument is routed through a one-element typed array andArray.Copy, so ETABS gets realInt32/Double/enum boxes and ByRef arrays.One thread. ETABS and COM proxies aren't thread-safe; every call is serialised on a single worker.
Lost connections (ETABS closed or crashed) are detected from HRESULTs and reported with a reconnect hint.
ETABS quirks handled:
Library imports that ETABS silently renames (
W14X90→W14X90-1) are detected and renamed back.After table edits, ETABS reports the model file as the temporary
.$et; saving is mapped back to.EDB.Unitless result columns (drift ratios, mass ratios) are turned into numbers, while IDs like
Label: "1"stay strings.GPU-drawn viewports are blank to
PrintWindow, so screenshots come from the composed screen and focus is handed back afterwards.
Tested against real ETABS
Offline (CI): 58 tests. Every curated tool runs through FastMCP against a fake backend that resolves and
coerces every call against the real ETABSv1.dll catalog. A wrong method or parameter name fails exactly as it
would in ETABS.
Live end-to-end: tests/live/test_live_e2e.py starts the server as a real
MCP subprocess, launches ETABS 23.3.2, and runs 42 tool calls with 0 failures in ~42 s:
Step | Verified |
Model | 2 storeys, 26 frames (library W-shapes), 4 slabs, 6 fixed supports |
Loads | SDL / LL / wind patterns, area + line + joint loads, 2 combos + AISC defaults |
Analysis | all cases finished in 9.8 s; model locks |
Base reactions | LL ΣFz = 360 kN = 3 kPa × 120 m², exact; SDL matches slab + line-load hand calc |
Modal / drift | T₁ = 0.398 s · max wind drift 1/1846 |
Design | 26 steel members (AISC 360-16), max D/C 0.35, 0 failing |
Generic API | releases set and read back, a 9-call batch, status-code failures, validation and confirm errors |
Tables | read 26 section assignments, edit one through the Interactive Database, verify through the API |
Lifecycle | unlock, save ( |
Live v0.2 suite: tests/live/test_live_v2.py drives every new tool against
ETABS on a 3-storey, 63-member model:
Step | Verified |
Units |
|
Find & label | 27 columns, 12 beams on Story2, 18 beams ≥ 7.5 m (selected), group round-trip |
Lateral | ASCE 7-16 seismic (X, X±E), auto wind, ASCE 7-16 spectrum + RS case, mass source, diaphragm on 12 slabs, 9 modes |
Change tracking | a hand edit and an added beam are both reported; the checkpoint restores the model |
Background jobs | analysis returns at once; other calls get |
Results | EQX, WX and RSX base shears; X-only seismic gives exactly zero FY |
Seeing | design-ratio, deformed, section and plan renders; AISC 341 design errors flagged, never shown as safe |
Export & report |
|
Live v0.3 suite: tests/live/test_live_v3.py:
Step | Verified |
Generator | 4-storey concrete shear-wall building on a non-uniform grid (8/6/8 m); steel braced building in kip-ft |
Hand check | steel building LL ΣFz = 0.05 ksf × 90 ft × 50 ft × 3 floors, exact |
Code checks | drift (Cd-amplified), torsion, soft story, weight, modal mass (12 modes), RS vs ELF |
RS scaling | response spectrum scaled to 100% of ELF, re-analysed, ratio 1.00 verified |
Concrete & walls | ACI 318-19 beams, all 48 columns, joints; shear walls designed through the menu, pier results read back |
Showcase run (tools/record_demo_data.py): a 6-storey braced steel building,
354 members and 72 slabs. LL ΣFz = 9,720 kN (= 3 kPa × 30 m × 18 m × 6 floors, exact), wind ΣFx = 432 kN
(= 18 kN × 24 joints, exact), T₁ = 1.71 s. The redesign loop took max D/C from 1.22 to 0.91.
pip install -e ".[dev]"
pytest # offline suite
ETABS_MCP_ARTIFACTS=docs/live pytest tests/live --live -s # drives your local ETABSConfiguration
Env var / flag | Default | Meaning |
|
|
|
| newest | ETABS major version to use, e.g. |
| auto | ETABS program folder |
| visible | Show the ETABS window when launching |
| off | Refuse every call that changes the model |
| off | Skip |
|
| .NET host for pythonnet ( |
| 2000 | Cap on array lengths returned by |
| 500 | Default page size for tables and results |
| off | Append every model-changing call (time, instance, call, arguments, result) to a JSON-lines file |
| none | Bearer token for |
Publishing (maintainers)
Tagging vX.Y.Z runs release.yml, which tests, builds the wheel, sdist and
.mcpb bundles, and publishes the GitHub release. PyPI and the MCP Registry use tokenless trusted publishing:
add a trusted publisher on pypi.org (this repo, workflow release.yml, environment pypi), then set the
repository variable PUBLISH_PYPI=true. Later tags publish to PyPI and list the server in the MCP Registry.
Version support
ETABS | Status |
23.x | ✅ Verified live (23.3.2) |
22.x | ✅ Supported: same .NET 8 API; the catalog is reflected from your installed DLL |
24+ | ✅ Expected to work: new methods appear automatically through live reflection |
≤ 21 | ❌ Not supported (.NET Framework era API) |
Safety model
Level | Examples | Behaviour |
read |
| always allowed |
write |
| blocked in read-only mode |
destructive |
| needs |
blocked |
| never callable |
Menu commands run through etabs_menu need confirm=true as well, and over HTTP every request must carry the
bearer token.
Project layout
src/etabs_mcp/
server.py FastMCP assembly: tools, resources, prompt, agent instructions
session.py connection lifecycle + single worker thread + generic call()
dotnet.py pythonnet host, live reflection, typed marshalling, connection-loss detection
catalog.py API catalog: path resolution, search, describe
coerce.py JSON → signature-typed values, results → JSON
policy.py read / write / destructive / blocked classification
discovery.py ETABS installs and running instances
screenshot.py window capture
render.py offscreen model renderer (etabs_render_view)
units.py unit-aware lengths ("6 m", "20 ft", "250 mm")
gui.py ETABS menu commands through Windows UI Automation
http.py HTTP transports with bearer-token auth
tools/ curated tools (connection, model, generator, geometry, properties, loads, lateral,
analysis, concrete, checks, tables, view, insight, api)
mcpb/ Claude Desktop extension manifest server.json MCP Registry entry
data/etabs_api_spec.json reflected API of ETABSv1.dll
tools/ApiDump .NET reflection dumper that produced the API spec
tools/record_demo_data.py drives the MCP tools against live ETABS and records the showcase data
tools/render_hero.py renders the README film and stills from that data
tools/build_mcpb.py builds the Claude Desktop extensions
tests/ offline suite + live end-to-end testTroubleshooting
install_not_found: runetabs-mcp --list-installs; setETABS_MCP_INSTALL_DIRif ETABS lives somewhere unusual.Attaching does nothing: wait until ETABS has finished starting and close any modal dialogs; or pass
pidtoetabs_connect.Edits fail after analysis: the model is locked.
etabs_unlock_model(confirm=true)deletes results and unlocks it.Long analyses time out in the client: raise the client's MCP tool timeout (see Connect your agent).
Switching ETABS major versions: restart the server; one process hosts one
ETABSv1.dll.
Apache-2.0 © Moha2005269 · ETABS is a trademark of Computers and Structures, Inc. This project is independent and not affiliated with or endorsed by CSI.
Available Tools
71 toolsetabs_add_areasB
Draw floors, slabs and walls from corner points (like Draw > Floor/Wall). Returns new area names.
| Name | Required | Description | Default |
|---|---|---|---|
| csys | No | Global | |
| areas | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description carries little added behavioral weight. 'Returns new area names' merely restates return values that the output schema already covers, and it discloses nothing about permissions, model state requirements, or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence plus a short return note; appropriately sized with no filler. The core action is stated first, which helps an agent scan it quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since an output schema exists, return values need not be explained. However, for a batch creation tool (up to 5000 areas) with zero schema description coverage and no annotations on model-state prerequisites, the definition leaves notable gaps around coordinate system selection and preconditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, so the description should compensate but does not: it never explains 'csys', the meaning of the 'areas' array, or the 'name' field. It only loosely implies the 'points' parameter via 'corner points', leaving key parameters undocumented in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Draw floors, slabs and walls from corner points', and references the analogous GUI command (Draw > Floor/Wall). It is clear what the tool produces, though it does not explicitly contrast itself with siblings like etabs_add_frames or etabs_define_area_section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(like Draw > Floor/Wall)' gives implied usage context but there is no explicit statement of when to use this versus etabs_add_points or etabs_add_frames, nor any prerequisites such as needing the model unlocked or a valid area property defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_add_framesA
Draw beams, columns and braces between two points (like Draw > Frame). Joints are created or merged automatically. Returns the ETABS names of the new frames, in input order; failures are listed per item.
| Name | Required | Description | Default |
|---|---|---|---|
| csys | No | Global | |
| frames | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false), and the description adds genuinely useful behavior beyond them: joints are created or merged automatically, and partial failures are reported per item. It stops short of noting any prerequisites (unlocked model, defined sections, active units).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and immediately followed by side effects and return behavior. No filler or restated name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations and an output schema, the description covers the key agent-relevant facts: automatic joint merging, ordered return names, per-item failure reporting. The gap is the unexplained csys parameter and the absence of any precondition note (e.g., model state or unit system).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%: the 'csys' parameter is completely undocumented in both schema and description, and the 5000-item batch limit is unexplained. The description only implies start/end semantics via 'between two points' and says nothing about section assignment or coordinate-system behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Draw beams, columns and braces between two points') and anchors it to the GUI equivalent 'Draw > Frame'. The phrase 'between two points' cleanly separates it from siblings like etabs_add_areas and etabs_add_points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Draw-menu analogy implies the modeling context in which this tool applies, but there is no explicit when-to-use vs. alternatives guidance (e.g., when to prefer etabs_add_points plus a connect step, or how this interacts with etabs_assign_section). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_add_pointsB
Add joints at coordinates (existing joints at the same location are reused).
| Name | Required | Description | Default |
|---|---|---|---|
| csys | No | Global | |
| points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation block already declares the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the description's real contribution is the non-obvious de-duplication rule: existing joints at the same location are reused rather than duplicated. That is genuinely useful behavior an agent cannot infer from the schema. It stops short of explaining whether an unlock is required or how partial failures in a batch are reported. Note a mild tension with idempotentHint=false, though the description never claims repeated calls are no-ops, so this is not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and scoped by the parenthetical. Nothing is padded and nothing needs reordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and annotations cover safety, which keeps this from being inadequate. But for a batch mutation accepting up to 5000 points, the description omits the csys interpretation, required model state, and batch/limit handling — meaningful gaps the agent must resolve elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is reported as 0%, so the description should compensate but does not: it says nothing about 'csys' (the coordinate system the supplied coordinates are interpreted in), which is the one parameter whose meaning is not self-evident. It gestures at 'coordinates' but adds no format, unit, or ordering detail beyond the nested schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb+resource ('Add joints at coordinates') that an agent can distinguish from etabs_add_frames and etabs_add_areas, which add different object types. It does not, however, explicitly call out those siblings or the scope limits that separate this from a generic point-creation call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated preconditions (e.g. model must be unlocked, units set via etabs_set_units), and no pointer to alternatives such as etabs_call_api for joints not expressible as coordinates. The parenthetical about reused joints is behavior, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_analysis_statusBRead-onlyIdempotent
Per-case analysis status (not run / finished ...), run flags, and whether the model is locked.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is fully covered. The description adds the useful content-level detail that the response includes run flags and lock state, but says nothing about staleness, refresh timing, or whether it reflects queued vs executed cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the main subject (per-case analysis status) before the secondary items. The '(not run / finished ...)' ellipsis is slightly sloppy but does convey the value domain efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail need not be spelled out, and a zero-parameter read-only query is inherently simple. The remaining gap is routing context against the many status/analysis siblings, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which per the rubric establishes a baseline of 4; there is nothing for the description to disambiguate. No parameter guidance is needed or missing here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (per-case analysis status) and enumerates what it returns: status values, run flags, and model lock state. It is clearly a read-only inspection tool, distinct from run_analysis or job_status, though it never names those siblings to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: no statement about calling it before/after etabs_run_analysis, and no differentiation from the nearby etabs_job_status or etabs_status tools. The agent must infer its role from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_assign_diaphragmB
Define a rigid or semi-rigid diaphragm and assign it to the slabs (area objects) on the chosen stories.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | D1 | |
| stories | No | Stories to assign (default: all with slabs). | |
| semi_rigid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the safety burden is partly lifted. The description usefully discloses the dual effect (it both defines a diaphragm and assigns it) but says nothing about re-run behavior, whether an existing diaphragm with the same name is overwritten, or required model state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the core action and stays free of padding. Minor redundancy in 'on the chosen stories' but nothing that should be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover non-destructiveness. Still, for a define+assign mutation the description omits model-state prerequisites and name-collision behavior, leaving meaningful gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (just 'stories'), so the description must compensate and partially does: 'rigid or semi-rigid' clarifies the semi_rigid flag and 'on the chosen stories' echoes the stories parameter. However, the 'name' parameter and its default 'D1', including any uniqueness or overwrite semantics, are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair (define and assign) and the precise resource (a rigid or semi-rigid diaphragm) plus its target (area/slab objects on chosen stories). It implicitly separates itself from other assign_* siblings like etabs_assign_section or etabs_assign_loads, though it never states that differentiation explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus etabs_assign_section, etabs_set_mass_source, or other assignment tools, and no prerequisites are stated (model open, unlocked, slabs existing). The only usage hint, defaulting to 'all with slabs', is carried by the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_assign_labelC
Assign objects to a group, pier or spandrel label (created if missing), like Assign > ... in ETABS.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Assign to every object already in this group. | |
| label | Yes | ||
| names | No | ||
| remove | No | Groups only: remove the objects from the group instead. | |
| selected | No | ||
| label_type | Yes | Groups organise selection and output; piers/spandrels drive wall design and forces. | |
| object_kind | No | area |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the write semantics are partly covered. The description usefully adds that a missing label is auto-created and that remove detaches objects from groups, but it says nothing about whether existing label assignments are overwritten or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and the create-if-missing behavior come first. It is efficient, though the UI reference adds little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, three mutually alternative targeting modes (group/names/selected), and a mutation side effect, the description is too thin. An output schema exists so return values need no explanation, but the targeting semantics and overwrite behavior are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, and the description does not compensate: the 'group, pier or spandrel' phrasing merely restates the label_type enum, leaving labels, names, selected, and object_kind unexplained. An agent cannot tell from this how to target objects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (assign) and resource (group/pier/spandrel label), plus the side effect that the label is created if missing. It reads clearly against siblings like etabs_assign_section or etabs_assign_loads, though it does not explicitly name how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only a UI analogy ('like Assign > ... in ETABS') is given; there is no statement of when to use this versus other assignment tools, no prerequisites, and no guidance on choosing between the group/names/selected targeting modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_assign_loadsA
Assign loads (Assign > Frame/Shell/Joint Loads): distributed or point loads on frames, uniform loads on areas, and forces/moments on joints. Values are in present units; 'gravity' acts downward (-Z).
| Name | Required | Description | Default |
|---|---|---|---|
| loads | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the safety burden is partly lifted, and the description adds genuinely useful non-annotation context: values are interpreted in present units and 'gravity' resolves to global -Z. It does not mention the replace-vs-add behavior on existing loads, which is important behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the core purpose and menu mapping come first, followed by the units/direction conventions. Nothing is redundant with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the safety profile. For a multi-kind nested schema in a 55-tool surface, the description covers what loads and units/direction mean, but omits the load-pattern prerequisite and the replace-vs-add implication, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is reported at 0% for the single 'loads' parameter, so the description should compensate, and it only partially does: the units convention and gravity semantics are relevant to the 'value' and 'direction' fields, but the array structure, 'pattern' requirement, and 'replace' default are not addressed. The nested LoadInput fields do carry their own descriptions, which limits the penalty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Assign loads') and even maps it to the ETABS menu path (Assign > Frame/Shell/Joint Loads), then enumerates the load types it handles (distributed/point on frames, uniform on areas, forces/moments on joints). This clearly separates it from the define_* siblings such as etabs_define_load_patterns or etabs_define_wind_load, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the parenthetical menu mapping and the list of supported load kinds; there is no explicit statement of when to choose this over etabs_define_load_patterns, etabs_define_seismic_load, or etabs_list_load_definitions. An agent can infer that this applies loads onto already-existing objects, but the prerequisite (a load pattern must first exist) and any exclusions are left unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_assign_sectionC
Assign a frame section or an area property (Assign > Frame > Section / Shell > Property).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| group | No | ||
| names | No | ||
| section | Yes | Frame section or area (slab/deck/wall) property name. | |
| selected | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only the UI menu path, not behavioral context such as whether existing assignments are overwritten, what happens if the named section is undefined, or how names vs group vs selected selects the target objects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the operation named first and a compact parenthetical for the UI equivalent. Nothing is redundant, though the brevity leaves the tool under-specified rather than optimized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter model-mutating tool with 20% schema coverage, this description is far too thin. An output schema exists so return values needn't be explained, but the missing target-selection semantics (names/group/selected) and the missing define-before-assign prerequisite are real gaps for an agent trying to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (only 'section' is documented), so the description must compensate. It clarifies the frame-vs-area meaning of the kind/section pairing, but says nothing about group, names, or selected — three of five parameters are undocumented in both schema and description, including how target objects are chosen.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Assign) and resource (frame section or area property), with the kind enum distinguishing frame vs area usage. The UI menu mapping (Assign > Frame > Section / Shell > Property) reinforces what operation this performs. It stops short of explicitly differentiating from the define_frame_section / define_area_section siblings, leaving the define-then-assign relationship implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer that a section/property must already exist (via define_frame_section or define_area_section) before this tool is called, and nothing states how names/group/selected scope interacts with the assignment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_call_apiBDestructive
Call any ETABS API method. Arguments are validated and converted against the live signature; ByRef values come back in 'outputs'. A non-zero 'ret' means ETABS rejected the call (ok=false).
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments by parameter name. Omit ByRef outputs; enums accept names or numbers; arrays are JSON lists. | |
| path | Yes | Method path relative to SapModel ('PointObj.SetRestraint'), or 'App.<method>' for the application object. | |
| confirm | No | Required for destructive methods (Delete*, New*, OpenFile, unlocking...). Ask the user first. | |
| max_items | No | Cap on returned array lengths. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely useful return/error semantics not in the annotations: ByRef values surface under 'outputs' and a non-zero 'ret' signals rejection (ok=false). But it discloses nothing about the destructive/permission surface the annotations flag (destructiveHint=true, non-idempotent), and an output schema already exists so the return-format note partly overlaps structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose, then validation behavior, then the error convention. Every sentence carries information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a catch-all API-invocation tool this is adequate but thin: it never points the agent to etabs_search_api/etabs_describe_api for discovering method paths, nor tells it when to reach for typed tools or the batch variant, which is the main selection question for this tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (path, args, confirm, max_items) are already documented in the schema. The description adds no format, syntax, or naming-convention detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource: call any ETABS API method, with the escape-hatch nature made explicit. However, it never distinguishes itself from siblings like etabs_call_api_batch or etabs_describe_api, so the agent gets no help routing among the API-level tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this generic escape hatch over the many typed siblings (etabs_set_stories, etabs_add_points, etc.) or the batch variant. The only conditional text is borrowed from the schema's confirm field, not the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_call_api_batchADestructive
Run several API calls in order in one round trip (for example, define and assign many properties). Each result is reported; with stop_on_error the batch halts at the first failure.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| confirm | No | Confirms every destructive call in the batch. | |
| stop_on_error | No | Stop at the first failed call. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds behavioral details beyond annotations: calls run in order, each result is reported, and stop_on_error halts at the first failure. It does not describe what specifically gets destroyed, atomicity, or auth requirements, but it adds meaningful context about ordering and failure handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no wasted words. The primary purpose is front-loaded, followed by key behavioral details. Every sentence contributes directly to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema means return values need not be explained. However, for a destructive batch tool, the description omits any mention of the confirm parameter or confirmation requirements, and does not clarify atomicity or what happens to successful calls when a later call fails. These are relevant gaps despite the schema providing some parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with confirm and stop_on_error documented in the schema. The description explains stop_on_error's behavior and implies ordered calls via 'in order', but it does not mention the confirm parameter at all. The description adds some meaning beyond the schema for one parameter but leaves confirm reliance entirely on structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: running several API calls in order in one round trip. It clearly conveys batch execution versus a single call, but it does not explicitly contrast with the sibling etabs_call_api tool. The purpose is clear enough for an agent to understand, though sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example '(for example, define and assign many properties)' implies a use case for batching, and 'in one round trip' hints at efficiency benefits. However, there is no explicit guidance on when to use this tool versus multiple etabs_call_api calls or other alternatives, and no exclusions or prerequisites are stated. Usage is implied rather than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_checkpointA
Save the model and keep a copy as a named checkpoint (an undo point before risky edits). Restore it with etabs_restore_checkpoint. Needs a saved model.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Short name, e.g. 'before-resize'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it as a non-read-only, non-destructive, non-idempotent mutation. The description adds real context the annotations lack: it saves the model and keeps a labeled copy as a restore point, and that it requires an already-saved model. It doesn't cover failure behavior or whether labels must be unique, but it strengthens an otherwise sparse disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences: the action first, then the restore pairing and prerequisite. No wasted text; the analogy earns its place by conveying intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param tool with an output schema and clear annotations, this is nearly complete: what it does, how it's paired, and the prerequisite. Minor gap: it doesn't state what happens if the model is unsaved or if the label collides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single param 'label' with 100% schema coverage including pattern and example. Description adds nothing about the label beyond what the schema already provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (save + copy as named checkpoint) and resource (model), with a concrete analogy ('an undo point before risky edits') that pins down intent and distinguishes it from etabs_save_model and etabs_restore_checkpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains purpose (undo point before risky edits) and names the paired tool etabs_restore_checkpoint. It also states the prerequisite 'Needs a saved model.' It does not explicitly say when to prefer etabs_save_model instead, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_code_checksARead-onlyIdempotent
Run the standard post-analysis checks in one call: story drift against the allowable, torsional irregularity, soft story, weight (mass) irregularity, modal mass participation and response-spectrum base shear vs ELF. Each check reports its clause, the governing numbers and pass/fail.
| Name | Required | Description | Default |
|---|---|---|---|
| cases | No | Lateral cases/combos to check (default: every Quake, Wind and RS case). | |
| checks | No | Default: all. | |
| rs_case | No | ||
| elf_case | No | ||
| rs_target | No | ||
| modal_case | No | Modal | |
| drift_limit | No | Allowable story drift ratio Δa/h (ASCE 7-16 Table 12.12-1: 0.020 for most Risk Category I/II buildings). | |
| modal_target | No | ||
| rs_direction | No | X | |
| weight_limit | No | ||
| torsion_limits | No | ||
| soft_story_limits | No | [ratio to story above, ratio to average of 3 above]. | |
| drift_amplification | No | Cd/Ie applied to elastic drifts (1.0 for wind or drifts already amplified). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive), so the bar is lower. The description adds real value beyond them: it is a batched single-call operation and it discloses the return content per check (clause, governing numbers, pass/fail). It stops short of stating prerequisites such as requiring a completed analysis run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the action and the check inventory, with no filler. Every clause maps to an actual check or output the tool produces.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format explanation is not owed, and the description still summarizes it. For a 13-parameter, no-required-param read tool the coverage is adequate but incomplete: it doesn't say which parameters apply to which checks, that all default to sensible values, or that torsional/soft-story limits are two-element arrays.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38% across 13 parameters, so the description must carry weight, and it does partially: describing drift-vs-allowable, torsional irregularity, weight irregularity, modal mass participation and RS base shear vs ELF maps conceptually onto drift_limit, torsion_limits, weight_limit, modal_case/modal_target, and rs_case/elf_case/rs_target. However, it never names these parameters and leaves rs_direction, drift_amplification, checks and cases unaddressed, so an agent still has to read the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (run standard post-analysis checks) and enumerates the six checks, which map one-to-one onto the `checks` enum values (drift, torsion, soft_story, weight, modal_mass, rs_scaling). An agent can distinguish this from siblings like etabs_run_design or etabs_get_design_summary without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'post-analysis checks' implies the model must already have been analyzed, which is useful context, but there is no explicit when-to-use guidance, no exclusions, and no pointer to alternatives (e.g., use etabs_get_design_summary for member design results, etabs_run_analysis first). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_connectA
Connect to ETABS. Other tools connect automatically with mode 'auto', so call this only to choose a specific instance or version, to drive several ETABS instances, or to recover after ETABS was closed. Launching ETABS takes 10-30 s.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | Attach to this ETABS process id (see etabs_list_installations). | |
| mode | No | attach = use a running ETABS; start = launch a new one; auto = attach if one is running, else start. | auto |
| version | No | ETABS major version to use, e.g. 22 or 23. Default: the running one, else the newest installed. | |
| visible | No | Show the ETABS window when launching it. | |
| instance | No | Name for this connection. Use a new name (e.g. 'b') to drive a second ETABS alongside the first; it becomes the active instance. | default |
| reconnect | No | Drop the current connection first. | |
| install_dir | No | ETABS program folder, overrides 'version'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (not read-only, not idempotent, non-destructive), so the description's job is to add operational context — and it does: a 10-30 s launch latency, auto attach-else-start semantics, and the recovery use case. It does not cover return shape or failure modes (e.g. what happens if the pid is stale), but the latency warning is genuinely useful information not available anywhere else.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler: the first names the action and the exclusion rule, the second lists the three legitimate use cases, and the latency caveat is appended where it matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the annotations plus the 7 fully documented parameters mean the agent has everything required to invoke it. The only thin spot is what happens on connection failure or how long 'reconnect' blocks, which the description leaves implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter already has a self-contained description (pid cross-references etabs_list_installations, mode enumerates attach/start/auto, instance explains 'b' as a second instance). The description largely restates the schema's 'auto' semantics and adds no syntax or format detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Connect to ETABS') and immediately distinguishes itself from the ~60 sibling tools by noting they connect automatically with mode 'auto'. The agent can tell without opening a schema that this tool is the exception path, not the normal entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-call conditions: choose a specific instance or version, drive several instances, or recover after ETABS was closed. It also names the default behavior that makes this tool unnecessary in the normal case, which is exactly the when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_area_sectionC
Define a slab or wall property (Define > Section Properties > Slab/Wall Sections).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| name | Yes | ||
| material | Yes | ||
| slab_type | No | Slab | |
| thickness | Yes | Number in present units or e.g. '200 mm'. | |
| shell_type | No | ShellThin |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent mutation, so the safety profile is covered. The description adds nothing behavioral beyond the menu path: it does not say whether redefining an existing section overwrites or errors (relevant given idempotentHint=false), nor what permissions or model state are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is efficient, though the extreme brevity is arguably under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be explained, but for a 6-parameter definition tool at 17% schema coverage the description is far too thin. It omits validation rules, default behavior, and the interaction with later assign-section calls that an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (just 'thickness' documented), so the description must compensate but instead adds zero parameter detail. It never explains name, material, kind/slab_type/shell_type semantics or the units convention for thickness, leaving 5 of 6 parameters undocumented everywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Define') and resource ('slab or wall property'), and the parenthetical maps it to the concrete ETABS menu path. This implicitly separates it from etabs_define_frame_section and etabs_define_material, though it never names a sibling to disambiguate explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives. It only tells the agent that this creates a slab/wall section property, leaving the agent to infer that a section must exist before etabs_assign_section is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_combinationsA
Define load combinations (Define > Load Combinations) from load cases and other combinations, and/or generate the default design combinations for the active design codes.
| Name | Required | Description | Default |
|---|---|---|---|
| combinations | No | Combinations to create. | |
| add_default_design_combos | No | Also generate the code default design combinations for these materials. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint=false, idempotentHint=false and destructiveHint=false, so the mutation/repeatability profile is already carried structurally. The description adds limited extra behavior: it clarifies that default combos follow the 'active design codes', but says nothing about whether redefining a combo with an existing name overwrites it or duplicates it — a meaningful gap for a non-idempotent write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence covering both capabilities with no filler, redundancy, or restatement of the tool name. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and parameters are fully schema-documented. However, for a non-idempotent write tool the description omits overwrite/duplicate behavior for existing combination names and any precondition check, leaving the agent guessing about side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description maps its two sentences onto the two top-level parameters (combinations vs add_default_design_combos), which is helpful framing, but it adds no detail about structure, required fields, or the scale-factor/type semantics that the schema already defines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (define) plus resource (load combinations), and scopes the tool precisely: it creates combinations from load cases/other combinations OR generates code default design combos. The resource name distinguishes it cleanly from siblings like etabs_define_load_patterns and etabs_define_seismic_load, and the parenthetical UI path (Define > Load Combinations) removes ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'and/or' phrasing implies both modes are optional and combinable, which is genuine usage guidance, but there is no explicit when-to-use/when-not, no stated prerequisites (e.g. load cases must already exist), and no routing to alternatives such as etabs_define_load_patterns when the user actually wants patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_frame_sectionA
Define a frame section: parametric concrete/steel shapes, or a steel shape imported from an ETABS section library. Dimensions are in present length units.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| depth | No | t3: overall depth (rectangle, i_section, tube) or outside diameter (circle, pipe). | |
| shape | Yes | ||
| width | No | t2: width (rectangle, tube) or top flange width (i_section). | |
| material | Yes | Material name (see etabs_list_properties). | |
| library_file | No | from_library: section database file, e.g. 'AISC16.xml', 'Euro.xml', 'Indian.xml'. | |
| web_thickness | No | Web thickness (i_section, tube) or wall thickness (pipe). | |
| library_section | No | from_library: section name in that file, e.g. 'W14X90'. | |
| flange_thickness | No | ||
| bottom_flange_width | No | i_section only; defaults to width. | |
| bottom_flange_thickness | No | i_section only; defaults to flange_thickness. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, closed-world mutation, so the safety profile is covered. The description adds a genuinely useful behavioral fact — dimensions are interpreted in the model's present length units, coupling it to etabs_set_units — but says nothing about overwrite-on-name-collision or validation failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, with the core purpose front-loaded and the units caveat last. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter creation tool with an output schema available and annotations covering the mutation profile, the description adequately frames the two modes and the units behavior. It stops short of the prerequisites and collision semantics an agent would want before a mutating call, but nothing essential to selecting the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 73% and each dimension parameter already carries its own t2/t3 explanation; the description only adds the mode framing (which params belong to parametric vs. library shapes) and the units convention. That is real but marginal added meaning over an already well-documented schema, so baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Define a frame section') and immediately splits it into its two operational modes: parametric concrete/steel shapes versus a library-imported steel shape. That is enough to separate it from etabs_define_area_section and etabs_define_material, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two modes (parametric vs. 'from_library') are described, which implicitly tells the agent which path to take for a given need, but there is no explicit when-to-use / when-not-to-use guidance and no stated prerequisite (e.g. the material must already exist, or section must precede etabs_assign_section).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_load_patternsC
Define load patterns (Define > Load Patterns), each optionally with its linear static load case.
| Name | Required | Description | Default |
|---|---|---|---|
| patterns | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=false, destructive=false, so the safety profile is covered. The description adds genuine behavioral context by revealing that each pattern may also spawn a linear static load case, but it omits re-run/replace semantics, permission or unlock requirements, and side effects on existing patterns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clean, front-loaded sentence with no filler, mapped to the UI path. However, for a non-idempotent mutation tool it is arguably too terse — the brevity comes at the cost of missing preconditions rather than being an efficient summary of complete information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but as a write operation with no annotations covering mutation behavior in depth, the description should state preconditions (connected instance, unlocked model) and effects on existing definitions. Those are absent, and the sole top-level parameter is left undescribed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is effectively 0% — the 'patterns' array is undocumented — and the description only gestures at the optional load-case behavior. Nested fields (type, add_analysis_case) do carry inline descriptions, but the description does not clarify the required 'name', the array-of-objects structure, or the self-weight multiplier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Define load patterns') and even maps it to the ETABS UI path, which helps distinguish it from siblings like etabs_define_seismic_load, etabs_define_wind_load, and etabs_define_combinations. The clause about optionally creating a matching linear static load case adds useful scope, though it doesn't explicitly contrast with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. It doesn't mention that the model must be connected and unlocked, nor when to prefer this over the seismic/wind/combination definitions. The agent must infer all of this from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_materialA
Define a material, either from the ETABS library (region + standard + grade, the same lists as the 'Add Material' dialog) or as a custom isotropic material from E, weight and strength.
| Name | Required | Description | Default |
|---|---|---|---|
| fc | No | Concrete compressive strength f'c. | |
| fu | No | Steel/rebar tensile strength (default 1.25 fy). | |
| fy | No | Steel/rebar yield strength. | |
| name | Yes | ||
| grade | No | Library material: grade, e.g. 'Grade 50', 'C30/37'. | |
| region | No | Library material: region, e.g. 'United States', 'Europe', 'India'. | |
| standard | No | Library material: standard, e.g. 'ASTM A992', 'EN 1992-1-1'. | |
| unit_weight | No | Weight per unit volume (present units). | |
| material_type | Yes | ||
| poisson_ratio | No | ||
| elastic_modulus | No | Custom material: E (present force/length^2). | |
| thermal_coefficient | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a non-read-only, non-destructive, non-idempotent, closed-world mutation, so the safety profile is covered. The description usefully notes that library inputs mirror the 'Add Material' dialog, but it omits what happens if the material name already exists, whether overwrite/error occurs, and any permission or model-state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action, that covers both modes without redundancy. No filler and no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation with an output schema, the description covers the essential branching but is thin on preconditions, duplicate-name behavior, and where it sits in the define-then-assign workflow. Adequate as a minimum-viable definition, with clear gaps an agent would hit in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description groups parameters by creation mode (library vs custom), which clarifies intent, but the schema already labels region/standard/grade as 'Library material' and elastic_modulus as 'Custom material'. Beyond that grouping, 12 parameters at 67% coverage leave defaults and interactions (poisson_ratio, thermal_coefficient, fu default of 1.25 fy, mixing library and custom fields) unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Define a material') and, unusually, explains the two distinct creation paths: library (region + standard + grade) and custom isotropic (E, weight, strength). It does not, however, position itself against nearby siblings such as etabs_define_frame_section or etabs_define_area_section, which consume materials once defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a usable branch between library and custom input but frames this as parameter selection rather than tool-selection guidance. There is no statement of prerequisites (an open/unlocked model, units) or of when-not to call it, so an agent must infer the workflow position.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_response_spectrumC
Define an ASCE 7-16 response spectrum function and a response-spectrum load case that uses it.
| Name | Required | Description | Default |
|---|---|---|---|
| r | No | ||
| s1 | No | ||
| ss | No | ||
| tl | No | ||
| damping | No | ||
| case_name | No | RSX | |
| direction | No | U1 | |
| importance | No | ||
| modal_case | No | Modal | |
| site_class | No | D | |
| eccentricity | No | ||
| scale_factor | No | Default g·I/R in present units (from importance and r). | |
| function_name | No | ASCE7-16-RS |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so it's a non-destructive but non-idempotent mutation. The description adds nothing beyond that: no mention of prerequisites (existing modal case), side effects (creates two model objects), or what happens on re-invocation with the same case name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single efficient sentence, front-loaded with the verb and both created artifacts. No waste, though extremely sparse given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 13-parameter mutation tool with no schema descriptions, no parameter guidance in the description, and no behavioral disclosure. The presence of an output schema helps slightly, but the definition is far too thin for an agent to invoke correctly without guessing at ASCE 7-16 parameter meanings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 8% (only scale_factor has a description). With 13 parameters and near-zero schema documentation, the description must compensate but instead adds nothing—no meaning for R, Ss, S1, Tl, site_class, direction, eccentricity, case_name, or function_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (define) and two resources (ASCE 7-16 response spectrum function and a response-spectrum load case). Clearly distinct from siblings like etabs_define_seismic_load and etabs_scale_response_spectrum, though it doesn't explicitly name those relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: call this to create a response spectrum function plus load case before scaling (etabs_scale_response_spectrum) or running analysis. No explicit when/when-not guidance, prerequisites (e.g., modal case must exist), or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_seismic_loadB
Define an ASCE 7-16 equivalent-lateral-force seismic load pattern (Define > Load Patterns > Auto Lateral Load). Creates the Quake pattern and its load case.
| Name | Required | Description | Default |
|---|---|---|---|
| r | No | Response modification coefficient R. | |
| cd | No | Deflection amplification Cd. | |
| s1 | No | Mapped MCER 1-s acceleration S1 (g). | |
| ss | No | Mapped MCER short-period acceleration Ss (g). | |
| tl | No | Long-period transition TL (s). | |
| name | No | EQX | |
| omega | No | Overstrength factor Ω0. | |
| period | No | Fundamental period source. | program |
| ct_type | No | Approximate-period Ct/x set (ETABS numbering, 2 = 0.03;0.75 'all other'). | |
| top_story | No | Default: the top story. | |
| directions | No | Directions and accidental eccentricity sense. | |
| importance | No | ||
| site_class | No | D | |
| user_period | No | ||
| bottom_story | No | Default: Base. | |
| eccentricity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose mutation (readOnlyHint=false), non-idempotency, non-destructiveness, and closed-world behavior. The description adds useful side-effect context by stating it creates both the Quake pattern and its load case, but it omits permissions, prerequisites, and the consequence of repeated calls despite non-idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the core action and ETABS UI location are front-loaded, and the second sentence adds the concrete side effect of creating a pattern and load case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so return values and mutation semantics need not be repeated. However, for a 16-parameter tool with all-optional arguments, the description omits prerequisites (unlocked model, units, existing stories) and default/interaction behavior, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 69%, leaving parameters like name, importance, user_period, eccentricity, and site_class without schema descriptions. The tool description provides no parameter-level meaning, default behavior, or interaction guidance (e.g., period source vs ct_type/user_period), so it does not compensate for the uncovered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Define'), resource ('ASCE 7-16 equivalent-lateral-force seismic load pattern'), UI path, and side effect of creating the Quake pattern and load case. It is clear but does not name or distinguish itself from sibling tools like etabs_define_load_patterns, etabs_define_wind_load, or etabs_define_response_spectrum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The specific standard and load type imply the use case (defining an ASCE 7-16 ELF seismic pattern), but there is no explicit when-to-use guidance, no when-not conditions, and no mention of alternatives such as the generic load pattern or response spectrum tools. Prerequisites like an unlocked model are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_define_wind_loadA
Define an automatic wind load pattern applied to diaphragms (Define > Load Patterns > Auto Lateral Load > Wind). ASCE 7-16 is fully parameterised; other codes take their table fields via 'fields'.
| Name | Required | Description | Default |
|---|---|---|---|
| kd | No | ||
| kzt | No | ||
| code | No | Auto-wind table code suffix, e.g. 'ASCE 7-16', 'ASCE 7-22', 'Eurocode1 2005'. Other codes need 'fields'. | ASCE 7-16 |
| name | No | WX | |
| angle | No | Wind direction angle in degrees (0 = +X, 90 = +Y). | |
| cases | No | ASCE 7 wind load cases. | Create All |
| fields | No | Extra/override table fields for the chosen code (see etabs_get_table on 'Load Pattern Definitions - Auto Wind - <code>'). | |
| exposure | No | C | |
| top_story | No | ||
| leeward_cp | No | ||
| wind_speed | No | Basic wind speed V (mph for ASCE 7). | |
| gust_factor | No | ||
| windward_cp | No | ||
| bottom_story | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-destructive write (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds that it creates an automatic pattern and explains the code/fields mechanism, but does not cover auth needs, duplicate-handling, or side effects beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and the UI path, then a compact note on code parameterisation. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter write tool, the description is complete on the unique aspects (auto wind, ASCE vs other codes, UI path) and output schema covers return values. However, the low schema coverage on parameters means an agent lacks semantic detail for most inputs, leaving a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 36% (5 of 14 params). The description clarifies the relationship between 'code' and 'fields', which is useful, but leaves many parameters (kd, kzt, exposure, top_story, leeward_cp, gust_factor, windward_cp, bottom_story) without explanation in either schema or description. It only partially compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Define' and resource 'automatic wind load pattern applied to diaphragms', plus the exact UI path. This distinguishes it from sibling load-definition tools like etabs_define_seismic_load and etabs_define_load_patterns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives context for the 'code' parameter and how to handle non-ASCE codes via 'fields', but does not explicitly say when to use this tool versus alternatives such as etabs_define_seismic_load or etabs_define_load_patterns. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_delete_objectsBDestructive
Delete frames, areas or points chosen by name, by group, or the current selection.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| group | No | ||
| names | No | ||
| confirm | No | Deleting cannot be undone through the API. Ask the user first. | |
| selected | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the agent knows this is an irreversible mutation. The description adds no behavioral context beyond that — nothing about the fact that deletion cannot be undone (that lives only in the schema's confirm param), what happens on partial failure, or whether an open model/selection is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb, target objects, and targeting modes are all delivered in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with annotations covering the safety profile and an output schema covering returns, the description is minimally adequate. It omits required-session state, the confirm gate behavior, and what happens when multiple targeting parameters are supplied simultaneously.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (confirm is the sole documented parameter), so the description must compensate. It does explain the three targeting parameters (names, group, selected) and the kind values, but leaves the interplay between group/names/selected and the precedence rules undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb (Delete) and resource (frames, areas, points), and enumerates the three targeting modes. An agent can tell it apart from etabs_list_objects or etabs_select by the delete action and object kinds, though it never names a sibling alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the listing of three lookup modes (by name, by group, current selection), which tells the agent how to target objects. There is no guidance on when to prefer this over etabs_list_objects/etabs_find_objects for verification, nor any stated preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_describe_apiARead-onlyIdempotent
Show a method's exact signature (types, ByRef outputs, defaults, enum values, safety level), or list an interface's methods and sub-interfaces, or an enum's values. Reflects the connected ETABS version.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | A method path ('FrameObj.GetReleases'), an interface ('cFrameObj' or 'FrameObj') or an enum name ('eLoadPatternType'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the bar is lower. The description still adds genuine value: it discloses that output 'Reflects the connected ETABS version' (output varies with connection state) and that a method's 'safety level' is reported, which is behavioral context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence enumerating the three query modes with no filler. It is dense but every clause earns its place; slightly more structural separation of the modes could aid scanning, hence not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the safety profile. The description covers all three query modes and the version-dependence caveat, leaving only minor gaps such as behavior on an unresolved/ambiguous path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema's own path description already gives the three accepted formats with examples. The description adds little beyond restating that path may be a method, interface, or enum, so the baseline 3 for schema-carried parameters is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (show/list) against specific resources (method signature, interface methods/sub-interfaces, enum values) and enumerates what the signature output contains. An agent can immediately distinguish it from etabs_search_api and etabs_call_api without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three modes are clearly mapped to input shapes (method path vs interface vs enum), which effectively tells the agent what it will get for a given path. It stops short of naming alternatives or stating when to prefer this over etabs_search_api, so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_design_codesA
Read, list or change the design codes (Design > ... > View/Revise Preferences). 'list' returns every code this ETABS version supports for steel, concrete, shear wall, slab and composite design.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | For 'set': e.g. 'AISC 360-16', 'ACI 318-19', 'Eurocode 2-2004'. 'list' shows valid names. | |
| kind | No | For 'set'. | |
| action | No | get |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds useful context on what 'list' returns and the range of design categories, but says nothing about whether a 'set' persists to the model, whether it requires the model to be unlocked, or how it interacts with design runs. Adequate but thin beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that lead with the action triad and resource before expanding into behavior. The GUI breadcrumb wastes a few tokens but overall the text is front-loaded and efficient with no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and annotations cover the safety profile. The action semantics and supported disciplines are covered, though missing unlock/permission prerequisites for a mutating 'set' leave a small gap for a write-capable tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, with 'code' and 'kind' documented and 'action' carried by an enum. The description reinforces 'list' semantics and enumerates disciplines (steel, concrete, shear wall, slab, composite), though this enumeration actually exceeds the 'kind' enum values (steel, concrete, concrete_shell), which could mildly confuse the agent about valid inputs. It adds marginal meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb triad (Read, list, change) applied to a precise resource (design codes), and even pins the GUI location (Design > ... > View/Revise Preferences) plus the supported design disciplines. It is unambiguous what the tool governs, though it does not explicitly contrast itself with sibling tools like etabs_run_design or etabs_code_checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the action labels and notes that 'list' returns every supported code, which helps the agent pick between get/set/list. However it never states when to reach for this tool versus the many design-related siblings, nor any prerequisites for changing codes. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_design_reportB
Write an engineering summary in Markdown: model, loads, analysis status, base reactions, modal periods, drifts and the design check with the most critical members. Returns the text and the file.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Critical members to list. | |
| path | No | Write the Markdown here (default: <model>_report.md next to the model). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false but destructiveHint=false, so the agent knows this is a non-destructive write. The description adds useful context beyond the annotations: it writes a Markdown file and returns both the text and the file. However, it does not state overwrite behavior if the target file already exists, nor any required model/analysis state, which matters for a file-writing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action verb and the output format, and the content list is efficiently compressed. No filler, though the trailing 'Returns the text and the file' is somewhat redundant with an existing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and both parameters are documented in the schema. The remaining gap is operational context (preconditions such as a completed analysis/design run), which keeps this just short of full completeness for a report generator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 'top' and 'path' are already fully documented in the schema. The description's phrase 'the design check with the most critical members' loosely maps to 'top' but adds no format or default detail. Baseline 3 applies when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Write an engineering summary in Markdown') and enumerates exactly what the report contains (model, loads, analysis status, base reactions, modal periods, drifts, design check). An agent can tell it produces a document rather than raw data, but it never distinguishes itself from close siblings like etabs_get_design_summary or etabs_code_checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. analysis/design must have run first), and no mention of alternatives. With so many sibling reporting tools in the list, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_dialogsA
List or close dialogs ETABS has open. A modal dialog blocks the ETABS API, so close leftovers after etabs_menu or a design run.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Close the dialog with this title ('close' with no title closes all). | |
| action | No | list |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly=false, destructive=false, idempotent=false, but add no meaning on their own. The description supplies the key behavioral fact those annotations omit: open modal dialogs block the ETABS API, which explains why this otherwise odd tool exists and when it must be run. It does not say what closing does to unsaved state, but the non-destructive annotation covers safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the what and immediately followed by the why. No filler, no restating of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and annotations plus the description cover safety and intent for a simple 2-param tool. The only residual gap is the undocumented action enum semantics, which the description only implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the title parameter is documented ('close with no title closes all') but the action enum has no description in the schema. The description implies the list-vs-close distinction and the bulk-close case, but adds little beyond what the schema's title description already states, so it lands at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (list/close) and the resource (ETABS dialogs), which cleanly distinguishes it from every sibling. It also gives the causal motivation — a modal dialog blocks the API — so the agent understands what the tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the situations that call for it: 'close leftovers after etabs_menu or a design run.' That is a concrete when-to-use trigger tied to specific sibling tools, not vague guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_disconnectADestructive
Release the ETABS connection. ETABS keeps running unless close_etabs is true.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Save the model before exiting (only with close_etabs). | |
| confirm | No | Required when closing ETABS without saving. | |
| close_etabs | No | Also exit the ETABS application. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructiveHint=true; the description adds the crucial scope clarification that disconnecting does NOT exit ETABS by default, which meaningfully narrows the apparent blast radius. It does not disclose what happens to unsaved model state on plain disconnect or whether an active session is required, but the added context exceeds the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences, front-loaded with the primary action and followed by the one behavioral caveat that matters. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the essential default versus close behavior. It leaves minor gaps around session-state requirements and interaction with the save/confirm parameters, but is sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so save and confirm are already fully documented in the schema, and the description only echoes close_etabs. Baseline 3 is appropriate since the description adds no syntax or default details beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('Release the ETABS connection') that is unmistakably the inverse of the sibling etabs_connect, so an agent can select it without opening either schema. It stops short of naming or contrasting with siblings explicitly, keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicit usage is clear (call it to tear down a session), and the note that ETABS keeps running unless close_etabs is true gives a condition for the more aggressive variant. However, there is no explicit when-to-use/when-not guidance, no mention of prerequisites (e.g., pending jobs) or the counterpart etabs_connect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_edit_tableB
Edit a model table the way the Interactive Database editor does: read it, change/append/delete rows, then apply. Returns ETABS's import log with error and warning counts.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Apply the edits to the model. False validates and cancels (dry run). | |
| group | No | ||
| updates | No | Change fields on rows matching 'match'. | |
| table_key | Yes | An editable table key (etabs_list_tables shows editable=true). | |
| append_rows | No | New rows (field key -> value); missing fields are left blank. | |
| delete_where | No | Remove rows matching any of these field filters. | |
| replace_rows | No | Replace the entire table with these rows. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool can 'delete rows', and the schema exposes delete_where and replace_rows (a full-table overwrite), yet annotations declare destructiveHint=false, which in MCP means additive-only updates. This is a direct contradiction between the stated behavior and the structured safety signal. (The description's other useful additions, e.g. the apply/dry-run flow and the import-log return, do not offset it.)
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler; the core operation and the apply step come first. The trailing sentence about the import log is mildly redundant given an output schema exists, but the structure is otherwise tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with five edit modes, the description gives an adequate but incomplete picture: it omits the replace_rows full-table overwrite (the most destructive mode), says nothing about the editable-table prerequisite, and relies on the output schema for the return shape. Adequate minimum, with a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already carries the parameter semantics (apply dry-run, match/set, append_rows, delete_where, replace_rows). The description only maps loosely onto change/append/delete and never mentions the replace-whole-table mode at all, adding little beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Edit a model table'), enumerates the operations (read, change/append/delete rows, apply), and frames it against the Interactive Database editor workflow. It implies but never names the read-only siblings (etabs_list_tables, etabs_get_table) that an agent must choose between, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via the analogy to the Interactive Database editor and the 'then apply' workflow. There is no explicit when-to-use/when-not, no statement that table_key must be an editable table (that constraint lives only in the schema), and no routing away from etabs_get_table or etabs_call_api.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_export_modelARead-onlyIdempotent
Export the whole model as ETABS's .e2k text and return it (paged). One read gives the complete definition (stories, grids, materials, sections, objects, assignments, loads, cases), ideal for audits.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Where to write the .e2k text file (default: next to the model). | |
| offset | No | Character offset into the file, for paging. | |
| sections | No | Only return these $-sections (prefix match), e.g. ['STORIES', 'FRAME ASSIGNS', 'LOAD PATTERNS']. | |
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that the output is paged text, but stays silent on the file-write side effect implied by 'path' and on any size/latency implications of a whole-model dump.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, verb-first, with the completeness guarantee and audit use case front-loaded. No filler and no repetition of schema or annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description adequately conveys that the response is the full model definition rather than a subset. It could be slightly stronger by clarifying the file-write behavior of 'path', but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (max_chars is undocumented in the schema), so the baseline is 3. The description adds no parameter detail beyond a generic '(paged)' hint, leaving offset and the section-prefix filtering semantics to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (export), resource (whole model), and format (.e2k text), and enumerates the covered content (stories, grids, materials, sections, objects, assignments, loads, cases). It reads as the 'complete dump' counterpart to etabs_model_overview, but never names that sibling explicitly, so it doesn't earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One read gives the complete definition... ideal for audits' supplies a clear use case and signals this is the exhaustive option rather than a summary view. There is no explicit when-not or named alternative (e.g., model_overview for a quick look), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_find_objectsA
Find objects by engineering criteria: 'columns on Story3', 'beams longer than 8 m', 'members with D/C over 0.9', 'everything in this box'. Returns names usable by every other tool; can select them.
| Name | Required | Description | Default |
|---|---|---|---|
| box | No | Only objects whose centroid lies inside this box. | |
| kind | No | frame | |
| role | No | Frames only, from geometry. | |
| group | No | Only objects assigned to this group. | |
| limit | No | ||
| select | No | Also select the matches in ETABS (clears the current selection). | |
| stories | No | ||
| sections | No | Frame sections or area properties. | |
| max_ratio | No | ||
| min_ratio | No | Frames whose design D/C ≥ this (needs design results). | |
| max_length | No | ||
| min_length | No | Frames at least this long (number in present units or e.g. '8 m'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give a thin safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description carries extra weight. It discloses the two non-obvious behaviors: results are reusable object names, and the call can mutate selection state ('can select them'), which explains why readOnlyHint is false for a 'find' operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence of purpose plus examples, followed by one clause on output and side effects. The purpose and scope are front-loaded and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers the primary use cases, output reusability and the selection side effect. With 12 parameters at 58% documented coverage, a few gaps remain (limit semantics, kind enum behavior), but nothing critical for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 58%, with kind, limit, max_ratio and stories undocumented in the schema. The description partially compensates by mapping examples to those params ('columns on Story3' → role+stories, 'longer than 8 m' → min_length, 'D/C over 0.9' → max_ratio, 'this box' → box), but leaves units formatting, default limit and pagination implications unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (find objects) and makes it concrete with four engineering-criteria examples (story, length, D/C, bounding box). It distinguishes itself from etabs_list_objects by being criteria-driven rather than a plain enumeration, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries imply when to reach for this tool (attribute/geometry/ratio-based search), but there is no explicit when-to-use-vs-alternative guidance. It does not say when to prefer this over etabs_list_objects or etabs_select, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_generate_buildingADestructive
Build a complete regular building in one call: grids, stories, materials, sections, columns, beams, braces or shear walls (with pier labels), slabs, fixed supports, a rigid diaphragm, SDL/LL patterns with slab loads, and default design combinations. Follow with lateral loads (etabs_define_seismic_load ...), then analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | Live area load in present force/length² units. | |
| units | No | kN_m_C | |
| bays_x | Yes | Bay widths along X, e.g. ['8 m', '8 m', '6 m']. | |
| bays_y | Yes | Bay widths along Y. | |
| system | No | Lateral system. Braces/walls go in the end bays of every perimeter frame line. | steel_moment |
| confirm | No | Required when the open model has objects: it is replaced. | |
| beam_size | No | Concrete beam [depth, width]. | |
| diaphragm | No | ||
| column_size | No | Concrete column [depth, width]. | |
| beam_section | No | Steel: AISC16 shape (default W18X35). | |
| brace_section | No | Steel braced: AISC16 shape (default W10X33). | |
| story_heights | Yes | Story heights bottom-up, e.g. ['4.5 m', '3.5 m', '3.5 m']. | |
| column_section | No | Steel: AISC16 shape (default W14X90). Concrete: ignored, use column_size. | |
| slab_thickness | No | 200 mm | |
| wall_thickness | No | 300 mm | |
| superimposed_dead | No | SDL area load in present force/length² units (e.g. 1.5 for kN/m²). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the agent knows this is a mutating, non-reversible operation. The description adds the sequencing context (lateral loads then analysis) but does not itself warn that an open model is replaced or that confirm is required — that critical behavior lives only in the confirm schema description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the complete inventory of what gets built, followed by the next-step guidance. The long enumeration is dense but earns its place for a tool that performs roughly a dozen operations; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description need not explain return values. It covers scope and workflow well; the only real gap is that the model-replacement/confirm behavior is not surfaced in the description itself, though it is captured in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so most parameters are documented in the schema, establishing a baseline of 3. The description enumerates output categories (grids, slabs, piers) but adds no syntax or format detail beyond what the schema already provides for bays, story_heights, and section inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Build') and resource ('a complete regular building'), then enumerates exactly what is created: grids, stories, materials, sections, frames, braces/shear walls, slabs, supports, diaphragm, load patterns, and combinations. This distinguishes it cleanly from the granular siblings like etabs_new_model, etabs_set_stories, etabs_add_frames, and etabs_define_combinations that it subsumes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear forward workflow ('Follow with lateral loads (etabs_define_seismic_load ...), then analysis'), telling the agent what to call next. It does not explicitly state when to prefer this one-shot generator over the granular building tools, so the boundary against those siblings is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_concrete_designARead-onlyIdempotent
Concrete frame design results (after etabs_run_design(kind='concrete')): required longitudinal and shear reinforcement for beams, PMM ratios and areas for columns, joint shear and beam/column capacity ratios. Areas are in present units.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| names | No | Only these frames. | |
| element | No | beam | |
| envelope | No | One row per frame (governing station) instead of every station. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, non-destructive profile, so the bar is lower. The description adds real context beyond that: the hard dependency on a prior run_design call and the unit convention ('Areas are in present units'), which an agent cannot get from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that front-load the resource and prerequisite before the output inventory; every clause (element types, result kinds, unit note) carries information and none is redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format detail is not required, and annotations cover the safety profile; the description still supplies the prerequisite and unit convention. The only notable gap is pagination/limit behavior for a tool that can return up to 20000 rows, but overall it is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (limit and element lack descriptions), so the description has some compensating duty. It implicitly maps the element enum values by listing beam, column and joint outputs, and clarifies units, but says nothing about limit, names, or envelope semantics, so it only partially covers the gap. Baseline 3 for this coverage level is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('get concrete frame design results') and enumerates the payload: beam longitudinal/shear reinforcement, column PMM ratios and areas, joint shear, and capacity ratios. The 'concrete frame' qualifier cleanly separates it from the sibling wall/slab design getters, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite that results are only available 'after etabs_run_design(kind='concrete')', which is the key usage condition. It does not, however, name alternatives such as etabs_get_design_summary or etabs_get_wall_design or state when-not to use it, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_design_summaryBRead-onlyIdempotent
Design results per member: steel demand/capacity ratios with governing combo, or concrete required reinforcement for beams and columns. Worst members first.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| only_failing | No | Steel: only members with ratio > 1 or errors. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the burden is reduced. The description does add genuine behavioral context beyond annotations: results are ordered 'worst members first' and include the governing combo. It does not mention pagination or how 'worst' is defined, so it adds value but not richly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the core purpose and orders the two output modes clearly, ending with the ordering behavior. No filler; the only slight shortfall is that key routing context is absent rather than the text being poorly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value description is largely covered and the description need not explain the response shape. However, for a results tool sitting among get_results, get_concrete_design, get_wall_design, and design_report, the description omits which one to pick and whether design must have been run, leaving a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with 'limit' undocumented in both places. The description partially compensates by clarifying the 'kind' branch (steel ratios vs. concrete reinforcement) and hinting at result content, but it says nothing about limit/truncation semantics. Baseline 3 fits: it lifts the enum meaning but leaves one parameter opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Design results per member') and enumerates exactly what is returned for each kind: steel D/C ratios with governing combo or concrete required reinforcement. It is a clear, self-contained statement of purpose, though it never distinguishes itself from nearby siblings like etabs_get_concrete_design, etabs_get_results, or etabs_design_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisite stated (e.g., that a design must be run first via etabs_run_design), and no mention of alternative tools. The only implied usage is the steel/concrete branch, which is really a parameter choice rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_resultsARead-onlyIdempotent
Read analysis results the way they appear in ETABS tables: base reactions, story drifts and forces, joint displacements/reactions, modal periods and mass ratios, element forces, piers and spandrels. For any other result table use etabs_get_table.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| limit | No | ||
| where | No | Row filter, e.g. {'Story': 'Story2'} or {'OutputCase': 'Dead'}. | |
| offset | No | ||
| result | Yes | Which result table to read. | |
| load_cases | No | Load cases to include. Omit both lists for every case and combination. | |
| load_combinations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds scope (which tables) but says nothing about pagination defaults, filtering behavior via 'where,' or the effect of limit/offset, which is the remaining behavioral gap. With annotations carrying the load, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and the escape hatch to the sibling tool. The long enumeration of result categories is justified but slightly dense; otherwise no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the core selection question (which tool / which result) is answered. Gaps remain around pagination and load-case vs load-combination semantics for a 7-parameter tool, but the essential call guidance is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 43% and the description does not cover group, limit, offset, load_cases, or load_combinations behavior. It does help frame the 'result' parameter by enumerating the result categories, and the 'where' filter has its own schema example, so there is marginal added value, but the low coverage is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read analysis results') and enumerates the concrete result categories it covers (base reactions, story drifts, joint displacements/reactions, modal periods, element forces, piers/spandrels). It also names the differentiating sibling (etabs_get_table) so the agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use this for the listed result tables, and 'For any other result table use etabs_get_table.' The when-to-use and the alternative are both stated directly with a clear selecting condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_slab_designARead-onlyIdempotent
Concrete slab design results (after etabs_run_design(kind='concrete_slab')): design-strip flexure and shear reinforcement, or punching shear checks at columns, worst first.
| Name | Required | Description | Default |
|---|---|---|---|
| part | No | punching | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent profile, so the description's job is lighter. It adds a genuinely useful behavioral trait not in the annotations: results are returned 'worst first'. It does not describe how the limit/pagination interacts with that ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the resource, then the prerequisite, then the returned content. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be documented here. The prerequisite, the two result branches, and the ordering are all covered; only the limit parameter is thin, which is minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameters. It implicitly maps the two result categories to part='strips' vs part='punching' (enum values are never quoted), but 'limit' is completely unexplained. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (concrete slab design results) and enumerates the two result categories it returns: design-strip flexure/shear reinforcement and punching shear checks at columns. This clearly separates it from etabs_get_wall_design and etabs_get_concrete_design, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite: results are available 'after etabs_run_design(kind="concrete_slab")', which tells the agent when the tool is valid. It does not, however, state when to prefer this over etabs_get_concrete_design or etabs_get_design_summary, so the routing guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_storiesBRead-onlyIdempotent
Story table, top story first: name, elevation, height, master/similar settings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-openWorld, so the safety profile is covered. The description adds one genuinely useful behavioral detail beyond that – the ordering ('top story first') – but says nothing about auth/connection requirements or freshness of the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact fragment with zero filler, and the key ordering detail is front-loaded. It is efficient, though the fragmentary phrasing reads more like a schema note than a sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is trivial (no inputs) and an output schema exists, so the definition needn't document return values. The description supplies the one piece of information the structured fields lack – result ordering – for a simple, adequately covered definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for a zero-parameter tool applies. The listed fields (name, elevation, height, master/similar settings) describe output, not inputs, so they add no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (story table) and its content precisely, and the 'get' name plus 'table' framing make clear it is a read of existing stories, implicitly distinguishing it from the setter sibling etabs_set_stories. It does not explicitly name an alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus related introspection tools such as etabs_model_overview, etabs_list_objects, or etabs_list_tables, nor any stated preconditions (e.g. a model must be open/connected). Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_tableBRead-onlyIdempotent
Read any ETABS database table as rows (Display > Show Tables). Values with units are in present units.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Only objects in this group ('' = all). | |
| limit | No | ||
| where | No | Keep rows whose fields equal these values, e.g. {'Story': 'Story3'}. | |
| fields | No | Only these field keys (default: all). | |
| offset | No | ||
| numeric | No | Convert fields that carry units to numbers. | |
| table_key | Yes | Exact table key from etabs_list_tables, e.g. 'Story Drifts' or 'Frame Assignments - Section Properties'. | |
| load_cases | No | Result tables: load cases to show. Omit both lists for all cases and combinations. | |
| load_combinations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value with the unit-handling rule ('Values with units are in present units'), but says nothing about row limits, pagination, or the cost of large table reads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler and the core purpose stated first. It is arguably too terse for a 9-parameter tool, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover safety. However, for a 9-parameter table reader with a 20,000-row cap and pagination params, the description omits practical caveats (large reads, filtering strategy) that an agent would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so most parameters (table_key, where, fields, numeric, load_cases, group) are documented in the schema itself. The description adds only the units note, which loosely relates to the 'numeric' flag but does not explain it or the limit/offset behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read any ETABS database table as rows', which clearly separates it from list/edit siblings like etabs_list_tables and etabs_edit_table. It does not explicitly name the sibling that produces the required table_key, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and names no alternative. The UI anchor '(Display > Show Tables)' hints at context but does not tell an agent when to prefer this over etabs_list_tables, etabs_get_results, or etabs_list_objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_get_wall_designARead-onlyIdempotent
Shear wall design results: piers (reinforcing ratio, D/C, boundary zones, messages) or spandrels (flexural and shear reinforcement), worst first. Run etabs_run_shear_wall_design first.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | pier | |
| label | No | ||
| limit | No | ||
| story | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral value beyond them: results are ordered 'worst first' and the pier payload includes messages and boundary zones while spandrels include flexural and shear reinforcement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler. The resource and its contents lead, and the prerequisite is a tight trailing clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the prerequisite plus result-family split covers the core use. The gap is the unexplained filter parameters (label, story, limit), which leaves an agent guessing at how to narrow a result set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for four parameters. The description explains the 'kind' enum by contrast (piers vs spandrels) but says nothing about 'label', 'story', or 'limit', so most of the filtering surface must be inferred from bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (shear wall design results) and enumerates the two result families with their payloads. 'Wall design' cleanly separates it from siblings like etabs_get_slab_design, etabs_get_concrete_design, and etabs_get_design_summary without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite: 'Run etabs_run_shear_wall_design first,' which tells the agent when this tool is callable and prevents an empty-result call. It does not, however, state when to prefer this over the other design-result siblings or what happens if the design has not been run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_instancesA
List the ETABS instances this server drives, switch which one every other tool acts on, or remove one. Typical use: compare two design options side by side, or copy data from one model into another.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Instance for 'use' or 'remove'. | |
| action | No | list | |
| confirm | No | ||
| close_etabs | No | 'remove' only: also exit that ETABS (needs confirm). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, and non-idempotent behavior, but the description adds the crucial global-state disclosure that switching changes 'which one every other tool acts on' — a side effect no annotation conveys. It stops short of describing what happens to the previously active instance or the confirm/close_etabs semantics (those live in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The operational scope is front-loaded in sentence one and the motivating use case follows in sentence two.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers all three action modes plus their motivation. The only gap is the safety sequence around 'remove' (confirm plus close_etabs), which is split off into the schema rather than surfaced in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: name and close_etabs carry descriptions, while action and confirm do not. The description supplies the intent behind 'use' (retargeting every other tool), but adds no syntax or constraint detail for confirm or for removal of the active instance, so it only marginally compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states three specific verbs (list / switch / remove) over a named resource (the ETABS instances this server drives) and ties them to the action enum. It also implicitly separates itself from neighbors like etabs_list_installations and etabs_connect by scoping to instances this server manages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Typical use' sentence gives concrete scenarios (side-by-side comparison, copying data between models), which implies when the tool is relevant. However, it never says when NOT to use it, nor does it route the agent to alternatives such as etabs_connect, etabs_disconnect, or etabs_list_installations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_job_statusARead-onlyIdempotent
Status of a background job (analysis or design): running / done / failed, elapsed time, the tail of the ETABS analysis log while it runs, and the full result once done. Never blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | Job id; omit for the most recent job. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the extra credit goes to non-obvious behavior: non-blocking execution ('Never blocks'), the state machine (running/done/failed), elapsed time, and the log tail only while running. The return details are somewhat redundant with the output schema, keeping this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core purpose (job status) and then lists the supporting details. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be restated, yet the description nonetheless sketches the result shape and the non-blocking contract, making it self-sufficient for calling the tool. The only gap is the lack of explicit routing against etabs_job_wait and etabs_analysis_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single job_id parameter is documented there, including 'omit for the most recent job.' The description adds nothing about job_id, so the baseline 3 for schema-carried semantics is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Status of a background job') and enumerates the job types and states it reports. The closing 'Never blocks' implicitly distinguishes it from the blocking sibling etabs_job_wait, so an agent can tell the two apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is a non-blocking poll of a job it started, and 'Never blocks' hints at a contrast with etabs_job_wait. However, it never names the alternative or states explicitly when to poll versus wait, so the routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_job_waitARead-onlyIdempotent
Wait for a background job to finish, up to timeout_seconds, then report it (same shape as etabs_job_status). Call again if it is still running.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | Job id; omit for the most recent job. | |
| timeout_seconds | No | Give up waiting after this long (the job keeps running). Keep it under your client's tool timeout. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds the behavior the annotations cannot express: this call can return before the job completes and must be re-issued, and the wait is bounded by timeout_seconds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action and the retry instruction front-loaded. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description correctly does not enumerate return values and instead points at etabs_job_status for the shape, which is enough for a zero-required-parameter tool. The only small gap is not stating when to prefer this over polling etabs_job_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains job_id defaulting to the most recent job and timeout_seconds semantics including the max of 3600. The description's mention of timeout_seconds adds no detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (wait) and resource (background job), plus the blocking scope ('up to timeout_seconds'). It also anchors itself to a known sibling by noting the result has the same shape as etabs_job_status, so an agent can place it precisely among the job tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call again if it is still running' gives explicit follow-up guidance for the timeout case, which is the main usage decision here. It implies but never explicitly contrasts with etabs_job_status (poll now vs. block), which is the one alternative an agent might weigh, so it stops short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_list_checkpointsARead-onlyIdempotent
Checkpoints saved for the open model, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description contributes one behavioral detail beyond structured data: results are returned newest first, which affects how the agent consumes the list. It does not mention pagination or list size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource and its ordering front-loaded. Nothing is wasted and nothing extraneous is added.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and there are no parameters or annotations gaps to compensate for. The only omission is any hint of list size or pagination, which keeps it just short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter syntax for the description to clarify, and the schema is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (checkpoints) scoped to the open model, and adds the ordering. It implicitly distinguishes itself from etabs_checkpoint and etabs_restore_checkpoint by being the read/list variant, though it does not name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no named alternatives. The agent must infer from the name alone that this is the read counterpart to etabs_checkpoint and etabs_restore_checkpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_list_installationsBRead-onlyIdempotent
List ETABS installations on this machine (v22+ are supported) and ETABS instances that are running now.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered structurally. The description adds the local-machine scope and the v22+ support constraint, which is real context, but says nothing about how this relates to etabs_instances or what discovery enables downstream.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the primary resource front-loaded and no filler. The two-headed scope (installations and running instances) is slightly denser than ideal but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. The remaining gap is routing: with etabs_instances and etabs_status among the siblings, an agent cannot tell from this description alone which discovery tool to call, and the description does not close that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus two concrete resources (ETABS installations on this machine, and currently running ETABS instances), with a version-support qualifier. It does not, however, distinguish itself from the sibling etabs_instances, which appears to cover overlapping ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given: nothing says this is a discovery/pre-flight step before etabs_connect, and no alternative is named for the 'running instances' half even though etabs_instances exists as an obvious sibling. Usage can only be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_list_load_definitionsBRead-onlyIdempotent
Load patterns (with type and self-weight multiplier), load cases (with type) and combinations (with their cases and scale factors).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only what data is returned (e.g., self-weight multiplier, scale factors), which is output-schema territory. It does not disclose any additional behavioral traits like authentication requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence that front-loads the main resource (load patterns) and lists the other returned categories. Every phrase adds specific detail without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, rich annotations, and an output schema, the description is nearly complete. It adequately conveys what categories of load definitions are returned. A minor gap is the lack of any context about whether it operates on the currently connected model, but this is not critical for a read-only list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document. Per the scoring rule, a zero-parameter tool receives a baseline of 4. The description cannot add meaning beyond an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the components of load definitions (patterns, cases, combinations) but never states an explicit verb such as 'list' or 'retrieve'. It relies on the tool name to convey the listing action. The resource is clear, but the purpose is only implied rather than stated directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like etabs_define_load_patterns or etabs_define_combinations. No prerequisites, conditions, or exclusions are mentioned. The agent must infer its usage entirely from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_list_objectsBRead-onlyIdempotent
List frames, areas or points with their geometry (in present units), sections and stories. ETABS 'name' is the unique name used by every API call; 'label' is what the GUI shows per story.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| story | No | Only objects on this story. | |
| offset | No | ||
| include_labels | No | Add the label and story of each object (one extra call per object). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds that geometry is reported in present units and clarifies that 'name' is the identifier every API call expects while 'label' is GUI display text — genuinely useful behavior context. It says nothing about pagination or truncation behavior, which matters for a list operation with a default limit of 200.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core listing behavior is front-loaded ahead of the identifier-clarification note. Efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary. However, for a list tool with a default limit of 200 and a 5000 maximum, the absence of any note about result truncation or paging leaves a real gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%: 'kind', 'limit' and 'offset' have no descriptions. The description partially compensates by enumerating the object kinds ('frames, areas or points') that map to the kind enum, but it adds nothing about limit/offset paging semantics. Roughly a baseline-plus score given the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and the resource (frames, areas, points) plus what is returned (geometry in present units, sections, stories). The addition of the name/label distinction sharpens what the tool is for. It does not, however, distinguish itself from nearby siblings such as etabs_find_objects or etabs_model_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The name/label note implies the tool is the way to obtain API identifiers, but the agent must infer that itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_list_propertiesBRead-onlyIdempotent
List materials (with type), frame sections (with shape and dimensions in present units) and area properties (slabs, decks, walls).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful scope detail (types, shape and dimensions in present units, area property categories), but does not go beyond that to explain behavior such as model-connection requirements or result completeness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized for a simple listing tool, though the flat list format is minimal rather than highly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description names the resources and what detail they carry, and annotations plus an output schema cover safety and return values. However, it omits the only input parameter's purpose and any routing guidance relative to sibling list tools, leaving clear gaps for an agent deciding when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to the enum values by explaining what materials, frame sections, and area properties include, but never mentions the `kind` parameter, its filtering role, or the default `all` value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and three concrete resources (materials, frame sections, area properties) with useful detail about what each contains. It does not explicitly differentiate itself from sibling list tools such as etabs_list_objects or etabs_list_tables, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, prerequisites, or alternatives. An agent must infer that this tool is for inspecting already-defined material/section/area properties rather than objects or tables.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_list_tablesARead-onlyIdempotent
List ETABS database tables (definitions, assignments, analysis and design results), with whether each has data and whether it can be edited. Result tables appear after analysis/design.
| Name | Required | Description | Default |
|---|---|---|---|
| contains | No | Case-insensitive filter on the table key, e.g. 'drift', 'frame assign', 'material'. | |
| include_empty | No | Include tables with no data in the current model. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description goes beyond them by disclosing per-table metadata in the result (has data, is editable) and the pre-condition that result tables only appear after analysis/design runs — genuinely useful context for interpreting output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core purpose is front-loaded and the timing caveat follows immediately. Every clause carries information about scope or output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only listing tool with an output schema and full annotation coverage, the description supplies enough to call it correctly and understand the result. Minor gap: no mention of result-set size, ordering, or how table keys map to the 'contains' filter examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('contains' filter and 'include_empty') fully documented in the schema itself, so the baseline is 3. The description adds nothing about filtering semantics or defaults beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List ETABS database tables') and enumerates the table categories covered (definitions, assignments, analysis and design results), which cleanly separates it from siblings like etabs_list_objects or etabs_list_properties. It never names a sibling or an alternative, so the distinction is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that 'Result tables appear after analysis/design' gives useful timing context for when results-bearing tables become available. However, it never states when to reach for this tool versus etabs_get_table (read a specific table) or etabs_list_properties, and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_model_overviewARead-onlyIdempotent
One-call summary of the open model: file, version, units, lock state, object counts, stories, load patterns/cases/combinations, materials, sections and groups. Start every task with this.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, and openWorld=false, so the safety and side-effect profile is fully covered elsewhere. The description adds only the 'one-call' framing (single round trip instead of several list calls), with no mention of model-size limits, cost, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the payload enumeration first, the routing instruction second. The comma-delimited item list is dense but each item is meaningful content rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no inputs, full annotation coverage, and an output schema present, the description does not need to document return structure. It still helpfully pre-announces the categories returned, which is what an agent needs to decide whether this single call substitutes for several list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs, and the schema is empty as expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('One-call summary') and resource ('the open model'), then enumerates exactly what the summary contains (file, version, units, lock state, object counts, stories, load definitions, materials, sections, groups). This clearly separates it from narrower siblings like etabs_status or etabs_list_objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit directive: 'Start every task with this,' which tells the agent when to call it relative to the whole 60+ sibling set. It does not name a specific alternative or state exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_new_modelADestructive
Start a new model (replaces the open one). Lengths are in the chosen units.
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | Units for the new model. | kN_m_C |
| confirm | No | Required when the current model has objects: it is replaced without saving. | |
| template | No | blank = empty model; grid_only = grids + stories; steel_deck = grids, stories and a steel floor system. | grid_only |
| spacing_x | No | Number in the new model's units or e.g. '6 m'. | |
| spacing_y | No | Number in the new model's units or e.g. '6 m'. | |
| grid_lines_x | No | ||
| grid_lines_y | No | ||
| number_of_stories | No | ||
| bottom_story_height | No | Number in the new model's units or e.g. '6 m'. | |
| typical_story_height | No | Number in the new model's units or e.g. '6 m'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description supplies the missing target of that destruction — the currently open model — and the schema-backed confirm parameter discloses that unsaved work is lost. That is real added context beyond the generic hint, though error behavior and connection requirements remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with zero padding: the action and its destructive side-effect come first, then the unit convention. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich annotation set, a full output schema, and template/confirm semantics documented in the schema, the description only needs to carry the destructive scope and unit convention — both are present. Minor gaps are prerequisites and failure modes, which are not essential here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is a moderate 70%, and the description contributes one cross-cutting rule ('Lengths are in the chosen units') that disambiguates the numeric-or-string spacing/height inputs. The undocumented grid_lines_x/y and number_of_stories parameters receive no explanation anywhere, so it does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
State a specific verb and resource ('Start a new model') and the parenthetical 'replaces the open one' distinguishes it from etabs_open_model. It does not, however, distinguish itself from the sibling etabs_generate_building, which also creates a model, so the differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers you call this when you want a fresh model. There is no explicit when-to-use vs etabs_generate_building, no stated prerequisite (e.g. an active connection/instance), and no guidance on the confirm gate beyond the schema text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_open_modelADestructive
Open an existing ETABS model file (.EDB, or an importable .e2k text file). Replaces the open model.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of an .EDB (or importable .e2k/.$et) file. | |
| confirm | No | Required when the current model has objects: it is closed without saving. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. 'Replaces the open model' reinforces the mutation but does not disclose that unsaved work is discarded or that the model is closed without saving, which is the actual destructive consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action and the destructive consequence front-loaded. No filler or restated name/title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the schema carries the confirm semantics. The only untold piece an agent might want is the connection prerequisite, which is minor for this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both path and confirm are fully documented in the schema, including the data-loss condition on confirm. The description's mention of file extensions only duplicates what the path schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Open) and resource (existing ETABS model file) with the accepted file formats. 'Existing' implicitly contrasts with the sibling etabs_new_model, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is how you load a pre-existing model rather than build one. There is no explicit when-to-use, no prerequisite stating a connection must be established first, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_refresh_viewA
Redraw the ETABS model views (and optionally zoom to fit) after model changes made through the API.
| Name | Required | Description | Default |
|---|---|---|---|
| zoom_to_fit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false and destructiveHint=false, the description adds the context that this is a post-mutation UI sync ('after model changes made through the API'), explaining why it is not a read-only call. It does not explain why idempotentHint=false (presumably the zoom_to_fit toggle) or what state is affected, so it only partially earns credit beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words, and the core action is front-loaded before the optional modifier and the trigger condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter UI-sync tool with annotations and an output schema present, the description covers what it does, when to call it, and the one option. A note on whether it must precede screenshot/render_view calls would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter and the description explicitly names it as an option ('and optionally zoom to fit'), clarifying that the view redraw happens regardless while the zoom is conditional. It does not state the default (true), which the schema carries, nor any side effect of zooming.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Redraw the ETABS model views') plus an optional mode ('zoom to fit'), which is more specific than the title. It partially distinguishes itself from UI-adjacent siblings like etabs_render_view and etabs_screenshot, but does not explicitly say how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'after model changes made through the API' gives a clear trigger condition, which is genuinely useful timing guidance. However, it never states when *not* to call it, nor names an alternative such as etabs_render_view for fresh renders, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_render_viewARead-onlyIdempotent
Render the model offscreen from its data: any angle, deformed shape of any case, members coloured by design ratio, displacement, section or storey. Works with ETABS hidden and never takes focus. Use it to look at what you built and at results the ETABS window cannot be switched to through the API.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | iso | |
| theme | No | dark | |
| width | No | ||
| height | No | ||
| azimuth | No | Override the camera azimuth in degrees. | |
| stories | No | Only draw these stories. | |
| color_by | No | design_ratio needs a design run; displacement needs deformed_case. | none |
| elevation | No | Override the camera elevation in degrees. | |
| highlight | No | Frame names to emphasise (e.g. from etabs_find_objects). | |
| show_slabs | No | ||
| deformed_case | No | Load case or combination whose deflected shape to draw. | |
| deformed_scale | No | Displacement multiplier; omit for automatic (largest deflection ≈ 4% of the model height). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it renders offscreen, works with ETABS hidden, and never steals focus — operationally important for an agent driving an unattended instance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and capability list, then the operational caveat and the use case. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say what a render call produces (image path, bytes, saved file), and it does not — a meaningful omission for a tool whose entire output is an artifact. Combined with partial parameter coverage and no mention of limits, it is adequate but leaves an agent guessing about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 58% across 12 parameters, so the description should compensate more than it does. It conveys the meaning of the colour_by modes and the deformed-shape input, but leaves width/height/theme/stories/highlight/show_slabs to the schema, and the prerequisite notes ('design_ratio needs a design run') live in the schema, not the prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Render the model offscreen from its data') and enumerates what can be varied: angle, deformed shape, and colouring by design ratio/displacement/section/storey. It implicitly separates itself from the window-capture sibling by stressing offscreen rendering from data, but never names etabs_screenshot explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to look at what you built and at results the ETABS window cannot be switched to through the API' gives a use case, but there is no when-not guidance and no explicit routing against the closest alternative, etabs_screenshot (or etabs_refresh_view). The usage is implied rather than contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_restore_checkpointBDestructive
Roll the model back to a checkpoint. The model keeps its original file name.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Restoring replaces the current model state. Ask the user first. | |
| checkpoint | Yes | Checkpoint file name or label from etabs_list_checkpoints. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond the annotations: the model retains its original file name after the rollback. It does not, however, discuss irreversibility of the overwritten state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the key side effect. Nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema plus annotations cover the confirm/destructive aspects. The description is still thin on the surrounding workflow (how to discover checkpoints, whether the current state is recoverable), but it is serviceable for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented (checkpoint source, confirm's user-approval warning), so the schema carries parameter semantics fully. The description adds no parameter-level detail, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Roll the model back to a checkpoint.' An agent can distinguish it from the sibling etabs_checkpoint (which presumably creates one), though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no pointer to etabs_list_checkpoints for obtaining valid checkpoint names (that link appears only in the schema). Nothing tells the agent what conditions make restoring appropriate versus creating a new checkpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_run_analysisA
Run the analysis (Analyze > Run Analysis). ETABS needs a saved model, saves it again before running, and locks the model afterwards. Large models can take minutes: use background=true to avoid client timeouts.
| Name | Required | Description | Default |
|---|---|---|---|
| cases | No | Load cases to run (default: all). | |
| save_as | No | Save to this .EDB path first. Required for a never-saved model. | |
| background | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses significant side effects beyond the annotations: the model is re-saved before running and locked afterwards, and large runs can take minutes. These mutation/locking traits are exactly the behavioral context annotations (readOnlyHint=false, destructiveHint=false) do not convey, and they are stated plainly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then prerequisites/side effects, then the timeout tip. No filler and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, the save/lock side effects, and the timeout strategy; return values are handled by the existing output schema, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters are documented in the schema itself, so the baseline is 3. The description's background=true tip largely repeats the schema's own 'for big models or clients with short tool timeouts' wording and adds no new syntax or constraints for cases/save_as.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run the analysis') with a UI mapping ('Analyze > Run Analysis'), making it unambiguously distinct from siblings like etabs_run_design or etabs_analysis_status. An agent knows exactly what operation this performs without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('ETABS needs a saved model') and a conditional recommendation ('use background=true to avoid client timeouts' for large models). It does not explicitly contrast against etabs_run_design or explain when NOT to run analysis, but the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_run_designA
Run design (Design > ... > Start Design/Check) with the model's current design codes and preferences. Needs analysis results. Steel and concrete return a member summary, worst first.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Shear wall design cannot be started through the ETABS API; read its results with etabs_get_table. | |
| background | No | Run as a background job (see etabs_job_wait). | |
| summary_limit | No | Members to return in the summary, worst first. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-read-only, non-idempotent, non-destructive action with no open-world side effects. The description adds behavior beyond that: the analysis prerequisite and the fact that steel/concrete return a member summary "worst first." It stops short of saying what other kinds return or whether the run is long/heavy enough to warrant the background flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and its exact menu location, then prerequisites, then return behavior. No padding; the only slight redundancy is restating "worst first" that also appears in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still covers the key call-enabling facts: required prior step, design-code context, and summary output shape. It is essentially complete for an action tool, with only the kind-specific return differences unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents kind, background, and summary_limit in detail. The description's "worst first" note echoes the summary_limit schema text rather than adding new semantics, so it does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Run design") and pins it to the exact UI path (Design > ... > Start Design/Check), so the agent knows exactly which operation fires. It does not explicitly contrast itself with the sibling etabs_run_analysis or etabs_run_shear_wall_design, leaving that differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Needs analysis results" is a real precondition that tells the agent not to call this before analysis, which is useful sequencing guidance. However, it never names the alternative design entry points (e.g., etabs_run_shear_wall_design) or states when to prefer this over the analysis/get-results flow, so usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_run_shear_wall_designA
Run shear wall design (Design > Shear Wall Design > Start Design/Check) and return pier and spandrel results. The ETABS API has no call for this, so the server invokes the menu command through Windows UI Automation; ETABS must be visible. Walls must carry pier/spandrel labels (etabs_assign_label).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Pier/spandrel rows to return, worst first. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the generic non-readOnly/non-destructive profile; the description adds the genuinely important hidden behavior that no API call exists and the server drives the operation through Windows UI Automation, requiring a visible ETABS window. It stops short of disclosing whether design results are written into the model or whether the call blocks for a long-running design.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, front-loaded with purpose before implementation caveat and prerequisite. The menu path is compact and useful for cross-referencing etabs_menu.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the description covers the unusual invocation mechanism and prerequisites. It could still note the failure mode when pier/spandrel labels are absent or that the run may take time, but what is there is sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Pier/spandrel rows to return, worst first.'), so the schema already carries the semantics. The description adds nothing about limit, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Run shear wall design') and specifies the artifact returned ('pier and spandrel results'), plus the exact UI path (Design > Shear Wall Design > Start Design/Check). This cleanly separates it from siblings like etabs_run_design (general design) and etabs_get_wall_design (retrieving existing results).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear precondition chain: ETABS must be visible, and walls must already carry pier/spandrel labels assigned via etabs_assign_label. It does not, however, explicitly state when to prefer this over etabs_run_design or etabs_get_wall_design, so the alternative-selection guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_save_modelA
Save the model. A new (untitled) model needs a path. Analysis also requires a saved model.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Save as this .EDB path. Omit to save to the current file. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the safety picture is covered. The description usefully adds the prerequisite semantics (path needed for untitled models, save required before analysis), but says nothing about overwrite behavior for an existing path, which is the main remaining behavioral unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler, purpose front-loaded and the two prerequisite facts following in priority order. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage, an output schema, and annotations, the description covers purpose and prerequisites adequately. The only meaningful gap is any disclosure of overwrite/side-effect behavior, which is minor given the annotation set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself documents that omitting path saves to the current file. The description's note that a new untitled model needs a path adds complementary meaning, but it is a thin addition over an already well-documented single parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Save the model" states a specific verb and resource, and the verb naturally separates it from siblings like etabs_open_model and etabs_new_model. It stops short of explicitly naming those siblings or clarifying what 'save' writes over, so it lands just below the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives real conditional context: a new untitled model requires a path, and analysis requires a saved model. That tells the agent when this call is a prerequisite, though it offers no guidance on alternatives such as export/checkpoint or on what happens when overwriting an existing file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_scale_response_spectrumADestructive
Scale a response-spectrum case so its base shear reaches the ELF base shear (ASCE 7-16 12.9.1.4), then optionally re-run and verify.
| Name | Required | Description | Default |
|---|---|---|---|
| rerun | No | Re-run the analysis after scaling (the model is unlocked to edit the case). | |
| target | No | Fraction of the ELF base shear to reach (ASCE 7-16: 1.0). | |
| confirm | No | Scaling unlocks the model and deletes results. Ask the user first. | |
| rs_case | Yes | ||
| elf_case | Yes | ||
| direction | No | X |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotence. The description adds real behavioral context beyond them: the scale-then-optionally-rerun-and-verify sequence. However, it omits the model-unlock and results-deletion side effects, which only surface in the 'confirm' parameter description rather than the tool description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact lines with the objective front-loaded and the optional secondary step trailing. No filler; every clause carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description is nearly complete for a 6-parameter mutation tool, with the only real gap being clarification of the undocumented case-name parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: rerun, target, and confirm are documented in the schema, while rs_case, elf_case, and direction are not. The description does not compensate by clarifying that rs_case/elf_case are the response-spectrum and ELF case names, nor does it explain the direction parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scale), a specific resource (response-spectrum case), and the exact engineering objective (base shear reaches the ELF base shear, citing ASCE 7-16 12.9.1.4). An agent can distinguish this from siblings like etabs_define_response_spectrum or etabs_define_seismic_load without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'then optionally re-run and verify' implies the rerun path, but there is no explicit when-to-use vs when-not-to-use guidance and no mention of prerequisites (e.g., an existing ELF case must already be defined/run). Usage is inferable from context but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_screenshotARead-onlyIdempotent
Take a screenshot of the ETABS window: the model views, selection and any open dialog, exactly what an engineer sees. Use it to check geometry, deformed shapes or design colours after other tools ran.
| Name | Required | Description | Default |
|---|---|---|---|
| capture | No | 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. | screen |
| refresh | No | Refresh the model views first so recent API edits are drawn. | |
| max_width | No | ||
| zoom_to_fit | No | Zoom all views to the full model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the visual-scope detail (what an engineer sees), but omits behavioural traits the schema actually carries, such as the focus-stealing behaviour of screen captures and the blank-GPU-view caveat for offscreen captures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero waste, with the core action front-loaded ahead of the usage hint. Nothing needs to be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only screenshot tool with complete annotations and no output schema, the description adequately conveys what is captured and when to use it. The main gap is not positioning it relative to the overlapping render-view and refresh-view siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, with the capture enum richly documented (focus tradeoff and blank-view caveat) directly in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies; max_width remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (screenshot) and resource (ETABS window), and clarifies scope by naming what is captured: model views, selection, and open dialogs. However, it does not distinguish itself from sibling tools like etabs_render_view or etabs_refresh_view, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use case – verifying geometry, deformed shapes, or design colours after other tools ran – which tells the agent when to reach for it. It stops short of naming alternatives or exclusions, so it lacks the routing precision a 5 would require.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_search_apiARead-onlyIdempotent
Search all ~1,300 ETABS API methods. Use this to find a method when no curated tool covers the task, then etabs_describe_api for its parameters and etabs_call_api to run it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Words to match against method names, interface paths and parameter names, e.g. 'frame release' or 'story drift'. | |
| interface | No | Restrict to one interface, e.g. 'cFrameObj'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, non-open-world, so the safety profile is covered. The description adds the useful workflow context that results are meant to be drilled into via describe/call, but does not mention result limits (default 25, max 200) or how matches are ranked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the search scope is front-loaded, then the fallback condition and the follow-up tool chain. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly covers the tool's role in the broader API-escape-hatch workflow. The one omission is handling large result sets / the limit default, which an agent calling it for a broad query would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description adds no parameter guidance at all. The query semantics ('words to match against method names, interface paths and parameter names') come entirely from the schema, and the limit parameter is undocumented anywhere, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search all ~1,300 ETABS API methods') with concrete scale, and positions itself as the raw-API fallback that the curated tools do not cover. An agent can distinguish it from etabs_describe_api and etabs_call_api without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the trigger condition ('when no curated tool covers the task') and names the two downstream siblings in order (etabs_describe_api for parameters, etabs_call_api to run). This is a complete when/when-not plus workflow chain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_selectB
Change or read the selection, like clicking in the ETABS window. Many tools accept selected=true to act on it. Returns the selected objects grouped by type.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| group | No | ||
| names | No | ||
| action | No | 'get' only reports the selection; 'objects' selects 'names' of 'kind'. | get |
| deselect | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the mutating-but-safe profile is already covered. The description adds that selection state affects other tools and that results come back grouped by type, which is useful context, but it omits what a 'clear'/'invert' actually discards or any permission/state caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the core operation comes first and the downstream consequence follows. Slightly terse given the parameter complexity, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the read/change duality is stated. However, with five optional parameters at 20% coverage and no clarification of the action/kind/names/deselect interplay, an agent lacks enough to invoke non-default actions confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, and the description mentions none of the five parameters (kind, group, names, action, deselect) or how they interact — e.g. that 'names' pairs with action='objects'. Only the schema's own action description carries any meaning, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource pair ('change or read the selection') with an intuitive analogy to clicking in the ETABS window, so an agent understands the operation. It does not, however, differentiate from related siblings like etabs_find_objects or etabs_list_objects, which also deal with object sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers a real usage signal — 'Many tools accept selected=true to act on it' — explaining why selection matters downstream. But it gives no when-to-use/when-not guidance and never names an alternative tool or exclusion, so routing is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_set_mass_sourceB
Set the default mass source (Define > Mass Source): element self mass, added mass and load patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| loads | No | Load patterns that contribute mass, e.g. [{'pattern':'SDL'}, {'pattern':'LL','multiplier':0.25}]. | |
| include_added_mass | No | ||
| include_self_weight | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive write, so the safety profile is covered. The description adds no behavioral context beyond vocabulary: it does not say whether calling it replaces or appends to an existing mass source, whether an unlocked model is required, or how it interacts with active load patterns — all meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the core action comes first and the parenthetical UI anchor is a useful, compact clarifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, which helps. But for a model-mutating definition tool in a suite containing etabs_unlock_model and etabs_set_modal_case, the description omits the model-state and downstream-analysis context needed to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'loads' has a description), so the description must compensate — and it partially does by enumerating the three concepts (self mass, added mass, load patterns) that correspond to the three parameters. However, it adds no syntax or default-behavior detail for include_self_weight / include_added_mass beyond their own names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource ('the default mass source') and even anchors it to the ETABS UI path (Define > Mass Source). This lets an agent distinguish it from other define/set tools, though it never names or contrasts with the most relevant sibling (etabs_set_modal_case, which consumes the mass source).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all: no mention that this must precede modal/seismic analysis, no prerequisites (e.g., model unlock state), and no statement of when an agent should prefer this over sibling tools like etabs_define_load_patterns or etabs_set_modal_case. The agent is left to infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_set_modal_caseB
Set how many modes the eigen modal case computes (raise it until mass participation is enough).
| Name | Required | Description | Default |
|---|---|---|---|
| case | No | Modal | |
| max_modes | No | ||
| min_modes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is a non-read-only, non-destructive, non-idempotent write, so the description does not contradict them. However, it adds no behavioral context beyond that: no statement about prerequisites (unlocked model, prior modal case definition), whether a re-run of analysis is required, or permission/state requirements — meaningful gaps for a settings mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-formed sentence with the action front-loaded and no filler — effectively sized for a simple setter. The terseness edges toward under-specification rather than waste, so it is efficient but not maximally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the tuning hint partially covers intent. Still, for a mutation that feeds seismic/eigen analysis, the description omits workflow context (interaction with mass source, response-spectrum scaling, and the need to re-run analysis), leaving an agent to infer the surrounding procedure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It only loosely gestures at 'how many modes' and never explains the distinct roles of min_modes vs max_modes, the defaults (Modal/12/1), the 1-1000 bounds, or what 'case' names are acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Set) and resource (the number of modes the eigen modal case computes), so an agent immediately knows what is being modified. It does not, however, name or contrast itself with any sibling (e.g. etabs_define_response_spectrum or etabs_set_mass_source), so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(raise it until mass participation is enough)' gives a real usage criterion for tuning the value, which is more than nothing. But there is no explicit when-to-use/when-not-to-use guidance, no ordering constraint (must be set before running analysis), and no mention of alternatives for modal mass participation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_set_restraintsB
Assign supports (Assign > Joint > Restraints): fixed, pinned, roller or custom DOFs, to joints chosen by name, by elevation, by group, or the current selection.
| Name | Required | Description | Default |
|---|---|---|---|
| dofs | No | [UX, UY, UZ, RX, RY, RZ] for 'custom'. | |
| group | No | ||
| points | No | Joint names. | |
| selected | No | ||
| restraint | No | Support type; 'custom' uses 'dofs'. | fixed |
| tolerance | No | ||
| at_elevation | No | Apply to every joint at this Z, e.g. 0 or '0 m'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), and the description adds essentially nothing behavioral on top: it doesn't say whether existing restraints are overwritten, which model/instance is affected, or that the model must be unlocked. The UI breadcrumb is navigational, not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence opens with the verb and resource before listing selection strategies; nothing is wasted. The parenthetical ETABS menu path is mild filler for an agent audience but harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with an output schema, the description covers targeting and support types but omits mutation-relevant behavior: overwrite semantics, required connection/model state, and precedence among the four targeting modes. Adequate, but an agent could still call it in a way that produces unintended assignments.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 57%, yet the description compensates well: it maps 'name' to points, 'elevation' to at_elevation, 'group' to group, 'current selection' to selected, and enumerates the restraint types (fixed/pinned/roller/custom) that the enum carries. It does not explain 'tolerance' or how simultaneous targeting parameters interact, so it is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Assign supports ... to joints') and enumerates the target-selection modes (name, elevation, group, current selection), which cleanly separates it from siblings like etabs_assign_section or etabs_assign_loads. It stops short of explicitly naming a sibling it is not, so it falls just under a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four targeting modes imply how to call it, but there is no statement of when to prefer this over alternatives, no precedence guidance when multiple targeting parameters are supplied, and no prerequisites (e.g., model must be unlocked). Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_set_storiesA
Redefine the story table. ETABS only accepts this on a model without objects on the affected stories.
| Name | Required | Description | Default |
|---|---|---|---|
| base_elevation | No | ||
| stories_bottom_up | Yes | Stories from the lowest to the highest. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is largely covered. The description adds one genuinely useful behavioral constraint (the no-objects precondition), comparable in weight to a scoping note, but says nothing about whether the existing story table is fully replaced or what happens on rejected calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action front-loaded and the precondition immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the key failure precondition is stated. However, for a mutation that replaces the story table with an array of nested story objects, the absence of any parameter-level guidance leaves the agent guessing about inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% — base_elevation and several StoryInput fields (name, is_master, splice_above, splice_height) carry no descriptions, and the tool description does not compensate for any of them. "Affected stories" loosely maps to stories_bottom_up but adds no format, ordering, or elevation guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Redefine the story table" gives a specific verb (redefine/set) and resource (story table), clearly distinguishable from the read-only sibling etabs_get_stories. It does not explicitly name that sibling, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a concrete precondition — the model must have no objects on the affected stories — which effectively tells the agent when the call will fail. It stops short of naming an alternative tool or workflow (e.g., delete objects first, or use get_stories to inspect), so it is context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_set_unitsB
Set the present units. All tool inputs and outputs use the present units.
| Name | Required | Description | Default |
|---|---|---|---|
| units | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a genuinely important global side effect beyond the annotations: all tool inputs and outputs use the present units, so changing them affects the interpretation of every other call. This is valuable context the annotations (readOnly=false, destructive=false, idempotent=false) do not convey. It doesn't state permissions or whether existing values get reinterpreted, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core action front-loaded and the global-effect caveat immediately following.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the key global side effect is stated. However, for a tool that mutates the model's unit system, missing guidance on ordering relative to other operations and the effect on existing model data leaves it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about the single "units" parameter. The 16-value enum is fairly self-documenting, but the description adds no meaning about accepted formats or the consequence of the choice beyond what the enum lists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Set the present units"), which is unambiguous and lets an agent know it configures the model's active unit system. It does not need sibling differentiation since no other tool sets units, but the term "present units" is slightly jargon-heavy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this tool, whether it must precede other operations, or what happens if it's invoked mid-session. The description gives no context for choosing to set units now versus leaving the default.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_show_windowA
Show or hide the ETABS application window. Hidden ETABS runs faster for batch work.
| Name | Required | Description | Default |
|---|---|---|---|
| visible | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds a non-obvious behavioral trait – that hiding the window improves performance for batch work – which is genuine value beyond the structured fields. It does not describe side effects on running analyses, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the rationale. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional boolean, output schema present so return values need not be explained) and the description covers purpose plus the performance rationale. It is essentially complete for such a low-complexity tool, with only the parameter mapping left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema does not document the 'visible' boolean at all. The description's 'Show or hide' conveys the parameter's intent but never names it or states the boolean mapping (true = shown), leaving a gap the schema does not fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (show/hide) and resource (the ETABS application window), which is unambiguous. No sibling tool overlaps this function, so the resource itself differentiates it, but the description doesn't explicitly contrast it against view-related siblings like etabs_refresh_view or etabs_render_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Hidden ETABS runs faster for batch work' gives a rationale for hiding, implying when hiding is appropriate. However, there is no explicit when-to-use/when-not guidance or mention of prerequisites, and the showing case is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_statusARead-onlyIdempotent
Connection and model status without connecting: whether ETABS is attached, its version, the open model file, present units, and whether the model is locked (has analysis results).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond that by clarifying the operation is non-connecting/non-mutating and by enumerating the inspection targets, including the non-obvious detail that the lock state reflects analysis results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the core purpose and followed immediately by the enumerated outputs. Every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not document return values, and it still helpfully previews the reported fields. For a zero-parameter, read-only status probe, this is nearly complete; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is no parameter behavior for the description to clarify, and the schema itself is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (connection and model status) and enumerates exactly what is reported: attachment state, version, open model file, units, and lock state. The phrase 'without connecting' distinguishes it from etabs_connect, though it does not explicitly separate its role from close siblings like etabs_analysis_status or etabs_model_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Without connecting' implies this is a safe pre-flight check to run before etabs_connect, which is useful implicit guidance. However, there is no explicit statement of when to prefer this over etabs_connect or etabs_analysis_status, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_unlock_modelADestructive
Unlock the model so it can be edited after analysis (the padlock button). Deletes analysis results.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Unlocking deletes all analysis and design results. Ask the user first. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true and readOnlyHint=false, so the bar is lower, yet the description still adds specificity by naming the concrete consequence: analysis results are deleted. It does not mention that the effect may be irreversible or that design results are also lost (that detail lives only in the schema's confirm parameter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the action and effect come first, the destructive consequence is front-loaded into the second sentence. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety signals, an output schema covering return data, and a fully described parameter, the description supplies the remaining essential bit: what is destroyed. The only gap is the relationship back to re-running analysis after editing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'confirm' parameter is well documented in the schema, including the instruction to ask the user first. The description adds nothing about the parameter, which is acceptable at full coverage but leaves no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Unlock the model') plus the operational condition ('after analysis') and a UI anchor ('the padlock button'). It is clear what the tool does, though it does not name the sibling it pairs with (e.g., etabs_run_analysis) to fully differentiate the lock/unlock cycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'so it can be edited after analysis' implies the triggering situation, but there is no explicit when/when-not statement, no warning that analysis must be re-run afterwards, and no alternative named for a different workflow. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etabs_what_changedARead-onlyIdempotent
What changed in the model since the last call (or since the baseline): objects added, removed or modified, sections/loads/combos/groups/stories added or removed, units, lock and file. Picks up edits the engineer made by hand in the ETABS window, so the agent can stay in sync. The first call records the baseline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| reset | No | Only record a new baseline. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is behaviorally rich (statefulness, baseline capture, manual-edit detection), but it directly conflicts with the structured annotations: 'since the last call' plus 'the first call records the baseline' means repeated identical calls produce different results and mutate baseline state, which contradicts idempotentHint=true and sits awkwardly with readOnlyHint=true. This is an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core answer ('What changed... since the last call') and three tight sentences with no filler. The long mid-sentence enumeration of categories is dense but each item is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting need not be described. The description covers statefulness, diff scope, and baseline behavior — sufficient for correct invocation. Minor gaps remain around the limit parameter's truncation behavior and whether diffs persist across calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% — reset is documented in the schema ('Only record a new baseline'), limit is not. The description supplies the concept of a baseline that gives 'reset' meaning, but it never mentions 'limit' or what truncation does. Marginal added value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation (report what changed in the model) and enumerates the tracked categories — objects, sections, loads, combos, groups, stories, units, lock, file. This clearly separates it from siblings like etabs_model_overview (current state) or etabs_list_objects (enumeration).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the triggering context well: it reports edits made by hand in the ETABS window so the agent can re-sync, and notes the first call establishes the baseline. It does not name an alternative tool (e.g., etabs_model_overview or etabs_list_objects) for when a full-state read is preferred over a diff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
71 tool updates
v0.1.0- First observed
etabs_add_areas - First observed
etabs_add_frames - First observed
etabs_add_points - First observed
etabs_analysis_status - First observed
etabs_assign_diaphragm - First observed
etabs_assign_label - First observed
etabs_assign_loads - First observed
etabs_assign_section - First observed
etabs_call_api - First observed
etabs_call_api_batch - First observed
etabs_checkpoint - First observed
etabs_code_checks - First observed
etabs_connect - First observed
etabs_define_area_section - First observed
etabs_define_combinations - First observed
etabs_define_frame_section - First observed
etabs_define_load_patterns - First observed
etabs_define_material - First observed
etabs_define_response_spectrum - First observed
etabs_define_seismic_load - First observed
etabs_define_wind_load - First observed
etabs_delete_objects - First observed
etabs_describe_api - First observed
etabs_design_codes - First observed
etabs_design_report - First observed
etabs_dialogs - First observed
etabs_disconnect - First observed
etabs_edit_table - First observed
etabs_export_model - First observed
etabs_find_objects - First observed
etabs_generate_building - First observed
etabs_get_concrete_design - First observed
etabs_get_design_summary - First observed
etabs_get_results - First observed
etabs_get_slab_design - First observed
etabs_get_stories - First observed
etabs_get_table - First observed
etabs_get_wall_design - First observed
etabs_instances - First observed
etabs_job_status - First observed
etabs_job_wait - First observed
etabs_list_checkpoints - First observed
etabs_list_installations - First observed
etabs_list_load_definitions - First observed
etabs_list_objects - First observed
etabs_list_properties - First observed
etabs_list_tables - First observed
etabs_menu - First observed
etabs_model_overview - First observed
etabs_new_model - First observed
etabs_open_model - First observed
etabs_refresh_view - First observed
etabs_render_view - First observed
etabs_restore_checkpoint - First observed
etabs_run_analysis - First observed
etabs_run_design - First observed
etabs_run_shear_wall_design - First observed
etabs_save_model - First observed
etabs_scale_response_spectrum - First observed
etabs_screenshot - First observed
etabs_search_api - First observed
etabs_select - First observed
etabs_set_mass_source - First observed
etabs_set_modal_case - First observed
etabs_set_restraints - First observed
etabs_set_stories - First observed
etabs_set_units - First observed
etabs_show_window - First observed
etabs_status - First observed
etabs_unlock_model - First observed
etabs_what_changed
TDQS
Scored across 71 tools
The tool set spans modeling, analysis, design, results, UI automation, and raw API access, and several names are close enough to invite confusion (e.g. get_results vs get_table, get_design_summary vs get_concrete_design, status vs analysis_status vs model_overview). Descriptions generally clarify intent, but with 71 tools the boundaries are not crisp enough to eliminate occasional misselection.
All names share the etabs_ prefix and nearly all follow snake_case verb_noun or noun_phrase patterns (define_*, get_*, list_*, assign_*, run_*). A few tools are bare nouns such as status, menu, dialogs, screenshot, and checkpoint, which is a minor deviation from a strict verb_noun convention.
71 tools is far beyond the typical 3-15 range and exceeds the 50+ threshold for an extreme mismatch, creating a very large selection surface for an agent. Although the ETABS domain is broad and many tools cover distinct operations, the count is still excessive for reliable tool choice.
The surface covers the full lifecycle: modeling, loads, analysis, design, results, reporting, checkpoints, UI automation, and a raw API escape hatch for anything not curated. No obvious dead ends remain.
Maintenance
Related MCP Connectors
Revit MCP: lets AI read and edit your open model. Windows, best supported on Revit 2021+, free beta.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for Autodesk Revit (BIM) with 705+ API endpoints. Enables AI agents to create walls, place doors/windows, generate sheets, manage views, and produce construction documents via the Model Context Protocol. Uses named pipes for zero-crash Revit integration.22MIT
- AlicenseAqualityDmaintenanceConnects AI assistants to CSI ETABS for structural engineering tasks, enabling model creation, analysis, design, and seismic checks via the COM API.699MIT
- AlicenseAqualityDmaintenanceEnables AI agents to interact with Bentley STAAD.Pro models for tasks like load case definition, data extraction, and property setting, running locally with multi-instance support and no cloud dependency.5MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that bridges AI agents to Autodesk Revit, enabling local tool-based interaction with Revit models, including query, create, and modify operations, with an optional personal tool baking system.82Apache 2.0