Skip to main content
Glama

title: FlexSim MCP Server emoji: ⚙️ colorFrom: blue colorTo: green sdk: gradio sdk_version: "5.0.0" app_file: app.py pinned: false

FlexSim MCP Server (incl. FlexSimPy)

Track

Control and automate FlexSim simulations via the Model Context Protocol (MCP). This repository exposes a FastMCP server that launches FlexSim (via FlexSimPy) and provides tools to open models, run/stop, step, query/set node values, evaluate FlexScript, export results, and more.

Why this matters

  • Bridges digital twins and AI assistants (Claude/Cursor) for manufacturing/warehouse analysis and “what-if” studies.

  • Demonstrates robust systems engineering: GUI process orchestration, async I/O, protocol handling, Windows quirks, and reproducible automation.


Related MCP server: FlexSim MCP Server

Design

┌─────────────────────┐       JSON-RPC        ┌─────────────────────┐
│    MCP Client       │◄────────────────────► │    MCP Server       │
│  (Claude/Cursor)    │     stdin/stdout      │  (flexsim_mcp.py)   │
└─────────────────────┘                       └──────────┬──────────┘
                                                         │
                                                         │ Python API
                                                         ▼
                                              ┌─────────────────────┐
                                              │     FlexSimPy       │
                                              │   (Python SDK)      │
                                              └──────────┬──────────┘
                                                         │
                                                         │ COM/IPC
                                                         ▼
                                              ┌─────────────────────┐
                                              │      FlexSim        │
                                              │  (Simulation Engine)│
                                              └─────────────────────┘

Features

  • MCP server entry point: mcp_server/flexsim_mcp.py

  • Tools exposed (69 total: 22 base + 47 opencode; AST manda — full catalog in GUIA_DESDE_CERO.md §7):

    • Simulation control: flexsim_open_model, flexsim_reset, flexsim_run, flexsim_run_to_time, flexsim_stop, flexsim_step, flexsim_get_time

    • Model/script: flexsim_execute_script, flexsim_evaluate_node, flexsim_save_model, flexsim_save_model_as, flexsim_close_model, flexsim_new_model

    • Node access: flexsim_get_node_value, flexsim_set_node_value, flexsim_list_tree

    • Results/stats: flexsim_get_statistics, flexsim_export_results, flexsim_run_experiments, flexsim_chart_snapshot

  • Logging: mcp_server/flexsim_mcp.log

  • Reproducible environment: uv sync

  • FlexSimPy build automation: utility/build_automation.py

  • Integration tests: tests/integration/test_mcp_client.py (stdio-based MCP client)

  • GUI sanity test: utility/integration_test.py

  • Configurable behavior via config.toml and environment overrides


Requirements

  • OS: Windows

  • Python: 3.12 (default; configurable via config.toml or FLEXSIM_PYTHON_VERSION)

  • Package manager: uv (https://astral.sh)

  • FlexSim:

    • Real runs require a local FlexSim installation (or repo-local mirror in FlexSimDev/program)

    • FlexSimPy SDK submodule is provided at depends/FlexSimPy (see .gitmodules)


Quickstart

Guided setup (recommended)

# From the repo root
python setup_mcp_server.py

# The setup helper will:
# - Summarize your configuration (install locations, Python version, submodule presence)
# - Ensure `uv` is installed and run `uv sync`
# - Build/install FlexSimPy via `utility/build_automation.py`
# - Optionally run a GUI integration sanity test
# - Print next steps to run the MCP server and tests

Manual setup

# 1) Install dependencies
uv sync

# 2) Check (and optionally build) FlexSimPy
uv run python utility/build_automation.py --status
# To force a build with a specific Python version:
# uv run python utility/build_automation.py --python-version 3.12

# 3) Launch MCP server in test mode (keeps the process alive; launches FlexSim on first tool call)
uv run mcp_server/flexsim_mcp.py --test-mode

# 4) Run integration tests (spawns the server as a subprocess; stdio MCP client)
uv run python tests/integration/test_mcp_client.py

Configuration

Primary configuration lives in config.toml (repo root). You can also override at runtime using environment variables.

Example (excerpt from config.toml):

[flexsim]
install_path = "FlexSimDev/program"
src_path = "C:\\Program Files\\FlexSim 2025 Update 2"

[python]
version = "3.12"

[server]
name = "FlexSimPy MCP Server"
version = "0.1.0"
http_endpoint = "http://127.0.0.1:8088/mcp"

[session]
reuse_policy = "singleton"

[logging]
level = "INFO"
log_file = "flexsim_mcp.log"

[build]
flexsimpy_dir = "depends/FlexSimPy"
auto_build = true
auto_install = true

Environment overrides (see utility/config.py):

  • FLEXSIM_CONFIG_PATH – path to an alternate config.toml

  • FLEXSIM_INSTALL_PATH – override FlexSim program path

  • FLEXSIM_PYTHON_VERSION – override Python version for FlexSimPy

  • FLEXSIM_LOG_LEVEL – override logging level


Running the MCP server

Two modes:

  • Test mode (interactive; no stdio protocol)

uv run mcp_server/flexsim_mcp.py --test-mode
# Keeps running; FlexSim launches on first tool call; intended for manual testing
  • MCP stdio mode (default when no flags are passed)

uv run mcp_server/flexsim_mcp.py
# Expects MCP JSON-RPC messages via stdin/stdout; used by clients/tests

Client configuration (for Claude/Cursor/etc.):

{
  "mcpServers": {
    "flexsim": {
      "command": "uv",
      "args": [
        "--directory",
        "<repo-flexsim_mcp>/",
        "run",
        "mcp_server/flexsim_mcp.py"
      ]
    }
  }
}

Example tool calls (JSON-RPC via MCP)

Open a model

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{
   "name":"flexsim_open_model",
   "arguments":{"params":{
     "model_path":"C:/path/to/Model.fsm"
   }}
 }}

Run to time and read time

{"jsonrpc":"2.0","id":2,"method":"tools/call",
 "params":{"name":"flexsim_run_to_time","arguments":{"params":{"target_time":300}}}}

{"jsonrpc":"2.0","id":3,"method":"tools/call",
 "params":{"name":"flexsim_get_time"}}

Evaluate FlexScript

{"jsonrpc":"2.0","id":4,"method":"tools/call",
 "params":{"name":"flexsim_execute_script","arguments":{"params":{
   "script":"return getmodeltime();"
 }}}}

Get/Set node value

{"jsonrpc":"2.0","id":5,"method":"tools/call",
 "params":{"name":"flexsim_get_node_value","arguments":{"params":{
   "node_path":"Model/Queue1/stats/input"
 }}}}

{"jsonrpc":"2.0","id":6,"method":"tools/call",
 "params":{"name":"flexsim_set_node_value","arguments":{"params":{
   "node_path":"Model/Processor1/variables/processtime",
   "value":5.0
 }}}}

More FlexScript examples and behavior: see eval-flexscript.md.


Tests

Integration tests (stdio client; verifies tools and basic run sequence):

uv run python tests/integration/test_mcp_client.py
# Test 1: open model; Test 2: run for 20s, stop, verify time > 0

GUI sanity test (manual, interactive menu):

uv run python utility/integration_test.py
# Launches FlexSim GUI and provides simple interactive actions

Repository structure

  • mcp_server/flexsim_mcp.py — FastMCP server and FlexSimPy controller logic (entry point)

  • utility/

    • config.py — configuration loader with env overrides

    • build_automation.py — FlexSimPy build/install orchestration (MSBuild resolution, .pyd install)

    • copy_flexsim.py — copies a FlexSim installation into FlexSimDev/ (uses flexsim.src_path)

    • integration_test.py — GUI-backed sanity test (suppresses CEF stderr, safe cleanup)

    • utility.py — helpers: suppress stderr, kill FlexSim processes, force exit

  • tests/integration/

    • test_mcp_client.py — async stdio client that starts the server and calls tools

    • README.md — test descriptions and sample outputs

  • depends/FlexSimPy — FlexSimPy SDK submodule

  • FlexSimDev/program — optional repo-local mirror of FlexSim install

  • config.toml, mcp_server_config.json, AGENTS.md, eval-flexscript.md


Batch Experiment Orchestrator (MVP implementado)

Sweep de parámetros con réplicas, métricas y exportación unificada summary.csv (y manifest.json), para estudios “what-if” a escala.

  • Guía: Batch_Experiment_Orchestrator.md

  • Estado: implementado en mcp_server/flexsim_mcp.py (flexsim_run_experiments, con flexsim_experiment_plan como pre-vuelo de solo lectura; reutiliza flexsim_get_statistics / flexsim_export_results)

  • MVP: flexsim_run_experiments con scenarios, seeds, run_to_time, run_speed, statistics, artifact_dir, stop_on_error (requiere ventana FlexSim)


Troubleshooting

  • FlexSim not found:

    • Update flexsim.install_path in config.toml or set FLEXSIM_INSTALL_PATH

    • Optionally use utility/copy_flexsim.py to mirror an existing install into FlexSimDev/

  • FlexSimPy unavailable:

    • Check status: uv run python utility/build_automation.py --status

    • Rebuild for the active Python version and ensure the .pyd is installed

  • Stdio client issues:

    • Ensure you run the server without --test-mode when using stdio clients

    • Check mcp_server/flexsim_mcp.log for details

  • GUI noise (CEF) or shutdown issues:

    • The utilities suppress CEF stderr and force a safe interpreter exit when needed


Guides (Spanish)

  • GUIA_DESDE_CERO.md — install and configure everything from scratch, for any user and any MCP client.

  • AGENTE_FLEXSIM.md — verified instructions for an AI agent (Claude Code, OpenCode...) to build, connect, configure, run and measure models.

  • uv run python utility/doctor.py --live — checks your environment and tells you how to fix what is missing.

  • Two backends: FlexSim launched from Python (evaluation license, runs and measures) and your normal FlexSim window (creates objects); see the guides.

Available Tools

73 tools
flexsim_add_agv_loopA

Create a pilot AGV loop: N ControlPoints in rectangle + one StraightPath (window backend only).

Crea n_points AGV::ControlPoint (<prefix>CP1..N) en rectangulo de lado spacing
desde (x, y, z) + UN AGV::StraightPath piloto del punto 1 al 2. Cada creacion
se verifica con return o.name. La conexion fisica entre paths es incierta:
el StraightPath se crea sin conectar (si StraightPath requiriese 2 endpoints
como args de creacion, queda documentado como limite en el resultado).
NO crea Dispatcher/TE.

Args:
    name_prefix: prefix for ControlPoint names (default AGV -> AGVCP1..N).
    n_points: 2-10 control points (default 4).
    spacing: rectangle side in meters (default 8).
    x, y, z: origin corner of the rectangle.
    overwrite: destroy previous <prefix>CPi / <prefix>Path12 first when they
        already exist (default False: reject without writing anything).

Siguiente paso (red AGV, marcador # AGV-red): flexsim_agv_link_path une dos
extremos (path-path o ControlPoint-path) con objectconnect verificado por
_flow_path; flexsim_agv_route despacha una sola TS con un TRAVEL por stop.
Guia completa de la red en el docstring de flexsim_agv_route.

Returns JSON {control_points, paths, limit, note} (+ errors / error).
Limit: red completa y tasksequences AGV aun no verificadas.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and largely meets it: it discloses the window-backend restriction, that the StraightPath is created unconnected, the physical-connection uncertainty, the overwrite-destroys-previous behavior, and verification via return o.name. Only remaining gap is any permission/rate context, which is minor here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The English opener is well front-loaded, but the full Spanish restatement duplicates the same content, roughly doubling length without adding information. Appropriately sized for a complex tool, but the bilingual redundancy is waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, yet the description still names the JSON keys and states the verification limit. Combined with the disclosed constraints and next-step guidance, an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents name_prefix, n_points (2-10), spacing in meters, x/y/z as origin corner, and overwrite's destructive semantics with its default. This adds meaning beyond the bare schema defaults and ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: creates N ControlPoints in a rectangle plus one StraightPath, scoped as 'window backend only'. That is concrete and separable from siblings, though the sibling differentiation comes via the 'Siguiente paso' section rather than the opening line.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the follow-on tools (flexsim_agv_link_path, flexsim_agv_route) and clarifies what this tool does not do ('NO crea Dispatcher/TE'), giving clear workflow context. It lacks an explicit negative condition, but the sequencing and scope are adequately conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_add_conveyor_legA

Add one Conveyor::StraightConveyor leg (window backend only).

Creates Conveyor::StraightConveyor, setLocation, tries o.size.x = length
and reads it back. NOTE (verificado con screenshots 2026-09-27): o.size
se GUARDA pero la geometría visual del StraightConveyor queda en ~10 m
(Conveyor.length es readonly); verificar siempre con screenshot y dejar
hueco de ~12 m en el layout. With from_object/to_object, builds the
transfer chain (verificado en vivo): contextdragconnection "A" (crea
Entry/ExitTransfer) + borrado selectivo de directos por puerto +
objectconnect de los stubs. Solo objectconnect deja belt.in en 0.

AUTO-LAYOUT (respuesta a "¿a ojo?"): si x/y/length se omiten (None) y
from_object+to_object están dados, la posición sale de los extremos
(punto medio) y length = dist-1 (mín 2). El flujo (puertos) es 100%
lógico y verificado; lo visual se calcula, no se estima.

Verification walks the outObjects chain (BFS, up to 4 hops) because conveyors
interpose EntryTransfer*/ExitTransfer* objects: a working leg reports e.g.
SrcT>EntryTransfer1>BeltT.

Args:
    name: base name (default Belt; auto Belt1/Belt2... when taken).
    length: metres (default 10; None = auto dist-1). Se guarda en o.size
        pero el visual puede quedar en 10 m: verificar con screenshot.
    x, y, z: position of the new belt (None = punto medio, z = promedio).
    from_object: optional flow origin (from_object -> belt).
    to_object: optional flow destination (belt -> to_object).

Limits: visual length fixed ~10 m (readonly); cuando FlexSim ignora el
    write se reporta igual (leído de vuelta).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses that o.size is written but the visual geometry stays ~10 m because Conveyor.length is readonly, that objectconnect alone leaves belt.in at 0, that the transfer chain uses contextdragconnection plus selective port deletion, and how verification walks the outObjects chain via EntryTransfer/ExitTransfer. These are genuine side effects and limitations an agent could not infer. It is docked a point for being noisy and self-repeating rather than a clean behavioral contract.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is long, mixes English and Spanish mid-sentence, and repeats the same ~10 m visual-length caveat three separate times. The critical constraint is buried rather than front-loaded, and parenthetical verification notes ('verificado con screenshots 2026-09-27') add bulk without helping an agent call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, the definition covers what is created, the flow-wiring behavior, the auto-layout rule, and the known limitation. An output schema exists, so return values need not be explained. What is missing is permission/authorization context and a clear statement of prerequisites for the referenced from_object/to_object nodes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it largely does: name, length, x, y, z, from_object and to_object are each given meaning, defaults, and the auto-layout derivation (midpoint position, length = dist-1, min 2). It adds real semantics beyond the bare JSON types. It stops short of a 5 because the prose is tangled and the ~10 m caveat is repeated instead of stated once.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb+resource: 'Add one Conveyor::StraightConveyor leg (window backend only)'. It also clarifies that with from_object/to_object it additionally builds a transfer chain, which is a second responsibility made explicit. It does not, however, differentiate itself from likely-overlapping siblings like flexsim_create_objects or flexsim_connect_objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful conditional guidance (auto-layout applies only when x/y/length are None and from_object+to_object are supplied) and flags 'window backend only'. But it never states when to reach for this tool versus flexsim_create_objects or flexsim_connect_objects, so the routing decision 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.

flexsim_agv_connectA

Connect two AGV segments with objectconnect (window backend only).

Une dos tramos AGV (StraightPath/CurvedPath) o un ControlPoint a un path
con objectconnect (el mismo comando verificado para cintas en
flexsim_add_conveyor_leg; si FlexSim crea objetos intermedios, la
verificacion lo reporta via el path completo).

Vecina: flexsim_add_agv_loop crea ControlPoints + un StraightPath piloto
sin conectar; esta tool cierra ese gap conectando dos tramos ya creados.
NO crea Dispatcher/TE ni tasksequences.

Args:
    path_from: tramo AGV origen (o ControlPoint origen).
    path_to: tramo AGV destino.
    verify: caminar outObjects con BFS (_flow_path) buscando path_to.

Returns JSON {from, to, linked, path | last_out, note}.
Limit: red AGV completa/tasksequences no verificadas.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses important behavioral context: 'window backend only', the objectconnect mechanism, the fact that intermediate objects created by FlexSim are reported via the full path, and the verification behavior. It also states limits ('red AGV completa/tasksequences no verificadas'). With no annotations provided, the description must carry the full burden, and while it adds meaningful behavioral details, it does not cover permissions, error conditions, or what happens if the connection fails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but it mixes English and Spanish, repeats concepts, and includes parenthetical commentary that interrupts flow. Several sentences are dense and could be tightened without losing meaning. It is adequately sized but not maximally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single-parameter input object (wrapped as params) and an existing output schema, the description need not reiterate return values, yet it still summarizes the JSON return shape. It covers backend constraints, neighbor relationships, and limitations. It misses error-handling behavior and any explicit statement about prerequisite state, so it is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 does explain path_from, path_to, and verify ('caminar outObjects con BFS buscando path_to'), which adds real meaning beyond bare names. However, it does not fully specify value formats, valid object types, or the meaning of the output fields relative to each parameter, leaving meaningful gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Connect') and resource ('two AGV segments'), and explicitly names its siblings/neighbors ('flexsim_add_agv_loop creates ControlPoints + a pilot StraightPath unconnected; this tool closes that gap'). It is much more specific than a generic 'connect objects' tool. However, the bilingual structure and parenthetical qualifiers dilute immediate clarity, keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly positions itself relative to flexsim_add_agv_loop as the step that closes the gap between unconnected segments, and it explicitly excludes Dispatcher/TE and tasksequence creation. However, it does not say when NOT to use this tool versus flexsim_connect_objects or flexsim_agv_link_path, which are close siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_agv_deliverA

Deliver one item on the AGV network: TRAVEL pickup, LOAD, TRAVEL dropoff, UNLOAD + run (window only). # AGV-dlv

Fuente (sin inventar comandos ni task types): createemptytasksequence
(Commands.xml:6854-6858, XML:6855/6858) + inserttask (Commands.xml:7951-7955,
ej. XML:7955 "inserttask(ts, TASKTYPE_TRAVEL, current, NULL);") +
dispatchtasksequence (Commands.xml:7094-7099, ej. XML:7099); TASKTYPE_TRAVEL=8
(a objeto, el de red AGV) vs TRAVELTOLOC=9 (a coordenadas, XML:6921-6927, no red)
en FlexsimDefs.h:215-216 / allobjects.h:295-296 (catalogo AGV-dlv A1 arriba);
TASKTYPE_LOAD en XML:7751, UNLOAD solo en FlexsimDefs.h:210 / allobjects.h:290,
PREEMPT_NOT en FlexsimDefs.h:262. Despacho via _dispatch_trip (A2, misma TS de
flexsim_run_transport bloque P1). Patrones verificados del repo: require_gui /
run_script / fs_string / _fs_literal / check_script_safety / format_error;
NULL-check `treenode n = Model.find(..); return (n == NULL ? 0 : 1);`
(flexsim_experimenter_status); item por paths candidatos tal cual,
pickup/item y scan hijos (flexsim_run_transport); red con _flow_path BFS
outObjects (flexsim_agv_connect/_last_link); stats `Object k = Model.find(..);
return k.stats.input.value;` (AGENTE_FLEXSIM.md sec 7); corrida sin reset con
Run Speed slider + stoptime + applicationcommand run + espera getrunstate==0
(flexsim_run_to_time / flexsim_run_transport, sin resetmodel porque borraria la TS).

Args:
    traveler: TaskExecuter/AGV que ejecuta (dueno de la TS).
    item_from: flowitem a mover (Model.find debe resolverlo; ver items con
        flexsim_list_tree sobre la estacion).
    pickup: objeto/estacion donde se carga.
    dropoff: objeto/estacion donde se descarga (se leen sus stats).
    control_points: 0-6 ControlPoints/path de la red (default []); si no vacia
        se verifica con _flow_path que pickup alcanza el primer CP (reporta,
        no bloquea).
    run_seconds: duracion simulada a correr tras despachar (default 600, >0).
    run_speed: Run Speed slider para la corrida (default 1000, >0).
    priority: prioridad de la TS (default 1).

Returns JSON {dispatched, delivered, traveler, item_from, item_path, pickup,
    dropoff, priority, flexsim_result, dropoff_input_before, dropoff_input_after,
    model_time_end, flexsim_console, network_checked:{...}, limits[]} (+ error
    real cuando dispatched=false o sin confirmar entrega, sin mentir).
Limits: semantica LOAD/UNLOAD (involved1=item, involved2=estacion) no esta en
    Commands.xml (remite al QuickReference); dispatched=true es TS aceptada, no
    entrega; delivered=true es input del dropoff incrementado tras correr
    (evidencia, no trazabilidad del item); network_checked solo reporta.
Presupuesto TE (ajusta el OPERADOR # T5): run_seconds >= distancia_total_m /
    velocidad_TE_mps + 30% margen; velocidad_TE_mps se lee en la GUI del
    TaskExecuter (propiedades del TE), distancia_total_m es el recorrido
    pickup->dropoff por la red AGV.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden, and it discloses a lot: 'dispatched=true is TS accepted, not delivery', 'delivered=true is input increment evidence, not item traceability', that the run avoids resetmodel because it would erase the TS, and that network_checked only reports. These are exactly the non-obvious behaviors an agent needs. It loses a point for burying them in dense prose rather than making the operational caveats prominent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the body is bloated with source-code citations (Commands.xml line numbers, FlexsimDefs.h references) and implementation boilerplate that do not help an agent select or invoke the tool. Much of the 'Fuente' paragraph should be stripped; it dilutes the actionable Args/Limits content and mixes languages.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex orchestration tool with no annotations and an output schema present (so return values needn't be re-explained, though the description redundantly lists them), the coverage is strong: params, limits, error semantics, and run behavior are all addressed. It is essentially complete for correct invocation, only hampered by presentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (only titles and constraints), so the description must compensate, and its Args block documents all eight sub-parameters with meaning — including non-obvious ones like control_points verification via _flow_path and the run_seconds TE budget heuristic. This adds genuine value beyond the bare schema. It is not a 5 because a few entries (e.g. priority) are defined minimally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource ('Deliver one item on the AGV network') and enumerates the exact task sequence (TRAVEL pickup, LOAD, TRAVEL dropoff, UNLOAD + run), which clearly separates it from lower-level siblings like flexsim_run_transport or flexsim_agv_route. The '(window only)' qualifier further scopes it. It stops just short of 5 because it never explicitly contrasts itself with those siblings by name in a selection-oriented way.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: it notes the window-backend constraint and points to flexsim_list_tree for discovering items, which helps an agent get set up. However, there is no explicit 'use this instead of X when…' routing or when-not guidance against the many AGV/transport siblings, so the agent must infer the choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_agv_routeA

Dispatch one AGV route: single TS with one TRAVEL per stop, or full mission with load/unload (window only). # AGV-mision

Receta mision completa (AGV-mision): 1) flexsim_add_agv_loop crea el loop
(CPs + StraightPath piloto sin conectar); 2) flexsim_agv_link_path /
flexsim_agv_connect une tramos y CPs con objectconnect verificado por
_flow_path (BFS de outObjects); 3) esta tool con solo stops mueve el
transporter en vacio por la red (un TRAVEL por stop, UNA sola TS); 4) con
load_item+load_from+unload_to anade en LA MISMA TS: TRAVEL stops... +
LOAD(item, load_from) + TRAVEL unload_to + UNLOAD(item, unload_to) con un
solo dispatch; 5) con confirm=true + run_after=true corre hasta run_to_time
y confirma por stats (delivered = stats.input de unload_to > before).

API (fuente, la misma ya usada en flexsim_run_transport y _dispatch_trip,
sin inventar task types: solo TRAVEL/LOAD/UNLOAD): createemptytasksequence
(dispatcher, priority, preempting) (Commands.xml:6854-6858, ej. XML:6858) +
inserttask(ts, type, involved1, involved2) (Commands.xml:7951-7955, ej.
XML:7955 "inserttask(ts, TASKTYPE_TRAVEL, current, NULL);") +
dispatchtasksequence(ts) (Commands.xml:7094-7099, ej. XML:7099);
TASKTYPE_TRAVEL=8 a objeto (FlexsimDefs.h:215; XML:7955/:6498),
TASKTYPE_LOAD (XML:7751), TASKTYPE_UNLOAD solo en headers locales
(FlexsimDefs.h:210 / allobjects.h:290), PREEMPT_NOT en FlexsimDefs.h:262.
Item por las 3 vias de flexsim_run_transport (tal cual, load_from/item,
scan de hijos por nombre); stats con `Object k = Model.find(..);
return k.stats.input.value;` (AGENTE_FLEXSIM.md sec 7); corrida con el
patron de flexsim_run_to_time (Run Speed slider
node("MAIN:/project/exec/step").value = 1000 + stoptime(t) +
applicationcommand("run") + espera getrunstate()==0 + return Model.time,
sin resetmodel porque borraria la TS en curso).

Args:
    transporter: TaskExecuter/AGV que ejecuta (dueno de la TS).
    stops: 2-6 objetos/ControlPoints en orden de visita.
    priority: prioridad de la TS (default 1).
    run_after: si True, corre el modelo hasta run_to_time tras despachar.
    run_to_time: segundos simulados para la corrida (default 120).
    load_item: flowitem a mover (None = ruta solo-stops; con mision los
        tres juntos son obligatorios).
    load_from: objeto/estacion donde se carga (involved2 del LOAD).
    unload_to: objeto/estacion donde se descarga (TRAVEL destino +
        involved2 del UNLOAD; se leen sus stats).
    confirm: si True (y run_after=true) confirma delivered por stats.
    confirm_timeout_s: presupuesto wall-clock para la espera getrunstate
        cuando confirm=true (default 600; el target simulado sigue siendo
        run_to_time).

Returns JSON {dispatched, transporter, stops, priority, flexsim_result,
console, delivery} (+ model_time y note="ruta ejecutada, verificar stats"
con run_after=true). delivery es null en ruta solo-stops; en mision es
{item, item_path, load_from, unload_to, confirm, delivered (bool|null),
input_before, input_after}.
Limites (AGV-mision): TRAVEL a objeto (inserttask(ts, TASKTYPE_TRAVEL,
destino, NULL), XML:7955) es el que usa la red AGV; TRAVELTOLOC=9 es a
coordenadas (no red) y FREETRAVEL/TRAVELTO no existen como TASKTYPE: no se
usan. Semantica LOAD/UNLOAD (involved1=item, involved2=estacion) no esta en
Commands.xml (remite al QuickReference): si FlexSim la rechaza se devuelve
su error real con dispatched:false. dispatched=true es TS aceptada, no ruta
completada ni entrega. delivered=true es input de unload_to incrementado
tras correr (evidencia, no trazabilidad del item); sin corrida (run_after
false) o sin confirm no se afirma nada (delivered null). Mision parcial
(alguno de load_item/load_from/unload_to sin los otros dos) es error sin
despacho.
Ejemplo multi-waypoint 3 CPs + mision con confirm (sintaxis exacta # T5):
    {"params": {"transporter": "AGV1", "stops": ["CP1", "CP2", "CP3"],
        "load_item": "Box1", "load_from": "Queue1", "unload_to": "Sink1",
        "confirm": true, "run_after": true, "run_to_time": 660}}
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: dispatched=true means only that the TS was accepted (not route completion or delivery), delivered=true is an input-increment signal rather than item traceability, no resetmodel is called because it would erase the in-flight TS, and a rejected LOAD/UNLOAD returns the real FlexSim error with dispatched:false. These are exactly the behavioral traits an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded, but the body is a very long wall of mixed Spanish/English text salted with API source citations (Commands.xml line numbers, FlexsimDefs.h, XML:7955, etc.) that do not help an agent select or invoke the tool. Much of the material is reference detail rather than decision-relevant guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex multi-mode AGV tool it covers the critical decision points, limits, error paths and return semantics, and it even restates return fields despite an output schema existing. The main remaining gap is not positioning itself against flexsim_agv_deliver, which appears semantically adjacent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (only titles/defaults), so the description must compensate, and it does: the Args block explains each parameter's role beyond the schema, e.g. load_from is the involved2 of the LOAD, unload_to is the TRAVEL destination plus UNLOAD involved2 and the source of the delivery stats, and the three mission params are mutually required. This adds real semantics the structured schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb+resource+scope: dispatch one AGV route, either a stop-only TS or a full load/unload mission, window backend only. It also places itself in the AGV workflow relative to flexsim_add_agv_loop and flexsim_agv_link_path. It does not, however, differentiate itself from the close sibling flexsim_agv_deliver, so it falls short of full sibling disambiguation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The numbered recipe states explicitly when to use which mode: steps 3 (stops only), 4 (adds load/unload), 5 (confirm + run), plus the rule that a partial mission (some of load_item/load_from/unload_to) is an error. Clear usage context is provided, but no when-not-to-use or alternative-selection guidance against sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_apply_shapesA

Apply every entry of a shapes manifest JSON (window backend only).

Las asignaciones por script son POR SESIÓN (verificado 2026-09-27: tras
guardar+reabrir el índice vuelve a mapping default). El manifiesto
(ej. planta_sanjorge_v1_7.shapes.json) las versiona: al abrir el modelo,
correr esta tool y listo. Formato: {"shapes": [{object, file, shape_name?}]}
con file absoluto o relativo al manifiesto.

Args:
    manifest_path: JSON con clave "shapes" (lista de {object, file}).

Returns JSON {manifest, applied:[{object, shape_index, note}], errors:[...]}.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the tool works only on the window backend, that assignments are per-session and revert on save+reopen, and that the manifest is a versioning mechanism. It also outlines the return JSON shape (applied/errors). It does not state whether existing shape assignments are overwritten or what permissions are required, leaving some safety-related behavior unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but it mixes English and Spanish and contains redundancy: the manifest format is given both in the introductory notes and again in the Args section. Every sentence is relevant, but the duplication and language switching reduce clarity and efficiency for an agent parsing it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, no annotations, and an output schema, the description is nearly complete. It explains the manifest format, session persistence, backend restriction, and return structure. The output schema means return values need not be detailed, and the description only briefly touches on them, which is appropriate. Some edge cases (e.g., what happens on partial failure) are left to the errors array.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it explains that manifest_path is a JSON file with a 'shapes' key containing a list of {object, file, shape_name?}, and that file paths can be absolute or relative to the manifest. This adds substantial meaning beyond the bare string parameter in the schema. It does not detail error conditions or validation constraints, but the core semantics are well covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Apply every entry of a shapes manifest JSON.' It distinguishes itself from sibling flexsim_import_shape by operating on a manifest (bulk) rather than a single shape, and it scopes the tool with '(window backend only).' An agent can identify exactly what this tool does without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: the tool is for applying a versioned shapes manifest after opening a model, and it notes that script assignments are per-session (reverting on save+reopen). This explains when to use it. However, it does not explicitly name alternatives (e.g., flexsim_import_shape for single imports) or state when NOT to use it, so it falls just short of full usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_attach_resourceA

Attach a resource to a requester (window backend only).

Runs contextdragconnection(requester, resource, "S") and checks the last
centerObjects entry. With mode=shared the same resource feeds N requesters
(exclusivity is not enforced, only reported).

Args:
    requester: object asking for the resource (e.g. Processor1).
    resource: resource object (e.g. Operator1).
    mode: exclusive or shared (default exclusive).
    verify: check centerObjects (default True).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers real behavioral context: it names the underlying call (contextdragconnection), the centerObjects verification, the backend precondition, and the important caveat that in shared mode exclusivity is 'not enforced, only reported'. It omits error behavior and any permission/state prerequisites, keeping it 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose in the first sentence, then a compact behavioral paragraph and a clean Args block. The implementation detail about contextdragconnection/centerObjects is borderline but earns its place by explaining the verify behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 preconditions, all parameters, and key behavioral caveats for a mutation tool with no annotations. It stops short of a 5 only because error/state requirements (e.g. a loaded model) are not stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it documents all four parameters (requester, resource, mode, verify), supplies example object names (Processor1, Operator1), states the default for mode, and clarifies what verify checks. Minor gap: mode's full semantics (exclusive vs shared effect) is only partially explained in the Args section versus the body.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Attach a resource to a requester') and adds a scope qualifier ('window backend only'), making the intent concrete. It does not, however, explicitly contrast with closely related siblings such as flexsim_connect_objects or flexsim_link_transporter, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage through the 'window backend only' precondition and the shared-mode semantics, but gives no explicit when-to-use / when-not-to-use guidance and names no alternative sibling for the same task. Adequate context, but selection logic is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_bridge_statusA

Check whether the FlexScript bridge node is configured and answering.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Check ... and answering' implies a non-destructive read that reports a connectivity/configuration state, which is useful, but it says nothing about failure modes, timeout behavior, or what 'configured' means. An output schema exists, so return details are reasonably delegated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words; the object of the check and the two conditions are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless health-check tool with an output schema and no annotations, this covers what the agent needs to invoke it correctly. It could be more complete by naming the adjacent status tools or indicating what action should follow a negative result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 add and the baseline is 4. The description neither misleads nor needs to compensate for schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('check') and a specific resource ('the FlexScript bridge node') plus the two conditions tested (configured, answering). It does not, however, distinguish itself from closely related status siblings such as flexsim_gui_status, flexsim_experimenter_status, or flexsim_processflow_ping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent must infer that this is a pre-flight connectivity check, and it gets no help choosing between this and the several other '*_status'/'ping' tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_chart_bind_statB

Request a chart/statistic binding: inspect only, never writes (window or Python backend).

Camino honesto y reversible (ver bloque P3): grep del 2026-09-26 en repo y
Commands.xml (collector 0 hits, addcolumn 0, addrow solo Table.addRow
deprecated XML:9011, Chart 5 hits sin binding) NO hallo patron verificable
de binding por Statistics Collector, asi que NO escribe en ningun nodo del
chart (semantica desconocida; escribir titulo/nota seria decorativo y
confunde) y devuelve el mapa de nodos candidatos (misma inspeccion de R1)
+ guia de pasos manuales en GUI + "binding automático no implementado".

Args:
    chart: chart destino (Model.find debe resolverlo).
    statistic: Object.stats.<group>.<field>, debe estar en ALLOWED_STATS
        (p. ej. "content.value"; ver AGENTE_FLEXSIM.md sec 7).
    source_object: objeto que produce el dato (Model.find debe resolverlo).

Returns JSON {chart, statistic, source_object, bound:false, inspected:{kind,
subnodes, variables, data_nodes}, did:[...], did_not:[...], manual_steps,
limits, note} donde did/did_not dicen que hizo y que no. Si chart o
source_object no existen, o statistic es desconocido, devuelve error claro.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it states the tool never writes, that it returns bound:false, enumerates did/did_not actions, and specifies error behavior when chart/source_object are unresolved or statistic is unknown. It also discloses the manual-GUI-steps fallback and stated limits, which is exactly the kind of behavioral context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is well front-loaded, but the middle is padded with internal audit reasoning (grep date, 'collector 0 hits, addcolumn 0', node-count tallies) that does not help an agent select or call the tool. The bilingual mixing and run-on structure add noise rather than value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 technically redundant, though the description still restates it. It covers the three args and error cases adequately, but the central ambiguity (tool named 'bind' that does not bind) and the missing routing against sibling tools leave a gap for a tool whose name implies an action it never performs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it defines chart and source_object as names that Model.find must resolve, and statistic as an Object.stats.<group>.<field> value that must appear in ALLOWED_STATS with a concrete example ('content.value'). This adds meaning the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence does state a specific behavior ('inspect only, never writes'), but it frames the tool as 'Request a chart/statistic binding' even though the body concludes binding is not implemented and it only returns candidate nodes. The name 'chart_bind_stat' plus the 'binding' framing conflicts with the actual inspect-only behavior, making it harder to distinguish from the sibling flexsim_chart_inspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use / when-not-to-use guidance. The reference to 'misma inspeccion de R1' assumes external context, and it never contrasts itself against flexsim_chart_inspect or flexsim_collector_create, which an agent would need to route between these overlapping tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_chart_inspectA

Inspect a chart's internal tree structure, read-only (window or Python backend).

Solo lectura (dual via run_script, como flexsim_dashboard_list): vuelca la
estructura interna del chart con primitivas verificadas (ver bloque P3):
subnodos directos (nombre+clase, 1 nivel), variables (hijos de `>variables`
como nombre=value via treenode.value, hasta 30) y, por cada subnodo cuyo
nombre contenga data|serie|dataset, sus hijos.

Vecinas: flexsim_dashboard_create crea el chart; flexsim_dashboard_list lo
localiza; esta tool descubre de donde lee antes de bindear (ver
flexsim_chart_bind_stat).

Args:
    name: nombre del chart (Model.find debe resolverlo).

Returns JSON {name, kind, variables, subnodes, data_nodes, note}. Si el
chart no existe devuelve error claro (sin JSON). No escribe nada.
Limite: la semantica de cada subnodo (que serie alimenta) solo se conoce
viendo el modelo real; lo no verificable queda como limite, no se inventa.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so well: it declares read-only behavior, says 'No escribe nada', describes dual backends (window or Python), details the return JSON shape, specifies error behavior for missing charts, and openly states a limitation about unverifiable subnode semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with sections for siblings, args, returns, and limits, and the purpose is front-loaded. However, it has clear waste: read-only is stated three times ('read-only', 'Solo lectura', 'No escribe nada'), and the mixed English/Spanish phrasing adds length without added precision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, absent annotations, and 0% schema description coverage, the definition covers the necessary ground: what it inspects, when to use it, argument meaning, return structure, error behavior, and known limits. An output schema exists, but the description still adds useful completeness without being redundant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by defining the sole parameter: 'name: nombre del chart (Model.find debe resolverlo).' It adds meaning and a resolution constraint beyond the schema's type/pattern fields, though it does not repeat the pattern/length constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line states a specific verb and resource: 'Inspect a chart's internal tree structure, read-only.' It also distinguishes this tool from siblings by naming flexsim_dashboard_create, flexsim_dashboard_list, and flexsim_chart_bind_stat, so an agent can tell it apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Vecinas' section explicitly names alternatives and gives the condition for using this tool: 'descubre de donde lee antes de bindear (ver flexsim_chart_bind_stat).' It provides clear context but does not state explicit when-not-to-use exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_chart_snapshotA

Sample real time series to feed a chart outside (window backend only).

"Binding" honesto y funcional que SI podemos verificar (ver bloque DB-bind):
NO toca el chart GUI (semantica de sus series no verificada); corre el
modelo (reset + run_to_time) y muestrea get_statistics (_collect_statistics,
Object.stats.<group>.<field> segun AGENTE_FLEXSIM.md sec 7) en N=5 instantes
intermedios (T/5, 2T/5...T).

Vecinas: metricas validadas contra ALLOWED_STATS (como flexsim_chart_bind_stat);
objetos verificados con Model.find (como flexsim_experimenter_status); corrida
con el patron de flexsim_run_to_time (Run Speed slider + stoptime + run +
espera getrunstate()==0).

Args:
    chart: nombre del chart destino (solo etiqueta de salida, no se toca).
    statistics: 1-8 metricas Object.stats.<group>.<field> en ALLOWED_STATS.
    objects: 1-10 nombres de objetos (Model.find debe resolverlos).
    run_to_time: segundos simulados totales T (default 300).
    run_speed: Run Speed slider (window only, default 1000).

Returns JSON {chart, series:{obj:{metric:[v x5]}}, times:[t x5], note}.
Si metricas u objetos fallan, error claro en JSON sin escribir ni correr nada.
Limite: serie real para graficar fuera; el chart GUI se alimenta a mano.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations this description carries the full burden and does disclose significant behavior: it runs the model (reset + run_to_time), samples at N=5 fixed instants, leaves the GUI chart untouched, and returns a clear JSON error 'sin escribir ni correr nada' on validation failure. The major side effect (model reset/run) is surfaced. Gaps remain: reversibility of reset and any state destruction of the current model are not stated, and internal references obscure some meaning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structure is reasonable (purpose first, then mechanics, Args, Returns, Limite), but the body is verbose and references internal artifacts (DB-bind, AGENTE_FLEXSIM.md) that an agent cannot act on, plus repeated defaults. It could be halved without losing actionable content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex model-mutating sampling tool it covers purpose, mechanics, args, the JSON return shape, error behavior and the external-chart limit; an output schema exists so return explanation is bonus depth. The reset-reversibility question and the reliance on undocumented internal references keep it from being fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it does: it specifies the statistic format (Object.stats.<group>.<field>, validated against ALLOWED_STATS), the 1-8 / 1-10 cardinalities, that chart is an output label only, and that objects must resolve via Model.find. Defaults for run_to_time/run_speed merely repeat the schema, but the format/constraint detail is genuinely value-adding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb and resource ('Sample real time series to feed a chart outside') and the body clarifies the crucial distinction that it does NOT touch the GUI chart, naming flexsim_chart_bind_stat as the contrast. This lets an agent separate it from the chart-binding siblings. The Spanish prose and internal-doc jargon (AGENTE_FLEXSIM.md sec 7) add friction, keeping it below a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the '(window backend only)' constraint and notes the GUI chart 'se alimenta a mano', which implies when this tool is appropriate. However, it never explicitly routes the agent (e.g. 'use this instead of flexsim_chart_bind_stat when the target chart is external'), and the 'Vecinas' list reads as implementation-reuse notes rather than usage alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_clone_modelA

Clone the current model file or clear back to the GUI template.

clone: save the window (when connected), copy _gui_model_path or _current_model
    (source_path only when no known origin) to dest_path.
clear: copy the GUI template to dest_path (like flexsim_prepare_gui_model).
With open_in_gui, the copy is opened in FlexSim like flexsim_prepare_gui_model.

Args:
    dest_path: new .fsm file (must not exist, never the template).
    source_path: optional existing .fsm used only when no known origin.
    mode: clone or clear (default clone).
    open_in_gui: open the copy in FlexSim (default True).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the copy semantics, that the window is saved when connected, that dest_path must not exist and can never be the template, and that open_in_gui opens the copy in FlexSim. It stops short of stating permission/auth requirements or what happens to an existing file, but the mutation side effects are clearly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, followed by mode-specific detail and an Args block. It is appropriately sized, though the flexsim_prepare_gui_model comparison is repeated in two places, a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values need not be explained, and the description covers modes, all parameters, and file/GUI side effects adequately. It omits auth/prerequisite context, but for a clone/clear operation the coverage is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: each of the four sub-parameters (dest_path, source_path, mode, open_in_gui) gets an explicit meaning plus constraints and defaults. This is materially more than the bare schema provides. It lacks format examples for paths, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb+resource ('Clone the current model file or clear back to the GUI template') and immediately distinguishes the two modes. It names the related sibling flexsim_prepare_gui_model, so an agent can separate it from other model tools. Slightly tangled by the branching modes, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the condition that selects each mode (clone vs clear) and clarifies when source_path applies ('only when no known origin'). It references flexsim_prepare_gui_model for the open_in_gui behavior, giving a comparison point. However, it does not explicitly contrast with flexsim_new_model or flexsim_save_model_as, so the routing is not fully closed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_close_modelA

Close the window model, optionally saving first (window backend only).

Metodo: NO hay comando de cierre verificado en el repo (grep applicationcommand
solo muestra save/run/stop/reset/openmodel/addglobaltable; no existe "close" ni
fileclose verificable, asi que no se inventa ninguno). Con save=True se ejecuta
applicationcommand("save") primero; el cierre mata SOLO la ventana del modelo
actual filtrando por titulo _gui_model_name via powershell Stop-Process con
filtro MainWindowTitle (mismo patron que tests/integration/test_gui_backend.py),
y limpia _gui_model_path. Devuelve OK.

Args:
    save: run applicationcommand("save") before closing (default False).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does so well: it discloses that no verified close command exists, that it kills only the current model's window via powershell Stop-Process filtered by MainWindowTitle, that it cleans up _gui_model_path, and that save runs applicationcommand('save') first. It stops short of explicitly warning that unsaved work is lost if save=False.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the remainder is dense implementation detail in mixed English/Spanish, including a justification aside about grep results. Some of this earns its place (it explains why no native close command is used), but the prose is heavier than needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single optional parameter, an output schema (so return values need not be described) and the fact that 'Devuelve OK' is mentioned anyway, the description is complete for calling the tool correctly; only an explicit destructive-warning is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the only parameter is undocumented in the schema, so the description must compensate. It does: 'save' is defined as running applicationcommand('save') before closing, with default False stated, adding real meaning beyond the bare boolean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a clear verb+resource (close the window model) and a scope constraint (window backend only), with an option to save first. It doesn't explicitly name a sibling alternative, but 'window model' and 'close' distinguish it from save_model/open_model/reset/stop reasonably well.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'window backend only' qualifier gives implicit usage scoping, and the save option hints at the branch condition, but there is no explicit statement of when to use this versus flexsim_save_model or flexsim_stop, nor any stated exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_collector_createA

Create one Statistics Collector object (window backend only).

Camino SEGURO y honesto (ver bloque DB-bind): Object.create + name unico +
setLocation + return verificado (receta de flexsim_dashboard_create,
AGENTE_FLEXSIM.md sec 9). La clase del grupo statistics NO esta verificada
en repo ni Commands.xml (grep 2026-09-26: collector 0 hits), asi que
collector_class es libre (default "StatisticsCollector"): si Object.create
falla se devuelve el error real de FlexSim sin mentir ni inventar clases
candidatas.

Args:
    name: nombre unico (solo letras, digitos, _).
    collector_class: clase libre del grupo statistics (default
        "StatisticsCollector", no verificado).
    x, y, z: posicion en metros (default 0, 0, 0).
    overwrite: si True destruye el objeto previo con el mismo nombre.

Returns JSON {name, class, created} o {name, class, created:false, error}
con el error real + hint para listar candidatas a mano por
flexsim_execute_script con library().find("?statistics").
Limite: solo creacion+posicion verificadas; configuracion interna del
collector no verificada (ver flexsim_collector_record).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral burden: it discloses Object.create + unique name + setLocation, that overwrite destroys the previous object, that failures return the real FlexSim error without inventing classes, and that collector_class is unverified. This is unusually thorough for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the Args/Returns/Limite structure is helpful. However, the 'Camino SEGURO y honesto' and internal doc references add meta-commentary that does not help an agent invoke the tool correctly, making it longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description still clearly explains success/failure returns and the unverified-class limitation. With no annotations and 0% schema coverage, it supplies enough behavioral, parameter, and error-handling context to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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, and it does: name is unique and limited to letters/digits/underscore, collector_class is free-form with an unverified default, x/y/z are positions in meters, and overwrite destroys the prior object. It adds meaning well beyond the schema's type/default constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Create one Statistics Collector object (window backend only)'. It points to flexsim_collector_record for internal configuration, distinguishing related tasks, but does not explicitly distinguish itself from the generic flexsim_create_objects sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: window backend only, creation+position verified, internal configuration not verified and referred to flexsim_collector_record. This gives an exclusion and a related alternative, though it never says when to prefer this over flexsim_create_objects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_collector_recordA

Diagnose a collector's structure, read-only: never samples nor writes (dual backend).

Tool de DIAGNOSTICO (no promete muestreo): NO escribe configuracion interna
del collector (semantica desconocida, bloque DB-bind). Reusa el helper
existente _chart_inspect_map (misma inspeccion de flexsim_chart_inspect)
para volcar data_nodes del collector si existe.

Args:
    collector: collector a inspeccionar (Model.find debe resolverlo).
    source_object: objeto que produciria el dato (Model.find debe resolverlo).
    statistic: Object.stats.<group>.<field>, validado contra ALLOWED_STATS
        (ver AGENTE_FLEXSIM.md sec 7); no bloquea, se reporta como
        statistic_validated true/false.
    event: evento nominal (default "OnReset"), solo informativo: no se
        conecta nada.

Returns JSON {recorded:false, collector, source_object, statistic, event,
statistic_validated, collector_structure:{kind, subnodes, variables,
data_nodes}, suggestion, note}. recorded siempre false. Si collector o
source_object no existen, error claro con recorded:false. No escribe nada.
Limite: de donde lee/muestrea cada collector solo se sabe viendo el modelo
real; lo no verificable queda como limite.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: read-only, never writes, never samples, error behavior (recorded:false plus a clear error when collector/source_object are unresolved), and an explicit limitation about what can't be verified. It omits any permission/auth considerations, keeping it 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns structure is helpful and the read-only constraint is front-loaded, but the text is bilingual and repetitive ('no escribe nada', 'recorded siempre false' restated), and it leaks internal implementation details (_chart_inspect_map, AGENTE_FLEXSIM.md sec 7) that waste space for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining the return shape is not strictly required, yet the description still fully characterizes behavior, error cases, and known limitations. For a diagnostic tool with no annotations it is complete enough to invoke correctly, with only minor gaps around permissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (property-level descriptions are absent), so the description must compensate — and it does, defining collector and source_object as Model.find-resolvable names, statistic as Object.stats.<group>.<field> validated against ALLOWED_STATS, and event as nominal/informative only with a default. This adds substantial semantics beyond the schema's patterns and length limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — 'Diagnose a collector's structure, read-only' — and immediately disambiguates from the name's misleading 'record' (it neither samples nor writes). This lets an agent separate it from flexsim_collector_create, though it does not explicitly contrast itself with sibling inspection tools like flexsim_chart_inspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage (structural diagnosis of a collector, no writes, no sampling) and hints at reuse of an existing inspect helper, but never explicitly says when to pick this over flexsim_collector_create, flexsim_chart_inspect, or flexsim_chart_bind_stat. No clear when-not guidance or named alternative is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_connect_objectsA

Connect two objects (window backend only).

flow: contextdragconnection(source, target, "A") — item flow (non-deprecated form).
resource: contextdragconnection(requester, resource, "S") — e.g. Processor asks Operator.
NOTE: connects ACCUMULATE (each call adds a parallel link: 1-2-3...). Disconnect
(Q/W via flexsim_disconnect_objects) before reconnecting to avoid duplicates.

Args:
    source: origin (or requester for resource).
    target: destination (or resource for resource).
    kind: flow or resource.
    verify: check outObjects/inObjects (flow) or centerObjects (resource).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and largely meets it: it discloses that connections ACCUMULATE (1-2-3...), that flexsim_disconnect_objects must precede reconnecting to avoid duplicate links, and what verify actually inspects (outObjects/inObjects vs centerObjects). It omits mutation/error/permission behavior, keeping it out of the top band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, then kind-specific usage, then a NOTE on accumulation, then Args — a sensible order with no filler. The contextdragconnection('A'/'S') internals are implementation trivia an agent does not need, a minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 mode switch, the accumulation hazard, and the verification option. The 'window backend only' constraint is surfaced. What is still absent is failure behavior (e.g. invalid source/target, duplicate rejection) and any permission requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the Args block does the work: source is 'origin (or requester for resource)', target is 'destination (or resource for resource)', kind is flow/resource, verify toggles structural verification. Crucially it clarifies that source/target semantics shift based on kind, which the schema's generic string types do not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (connect two objects) and immediately constrains the surface with '(window backend only)'. It also distinguishes the two invocation modes (flow vs resource) with examples. It stops short of differentiating itself from connect-capable siblings such as flexsim_pf_connect, flexsim_agv_connect, flexsim_link_transporter, or flexsim_attach_resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when each kind applies (flow = item flow, resource = e.g. Processor asks Operator) and gives the important 'disconnect before reconnecting' precondition, which is real usage guidance. However, it never tells the agent when to pick this tool over the many connect-adjacent siblings, so routing remains inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_create_anyA

Create one object trying candidate classes in order (window backend only). # LIB-people

Solo ventana (require_gui). Prueba cada clase en orden con Object.create
+ name + setLocation + properties (roundtrip como create_objects:
o.setProperty + _fs_literal en el mismo script) + return o.name
verificado; al primer exito devuelve {name, class, created:true,
attempts:[{class, ok, detail}]}. Si todas fallan devuelve {created:false,
attempts:[...errores reales...], hint:"ver clases con
flexsim_library_list"}. Maneja duplicados como create_objects (SKIP sin
overwrite, destroy con overwrite).

Vecina leida: flexsim_create_objects (roundtrip de properties +
SKIP/destroy por duplicado) y flexsim_person_create (caso simple de una
sola clase; la via recomendada ahora es library_list + create_any).

Ejemplo people: candidates=["Person", "Staff", "Operator"] (Operator SI
funciona como fallback documentado, verificado en AGENTE_FLEXSIM.md sec 4;
Person/Staff no verificadas, se prueban en orden).

Args:
    candidates: 1-8 clases no vacias en orden de intento.
    name: nombre unico (solo letras, digitos, _).
    x, y, z: posicion en metros (default 0, 0, 0).
    properties: dict de setProperty (roundtrip como create_objects;
        ArrivalStyle/FlowItemClass bloqueados).
    overwrite: si True destruye el objeto previo con el mismo nombre.

Returns JSON {name, class, created:true, attempts} o {name,
created:false, attempts, hint} con errores reales de FlexSim, sin mentir.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so richly: it discloses duplicate handling (SKIP without overwrite, destroy with overwrite), blocked properties (ArrivalStyle/FlowItemClass), the ordered attempt loop with real errors ('sin mentir'), the require_gui constraint, and both success and failure return shapes. This is well beyond what the schema exposes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is padded with bilingual duplication (e.g., 'Solo ventana (require_gui)' restated as 'window backend only'), an internal '# LIB-people' heading, file/version references, and a 'Vecina leida' digression. It is not front-loaded cleanly and the Spanish/English interleaving hurts scannability, even though most sentences carry some information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-parameter creation tool with no annotations, coverage is close to complete: it explains fallback, duplicates, property roundtrip, error surfacing, and points to library_list for valid classes. An output schema exists, so its return-value explanation is bonus rather than necessary. The only gap is what happens when the GUI backend is unavailable, which is implied rather than stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is negligible, but the description documents every parameter: candidates (1-8, non-empty, attempt order), name (unique, letters/digits/underscore), x/y/z (meters, default 0,0,0), properties (setProperty roundtrip with blocked keys), and overwrite (destroys prior object of same name). The blocked-key detail is not derivable from the schema, so it adds genuine value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with a distinctive strategy: 'Create one object trying candidate classes in order (window backend only).' It explicitly contrasts against siblings flexsim_create_objects and flexsim_person_create, so an agent can tell it apart. It falls short of a 5 only because the mixed-language, rambling framing makes the core purpose slightly harder to extract than a crisp one-liner would.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use context ('Solo ventana (require_gui)'), the ordered-fallback workflow, and names alternatives: flexsim_create_objects for roundtrip/SKIP semantics and flexsim_person_create for the single-class case, noting the recommended path is now library_list + create_any. It even states the failure route ('ver clases con flexsim_library_list').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_create_objectsA

Create objects in the FlexSim window in batch (window backend only).

Wraps Object.create + name + setLocation + setProperty with per-object verification.
Names must be unique (FlexSim allows duplicates, this tool refuses them unless
overwrite=True, in which case the old object is destroyed first).

Student (100 objetos, docs oficiales FlexSim): antes de crear lee # CNT-limite
_model_object_count(); si actual+len(batch)>100 devuelve error SIN crear nada # CNT-limite
(atómico); si actual+len>=85 procede pero antepone warning al resultado. Solo ventana. # CNT-limite

Args:
    objects: [{cls, name, x, y, z, properties}]. Class e.g. Source, Queue,
        Processor, Sink, Operator, Rack, Conveyor::StraightConveyor.
    overwrite: destroy Model.find(name) first when it already exists.

Example:
    objects=[{cls: Source, name: Source1, x: 0}, {cls: Queue, name: Queue1, x: 6}]
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does it well: atomic failure ('devuelve error SIN crear nada'), a soft warning threshold at 85, a hard cap at 100, per-object verification, and the fact that overwrite destroys the existing object first. It omits permission/auth requirements and return-format details, and the garbled '# CNT-limite' scaffolding hurts legibility, keeping it 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded, but the middle Spanish block is duplicated ('Solo ventana' repeats the window-backend constraint) and littered with '# CNT-limite' template markers, making the rules harder to parse than they need to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 for a batch mutation tool with zero annotations the description still covers atomicity, thresholds, uniqueness, and destructive overwrite. The unresolved 50-vs-100 item discrepancy and absent permission notes are the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% reported schema description coverage at the top level, the description explains the parameter shape directly: the objects list fields (cls, name, x, y, z, properties), concrete class examples, and the semantics of overwrite. This adds meaningful value beyond the schema, though it never reconciles the described 100-object cap with the schema's maxItems: 50.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create objects in the FlexSim window in batch') and scopes it to the window backend, which separates it from other creation tools. It never names a sibling tool to route against (e.g. flexsim_create_any or flexsim_person_create), so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real usage conditions: window backend only, use overwrite=True when the name already exists, and the object-count thresholds that govern whether creation proceeds. However it offers no explicit exclusions or named alternatives among the many create_* siblings, so the agent must still infer when this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_dashboard_createA

Create one dashboard/chart window object (window backend only).

Solo creacion + posicion (sin configuracion de series/datos: no hay
setProperty de charts verificado en el repo, asi que no se inventa API).

Clases creables via Object.create verificadas en AGENTE_FLEXSIM.md sec 4:
StatChart, GanttChart, Recorder. Dashboard se acepta por patron pero queda
pendiente de verificacion (si la clase no existe FlexSim devuelve FAIL:create).

Metodo (receta AGENTE_FLEXSIM.md sec 9): Model.find duplicado + destroyobject
si overwrite + Object.create(kind) + o.name + o.setLocation + return o.name.

Args:
    kind: StatChart (default), GanttChart, Recorder o Dashboard.
    name: nombre unico (solo letras, digitos, _).
    x, y, z: posicion en metros (default 0, 0, 0).
    overwrite: si True destruye el objeto previo con el mismo nombre.

Returns JSON {name, kind, created, note} (o {name, kind, created:false, error}).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that overwrite destroys the prior object with the same name, that an unverified class returns 'FAIL:create', and outlines the underlying create/destroy recipe. It omits permission/auth needs and whether a window must already be open.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the following sections are logically ordered (scope, classes, method, args, return). It is somewhat verbose with repeated references to AGENTE_FLEXSIM.md and some implementation detail that an agent may not need for invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, the description covers side effects, error modes, and creation limits, and an output schema exists so return values need not be fully spelled out. It is nearly complete, missing only prerequisites like model state and any auth requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it largely does: it explains units for x/y/z (meters), the overwrite side effect, and the semantics of kind beyond the raw enum. Name constraints are left mostly to the schema pattern, so it stops short of fully replacing the missing schema docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource ('Create one dashboard/chart window object') and immediately scopes it ('window backend only'). This clearly separates it from siblings like flexsim_dashboard_list, flexsim_chart_inspect, and flexsim_chart_bind_stat.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says this is creation + positioning only, with no series/data configuration, which tells the agent what this tool does not do. It does not, however, name alternatives (e.g. flexsim_chart_bind_stat) or state preconditions such as requiring an open model, so routing remains partly inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_dashboard_listA

List chart/dashboard/recorder objects as JSON (window or Python backend).

Solo lectura (dual via run_script): recorre model().subnodes con
getname(classobject(o)) + o.location (patron de flexsim_inspect_model) y
filtra en Python por clase conteniendo Chart|Dashboard|Recorder|Plot|
Histogram, mas filtro opcional pattern (subcadena sobre name y class).
Sin resultados devuelve lista vacia, no error.

Args:
    pattern: subcadena opcional para filtrar name/class (default "" = sin filtro).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses read-only semantics and that no results yields an empty list rather than an error, plus the internal filtering logic. It omits permission/auth requirements, performance/scale characteristics, and pagination expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose is good, but the middle sentence dumps implementation internals (model().subnodes, getname(classobject(o))) that an agent does not need to select or call the tool, and the text mixes Spanish and English awkwardly. Trimmed, it would be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only list tool with an output schema present, the description covers purpose, filtering behavior, and the empty-result edge case adequately. The remaining gap is only the missing sibling routing, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains that 'pattern' is an optional substring that filters against both name and class, with default '' meaning no filter — meaning beyond the bare schema's 'Pattern'/'maxLength' metadata, though it notes no syntax examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('chart/dashboard/recorder objects') and specifies the output form ('as JSON'). It is clear about scope, though it does not explicitly distinguish itself from nearby siblings like flexsim_chart_inspect or flexsim_list_tree.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Solo lectura (dual via run_script)' frames it as a read operation and hints at the inspect_model pattern, implying usage context. However, it never states when to prefer this over flexsim_chart_inspect, flexsim_list_tree, or flexsim_library_list, leaving alternative selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_diagnoseA

Read-only environment diagnosis (never runs write scripts).

Checks: port 8765 free/used, window connected + last poll age, bridge ping,
FlexSimPy importable, template exists. Reuses utility/doctor.py logic.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so reasonably: it declares read-only behavior and explicitly states 'never runs write scripts', a meaningful safety guarantee. It also discloses the implementation dependency (utility/doctor.py) and the scope of checks, though it says nothing about failure modes or what happens when a check cannot complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the read-only guarantee front-loaded and the check list following. Nothing is wasted and the most decision-relevant fact leads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 not required, and the description covers scope, safety, and the checks performed. The minor gaps are default parameter behavior and the relationship to the overlapping bridge_status tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'checks' array parameter has 0% schema description coverage, so the description must compensate. Enumerating the available checks (port, window/poll age, bridge ping, FlexSimPy import, template) effectively reveals the accepted values. It does not state the default (presumably all checks) when the array is omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('environment diagnosis') and enumerates the exact checks performed, so an agent knows precisely what it gets back. It does not explicitly differentiate itself from the closely related flexsim_bridge_status sibling, which covers overlapping ground.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case (pre-flight/environment troubleshooting) is implied by 'diagnosis' and the check list, but there is no explicit when-to-use guidance and no mention of when to prefer flexsim_bridge_status or another status tool instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_disconnect_objectsA

Disconnect two objects (window backend only).

Uses contextdragconnection with the DISCONNECT keys from the official command
reference (FlexSim 2026 help/CommandReference/Commands.xml, defaultdragconnection
entry): 'Q' disconnects output->input ports (flow), 'W' disconnects central
ports (resource). There is NO objectdisconnect command in FlexSim 2026 (verified
in Commands.xml and live: it returns 0 and changes nothing).
NOTE: connects ACCUMULATE (each connect adds a parallel link), so disconnect
all matches before reconnecting.
flow verifica que target ya no esta en outObjects de source; resource verifica
que target ya no esta en centerObjects de source. Devuelve OK/FAIL con estado post.

Args:
    source: origin (or requester for resource).
    target: destination (or resource for resource).
    kind: flow or resource.
    verify: check outObjects (flow) or centerObjects (resource).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the underlying command path, keyed behavior per port type ('Q' flow, 'W' resource), the accumulation caveat for connects, and the OK/FAIL outcome. Missing only permission/auth requirements, but behavioral disclosure is otherwise strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and informative, but oversized: the mechanism history and the Spanish sentence partially duplicate the English verify explanation, and the language switches mid-description. Sentences mostly earn their place but trimming and language consistency would help.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 optional, yet the description still notes the OK/FAIL post-state. Combined with the mechanism, port-type keys, and caveats, it is complete enough for an agent to call a window-backend disconnect correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: the Args block defines source, target, kind (flow/resource), and verify (check outObjects for flow, centerObjects for resource). It adds real meaning beyond the schema's bare property names and pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Disconnect two objects') and pins down the mechanism ('window backend only', contextdragconnection). It is clearly distinguishable from the inverse flexsim_connect_objects, though it never names that sibling explicitly. Purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives useful context (no objectdisconnect command exists in FlexSim 2026; use DISCONNECT keys) and a caveat-driven instruction ('disconnect all matches before reconnecting'). However it never states an explicit when-to-use vs alternative or a clean set of conditions/exclusions, so 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.

flexsim_ensure_parameterA

Ensure a model parameter exists, creating it when missing (window backend only).

Replicates the VERIFIED pattern of AGENTE_FLEXSIM.md sec 3c over
Tools/ParameterTables/Parameters>variables/parameters: Table addRow +
cell(k,1).value=name + cell(k,2).value=value. When the parameter already
exists (Model.parameters.names() contains it) only the value is updated.
Returns JSON {name, created, value, backend}. Validates rectangular
scalar values and types (number|string). Never touches
PerformanceMeasureTables.

Args:
    name: Parameter name (only letters, digits, _).
    value: New value (number or string, must match type).
    type: number (default) or string.

Limits: needs the Toolbox ParameterTables node in the model; string cells
    with '|' or ';' are stored verbatim (no split here, unlike table_read).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the create-vs-update branching (Model.parameters.names() check), the returned JSON shape, type/rectangular validation, and the limit that string cells with '|' or ';' are stored verbatim. It omits permission/auth needs and reversibility, but is otherwise unusually thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the implementation-detail sentence ('Replicates the VERIFIED pattern of AGENTE_FLEXSIM.md sec 3c ... Table addRow + cell(k,1).value=name ...') is largely internal mechanics that doesn't help an agent select or invoke the tool, adding bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers backend restriction, prerequisite node, validation, and the PerformanceMeasureTables exclusion, which is sufficient for correct invocation. An output schema exists so return-value detail is a bonus rather than a requirement, and the description supplies it anyway.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does via an Args block: name charset, value as number|string that 'must match type', and type defaulting to number. This adds a meaningful cross-field constraint ('must match type') the schema does not express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with scope: 'Ensure a model parameter exists, creating it when missing (window backend only).' The create-or-update semantics distinguish it from the read/write siblings flexsim_get_parameter and flexsim_set_parameter 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: window backend only, requires the Toolbox ParameterTables node, and updates value when the parameter already exists. However, it never explicitly routes the agent away from flexsim_set_parameter or states a 'when not to use' condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_evaluate_nodeA

Evaluate an EXISTING node by tree path and return its value.

This does not run arbitrary FlexScript (use flexsim_execute_script for that). An
unknown path returns None without an error.

Args:
    node_path: e.g. "MAIN:/project/exec/time"
    args: Optional parameters passed to the node's code

Example:
    node_path="MAIN:/project/exec/time"
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that only existing nodes are evaluated, that unknown paths return None without raising an error, and that arbitrary script execution is out of scope. It omits any note on side effects of node code or permissions, keeping it 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, then a scope exclusion, then args, then an example. Slightly redundant that the example path repeats the one already shown inline in the Args section, but overall tight and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 key behaviors an agent needs (existing-node evaluation, None on unknown path, script alternative). It could be richer about what kinds of node values are returned, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 supplies a concrete path format for node_path and explains args as 'Optional parameters passed to the node's code', which the schema's bare 'array' type does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Evaluate an EXISTING node by tree path') and its return ('return its value'). It explicitly distinguishes itself from flexsim_execute_script, so an agent can separate it from the most confusable sibling 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly names the alternative ('This does not run arbitrary FlexScript - use flexsim_execute_script for that'), giving a usable when/when-not boundary. It does not, however, contrast with flexsim_get_node_value, the other obvious sibling for reading node state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_execute_scriptA

Execute FlexScript inside the open model and return its result.

Needs the bridge node (see flexsim_bridge_status). End the script with `return <value>;`
to get a value back.

Safety: ArrivalStyle/FlowItemClass writes, PerformanceMeasureTables.addRow and
overwriting bridge/mcp_template.fsm are blocked (they hung or corrupted FlexSim).

Args:
    script: FlexScript code

Examples:
    script='return Model.find("Queue1").subnodes.length;'
    script='return getmodeltime();'
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it names the bridge-node dependency and enumerates the specific blocked operations (ArrivalStyle/FlowItemClass writes, PerformanceMeasureTables.addRow, overwriting bridge/mcp_template.fsm) with the reason they are blocked (they hung or corrupted FlexSim). It stops short of describing general side effects or state mutation semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then prerequisites, safety, args and examples in clearly delineated sections. Information-dense with little waste, though the section labels make it slightly longer than strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 bridge prerequisite, the blocked-operation safety envelope, the parameter, and worked examples. Complete enough for an agent to invoke it correctly, with the only gap being routing versus similar evaluation tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents the single `script` parameter as FlexScript code, states the `return <value>;` convention for retrieving output, and provides two concrete example scripts. That adds real meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: execute FlexScript inside the open model and return its result. This is inherently distinct from node-focused siblings like flexsim_get_node_value or flexsim_evaluate_node, but the description never explicitly differentiates itself from those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Points to a prerequisite (needs the bridge node, see flexsim_bridge_status) and notes how to get a value back, which is implicit usage guidance. However, it never says when to prefer this tool over siblings such as flexsim_evaluate_node or flexsim_get_node_value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_experimenter_runB

Report Experimenter scenarios without launching (no verified starter).

SOLO LECTURA (nunca escribe): R1 no hallo comando de arranque en
Commands.xml (solo resetexperiment XML:5633-5636 y endreplication
XML:9572-9576, ninguno lanza), asi que esta tool NO ejecuta
resetexperiment/endreplication ni toca nodos del Experimenter en
escritura. Reutiliza el patron de la vecina flexsim_experimenter_status
(Model.find + scan por clase conteniendo "experiment" + subnodos) para
listar escenarios y devolver el camino honesto alternativo. Paso previo
recomendado: flexsim_experiment_plan (lee variables por escenario para
flexsim_run_experiments).

Args:
    name: nombre del Experimenter (default Experimenter1).
    timeout_s: deadline aceptado por firma (60-3600, default 600); sin
        arranque verificado no hay poll que esperar, se devuelve tal cual.

Returns JSON {started:false, reason, name, exists, scenarios, workaround,
    timeout_s, note} (y hint cuando no existe: crearlo a mano en Toolbox).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden well: it is explicit about SOLO LECTURA, that it never calls resetexperiment/endreplication, touches no Experimenter nodes in write mode, and returns started:false. It explains the reason for the no-launch behavior (no verified starter).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy and mixes Spanish rationale with line-referenced justification (XML:5633-5636) that is noise for an agent. The essential fact (does not launch) is buried after several sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 needn't be explained, though the description lists the exact JSON keys. It is honest about its limitations and suggests a workaround when the Experimenter does not exist, making it complete enough for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description covers both params: name (default Experimenter1) and timeout_s (60-3600, default 600, accepted by signature but not used for polling). It adds meaning, but the 0% coverage baseline would suggest more, and timeout_s is essentially vestigial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and first sentence suggest launching a scenario runner, but the body immediately negates this: it only reports scenarios and never launches. The true purpose (read-only reporting) only emerges from reading the full text, which is confusing given the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It recommends a prior step (flexsim_experiment_plan) and points to flexsim_experimenter_status as a pattern, and mentions the honest alternative path. But there is no explicit when-to-use-this vs when-to-use-run_experiments guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_experimenter_statusA

Report Experimenter existence + scenarios read-only (window or Python backend).

SOLO LECTURA (nunca escribe): detecta el Experimenter via Model.find(name)
y/o scan de objetos del modelo por clase conteniendo "Experiment"
(solo model().subnodes + getname(classobject()), sin comandos nuevos).
Lista escenarios como subnodos del Experimenter y cuenta jobs solo si hay
un subnodo visible con "job" en el nombre (si no, jobs=0). NUNCA crea,
conecta ni lanza nada.

Args:
    name: nombre del Experimenter (default Experimenter1).

Returns JSON {exists, name, scenarios, jobs, note}
(+ hint cuando no existe: crearlo a mano en Toolbox).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so thoroughly: it states the tool is strictly read-only, explains the detection mechanism (Model.find and/or class scan of subnodes), and details the job-counting rule (jobs=0 unless a visible subnode contains 'job'). It also explicitly guarantees no creation, connection, or launching occurs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the text is padded with bilingual duplication ('read-only'/'SOLO LECTURA') and repeats the non-mutation guarantee several times ('nunca escribe', 'NUNCA crea, conecta ni lanza nada'). The repetition dilutes rather than strengthens the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 re-explained, yet the description still documents the JSON shape {exists, name, scenarios, jobs, note} plus the not-found hint, which is useful for anticipation. Combined with the thorough behavioral detail and parameter meaning, it is complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 for the single parameter, and it does: 'name' is defined as the Experimenter's name with a stated default of Experimenter1. This matches the schema default and adds clear meaning beyond the bare property definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line names a specific verb and resource: report the Experimenter's existence, scenarios and jobs in read-only fashion. It implicitly contrasts with the sibling flexsim_experimenter_run by insisting it never creates/connects/launches. The purpose is unambiguous, though the bilingual restatement adds clutter rather than clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 a pre-flight status/inventory check before running experiments, and the description does give a concrete next step for the not-found case ('crearlo a mano en Toolbox'). But it never explicitly says when to prefer this over flexsim_experimenter_run or flexsim_experiment_plan, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_experiment_planA

Plan read-only de escenarios del Experimenter (pre-vuelo, sin lanzar).

SOLO LECTURA (nunca escribe): detecta el Experimenter via Model.find(name)
y/o scan por clase conteniendo "experiment" (patron de la vecina
flexsim_experimenter_status) y lista escenarios como subnodos. Por cada
escenario lee hasta 20 subnodos como nombre=valor texto
(`sc.subnodes[i].name + "=" + sc.subnodes[i].value`, como `>variables`
en _chart_inspect_map) via run_script dual (ventana o Python). Solo las
entradas con forma clara variable=numero van a params; las demas van a
unreadable con sus nombres. NUNCA crea, escribe ni lanza jobs.

Args:
    name: nombre del Experimenter (default Experimenter1).
    default_seeds: semillas para flexsim_run_experiments (default [101,202,303]).
    default_run_to_time: tiempo simulado para flexsim_run_experiments (default 600).
    default_run_speed: Run Speed slider para flexsim_run_experiments (default 1000).

Returns JSON {experimenter, exists, scenarios:[{name, params, unreadable,
    source:"variables"}], seeds, run_to_time, run_speed, ready, usage}
    (+ hint cuando no existe: crearlo a mano en Toolbox).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden. Thoroughly discloses: detection method, reading up to 20 subnodes, parsing logic (variable=number into params, others into unreadable), dual run_script, and return structure with hint when missing. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose is clear, but the description is verbose with implementation details (Model.find, subnodes[i].name expressions, run_script dual) that may exceed what an agent needs, slightly reducing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values needn't be detailed, but the description omits the required 'params' wrapper, creating a completeness gap for correct invocation. Otherwise behavior and usage are well-covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0% and the top-level parameter is a nested 'params' object, but description lists name, default_seeds, etc. as direct args without mentioning the wrapper. This structural mismatch could lead to incorrect invocation; meaning of each param is given but not the required nesting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Plan read-only de escenarios del Experimenter (pre-vuelo, sin lanzar).' Clearly distinguishes from siblings by referencing flexsim_experimenter_status and providing defaults for flexsim_run_experiments, so an agent can tell it apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: pre-flight planning, read-only, never launches jobs. Implies when to use (before running experiments) but does not explicitly contrast alternatives like flexsim_experimenter_status or flexsim_run_experiments beyond mentioning them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_export_resultsB

Export a statistics snapshot to artifact_dir as CSV or JSON.

Reuses _collect_statistics (never touches PerformanceMeasures).

Args:
    artifact_dir: directory for the snapshot (created when missing).
    format: csv or json (default csv).
    filename: snapshot file name (default snapshot.csv).
    statistics: {objects, metrics} (default content/input/output basics).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load. It usefully discloses one side effect (artifact_dir is created when missing) and a scope boundary (never touches PerformanceMeasures), but leaves out overwrite behavior for existing files, permission requirements, and rate/volume limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then a tight args block. The internal '_collect_statistics' detail is slightly obscure but earns its place as a scope boundary; overall no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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. But this is a write operation with zero annotations and a nested params object, and the description does not address overwrite semantics or error conditions, leaving meaningful gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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, and it does cover all four params with defaults (artifact_dir, format csv/json, filename snapshot.csv, statistics content/input/output basics). However it omits include_time and doesn't explain the objects/metrics structure, so a gap remains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (export) and resource (statistics snapshot), plus the output formats (CSV/JSON). The reference to reusing _collect_statistics and not touching PerformanceMeasures helps distinguish it from related statistics tools, though it never names the closest sibling flexsim_get_statistics directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'export ... snapshot' and the note that it never touches PerformanceMeasures, which implicitly routes away from the performance-measure path. But it gives no explicit when-to-use vs flexsim_get_statistics or flexsim_chart_snapshot, and no prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_fluid_levelA

Read a FluidTank level, read-only (window or Python backend via run_script).

Solo lectura (ventana o Python dual via run_script, como
flexsim_get_statistics): nunca escribe. Prueba en orden, con variable
tipada (AGENTE_FLEXSIM.md sec 7: Object k = Model.find(..)):
1. k.stats.content.value, 2. k.stats.content.average. NO inventa
formulas (stats.output.value menos stats.input.value PROHIBIDO).
Propiedades verificadas en el repo (sec 6):
InterArrivalTime/ProcessTime/SetupTime/MaxContent/BatchSize; el nivel
solo se lee de vuelta (roundtrip) como numero.

Args:
    name: tanque a leer (Model.find debe resolverlo).

Returns JSON {name, metrics, note} con metrics solo con los que
resolvieron a numero (p. ej. {"content.value": 12.5}). Si ninguno
resuelve, error claro con lo intentado (tried) sin ceros inventados.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so well: it states 'nunca escribe' (never writes), specifies a fallback read order, forbids a particular incorrect formula, documents a verified roundtrip behavior, and describes error handling with 'tried' values and no invented zeros.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but it is lengthy and repeats the same information in English and Spanish. The bilingual duplication and nested procedural details make it less concise than necessary, though the technical content is mostly relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, an output schema, and a single-parameter read operation, the description is nearly complete: it covers read-only behavior, backend context, fallback attempts, and error semantics. Minor gaps remain around when to prefer this over sibling tools, but the core call is well specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema gives no description for the single 'name' parameter (0% coverage), but the prose adds meaningful semantics: 'name: tanque a leer (Model.find debe resolverlo)'. This tells the agent what the parameter represents and how it must be resolved, compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read a FluidTank level, read-only'. It clearly separates this from write operations and mentions the dual backend, but it does not directly compare with the sibling flexsim_fluid_tank tool, so sibling 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides procedural guidance for reading the level (try k.stats.content.value then average, never invent formulas) and says it works via window or Python backend. However, it does not state when to choose this tool over alternatives such as flexsim_get_statistics or flexsim_fluid_tank, leaving usage context implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_fluid_tankA

Create one FluidTank in the FlexSim window (window backend only).

Clase verificada: Object.create("FluidTank") (AGENTE_FLEXSIM.md sec 4;
crea ademas FluidTicker). Con prefijo ("Fluid::FluidTank") NO existe
(misma seccion). Otras clases de fluidos existen en la biblioteca pero
no estan probadas: listarlas a mano por flexsim_execute_script con
library().find("?fluid") (patron AGENTE_FLEXSIM.md sec 4 para
"?fixedresources"; grupo "fluid" listable segun sec 4).

Metodo (receta AGENTE_FLEXSIM.md sec 9): Object.create + name unico +
setLocation + return o.name verificado.

Propiedades: MaxContent esta verificado SOLO para Processor/Queue
(AGENTE_FLEXSIM.md sec 6); para tanques NO se asume. Si se pasan
initial_content/max_content se intenta o.setProperty + o.getProperty
roundtrip ("MaxContent" para max_content, "InitialContent" para
initial_content, ambos NO verificados en FluidTank) y si el valor leido
no coincide se devuelve warning "propiedad no efectiva en FluidTank"
SIN fallar la creacion. Propiedades verificadas en el repo (sec 6):
InterArrivalTime/ProcessTime/SetupTime/MaxContent/BatchSize; cualquier
otra solo via roundtrip con aviso.

Args:
    name: nombre unico (solo letras, digitos, _).
    x, y, z: posicion en metros (default 0, 0, 0).
    initial_content: contenido inicial deseado (opcional, roundtrip).
    max_content: capacidad deseada (opcional, roundtrip).
    overwrite: si True destruye el objeto previo con el mismo nombre.

Returns JSON {name, created, level, note} (+ warnings/error). level es
{initial_content, max_content} con los valores roundtrip que resolvieron
a numero (None cuando no se pidieron o no fueron efectivos); level es
null cuando no se pidio ninguno.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden and does well: overwrite destroys the prior same-named object, property application uses a set/get roundtrip that never fails creation but emits a "propiedad no efectiva en FluidTank" warning, and MaxContent/InitialContent are explicitly unverified for tanks. It omits duplicate-name-without-overwrite behavior and permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is bloated with repeated references to AGENTE_FLEXSIM.md sections, mixed Spanish/English, and meta-commentary about verification provenance that could be compressed. The Args/Returns blocks are efficient, but the middle prose is not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers creation recipe, property roundtrip behavior, warning semantics, and the return JSON shape {name, created, level, note} including when level is null. With an output schema present, return documentation is more than sufficient; minor gaps remain around error/duplicate handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description documents every arg: name uniqueness and character rules, x/y/z in meters with default 0, initial_content/max_content as optional roundtrip values, and overwrite semantics. This adds substantial meaning the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: "Create one FluidTank in the FlexSim window", plus a scoping caveat (window backend only). The resource is unique enough that an agent can tell it apart from generic creators like flexsim_create_objects or flexsim_create_any, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real context: verified class Object.create("FluidTank"), the non-existent prefixed variant, and the fallback of listing other fluid classes via flexsim_execute_script with library().find("?fluid"). It clarifies scope but does not state when-not-to-use this tool versus the generic creation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_get_node_valueC

Get value from a FlexSim tree node (needs the bridge).

Args:
    node_path: Path to node (e.g., "Model/Queue1/stats/input")
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the bridge prerequisite and 'get' implies a read-only operation, but it says nothing about error behavior, permissions, or what happens for an invalid path — significant gaps for a bridge-dependent call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficient and front-loaded: the core action comes first and the path example is a compact single line. The 'Args:' scaffolding is mild overhead but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is single-parameter and has an output schema, so return values needn't be explained, and the bridge dependency is noted. The unexplained 'value' field and absence of any failure-mode detail keep it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema only declares node_path as a non-empty string, so the description's path example ('Model/Queue1/stats/input') genuinely adds format meaning. However, the optional 'value' parameter present in the schema is not mentioned at all, leaving part of the contract undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get value from a FlexSim tree node'), which is clear on its own and implicitly differentiated from the write counterpart flexsim_set_node_value. It doesn't explicitly name or contrast with siblings, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(needs the bridge)' hints at a prerequisite, but there is no guidance on when to use this versus alternatives like flexsim_list_tree, flexsim_inspect_model, or flexsim_evaluate_node. Usage 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.

flexsim_get_parameterA

Read a model parameter defined in the model's Parameter Tables.

Dual backend: with the FlexSim window connected reads
Model.parameters.<name> by script; without window uses
controller.getParameter. A missing window parameter is an error
(create it with flexsim_ensure_parameter, this tool never creates).

Args:
    name: Parameter name as defined in the model
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the dual backend (FlexSim window vs controller.getParameter), the failure mode for missing parameters, and the non-creating guarantee. It does not mention permissions or any side effects, but for a read operation this is solid disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then backend behavior, then the arg. The description is appropriately short, though the hard line breaks and the redundant 'Args:' block add minor noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 details are not needed. The description covers the backend duality, the error case, and the create-vs-read boundary; only permission/context nuance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema only declares a minLength-1 string, so the description must compensate. It clarifies that 'name' refers to a parameter as defined in the model's Parameter Tables, which is useful but minimal for a single low-complexity parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (a model parameter defined in the model's Parameter Tables), which distinguishes it cleanly from flexsim_set_parameter and flexsim_ensure_parameter. An agent can identify 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: a missing window parameter is an error and should be created with flexsim_ensure_parameter, which also clarifies this tool never creates. It gives clear context but no explicit 'do not use this when...' exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_get_performance_measureA

Read a performance measure defined in the model (Statistics > Performance Measures).

This is the native way to get statistics out of a model, e.g. utilization or throughput.

Dual backend: with the FlexSim window connected reads the treenode
Model.find("Tools/PerformanceMeasureTables/PerformanceMeasures>variables/measures/<name>")
by script (discovery inline: when that path does not resolve, lists
Tools/PerformanceMeasureTables and returns the available measures as help);
without window uses controller.getPerformanceMeasure. Never creates nor
modifies rows (PerformanceMeasureTables.addRow broke OnReset).

Args:
    name: Performance measure name as defined in the model
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the dual-backend behavior (window vs controller), the inline discovery fallback that lists available measures, and explicitly that it never creates nor modifies rows (citing a prior OnReset breakage). It stops short of stating permissions or read-only guarantees in annotation terms, but the behavioral picture is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, the Args section is separated, and the backend/path detail earns its place as behavioral transparency. The treenode path is dense but justified by the discovery fallback explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 description still covers backend routing, the discovery fallback, and mutation safety. The main gap is the absence of any routing to or contrast with flexsim_get_statistics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (the 'name' property has only type/title/minLength), so the description must compensate. It adds 'as defined in the model', hinting the value must reference an existing measure, but provides no format, casing, or lookup guidance beyond that. Minimal added value for a single required param.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Read a performance measure defined in the model', and clarifies it is the native statistics-retrieval path. It does not, however, explicitly differentiate itself from the sibling flexsim_get_statistics, which appears to overlap in purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'This is the native way to get statistics out of a model' implies a usage context but never says when to choose this over flexsim_get_statistics or other read tools. No exclusions or alternatives are named, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_get_statisticsA

Read TrackedVariable statistics as JSON (window or Python backend).

Replaces hand-written `k.stats.input.value` reads. Metrics are
<group>.<field> with group in input/output/content/staytime and field in
value/average/maximum/minimum/count/rate.

Args:
    objects: names to read (default: all model objects).
    metrics: e.g. ["input.value", "content.average", "staytime.average"].
    include_time: include Model.time (default True).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose useful traits such as the JSON return type, the two backend modes (window vs Python), and the default inclusion of Model.time. It does not state permission/auth requirements, whether the call has side effects beyond reading, or any cost/rate considerations, leaving notable behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then a structured Args block. Sentences are tight and every line adds information; sizing is appropriate for a tool with a nontrivial metrics grammar.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 details are not required, and the description covers the key parameter semantics and the metrics grammar. It is broadly complete for calling the tool correctly, though it omits the objects cap and says nothing about how multiple backends affect results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: objects defaults to all model objects, include_time defaults to True and adds Model.time, and metrics is documented via a grammar (<group>.<field>) plus concrete examples. Only minor gaps remain (e.g., the 50-item cap on objects is not mentioned).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Read TrackedVariable statistics as JSON'. It also clarifies the retrieval mechanism ('window or Python backend') and that it supersedes manual `k.stats.input.value` reads, which makes the function recognizable. It does not explicitly contrast itself with nearby siblings like flexsim_get_performance_measure or flexsim_get_node_value, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Replaces hand-written k.stats.input.value reads' implies the intended use case (fetching tracked-variable metrics instead of scripting them). However, there is no explicit guidance on when to prefer this over flexsim_get_performance_measure, flexsim_get_time, or direct node reads, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_get_timeB

Get current simulation time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe how it behaves—e.g., whether it returns a timestamp format, if it requires an active simulation, error conditions, or performance implications. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with zero waste—'Get current simulation time' is front-loaded and perfectly concise. Every word earns its place, making it easy for an agent to parse quickly without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is minimally adequate. It states the purpose but lacks context on usage, behavior, or output format. The output schema existence means the description doesn't need to explain return values, but it should still cover more behavioral aspects for a tool in a simulation environment.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The baseline for 0 parameters is 4, as the description appropriately avoids unnecessary parameter details. It doesn't add or detract from parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get current simulation time' clearly states the verb ('Get') and resource ('current simulation time'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'flexsim_get_statistics' or 'flexsim_get_node_value' beyond the obvious time focus, so it doesn't reach the highest tier of sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requires a running simulation), exclusions, or comparisons to similar tools like 'flexsim_step' or 'flexsim_run_to_time' for time-related operations. The agent must infer usage 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.

flexsim_gui_statusA

Say whether a FlexSim window (Student license, can create objects) is connected.

To connect: flexsim_prepare_gui_model opens a copy of the template in FlexSim, which connects
by itself (On Model Open runs mcp_start()). While connected, the script/node/run tools act on
that window instead of the Python backend.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral load and largely does: it discloses that connection is automatic on model open and, importantly, that a connected GUI reroutes other tools away from the Python backend — a non-obvious side effect an agent needs. It omits the disconnected-state behavior and any failure/error semantics, which keeps it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the answer this tool produces, then the how-to-connect note, then the routing implication. The parenthetical about the Student license and mcp_start() is slightly dense but each sentence earns its place. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 prose. Given a zero-parameter status tool, the description covers state meaning, the license constraint, the connection path, and the behavioral impact on sibling tools — enough for correct invocation. Only the disconnected/false case and any diagnostic guidance are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline of 4 applies. No parameter text is expected or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: reports whether a FlexSim GUI window is connected, plus the license context (Student, can create objects). An agent can tell what it returns at a glance. It does not, however, distinguish itself from the near-identical sibling flexsim_bridge_status, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the concrete prerequisite path (flexsim_prepare_gui_model opens the template copy and self-connects via mcp_start()) and explains the downstream consequence of a connected state — script/node/run tools act on that window instead of the Python backend. That is genuinely actionable context, though it never states when *not* to call this tool or how it relates to the other status/ping siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_import_shapeA

Import a 3D shape file onto an existing object (window backend only).

Receta verificada en Commands.xml local (FlexSim 2026,
help/CommandReference/Commands.xml; usar EXACTAMENTE estos comandos y firmas):
- loadthreedobject(str file, str name)->num "Load a 3D model directly...
  recorded in Media List" (el cargador; paths con / simples).
  Ejemplo XML: loadthreedobject("c:/myshape.wrl","myshape")
- getshapeindex(str name) con DOBLE backslash obligatorio ("The file path
  name used in this command must use double backslashes as shown in the
  example"). Ejemplo XML: getshapeindex("fs3d\\Operator\\BasicOperator\\Chest.3ds");
- setobjectshapeindex(obj object, num index) + verificacion
  getobjectshapeindex(obj object). Ejemplo XML:
  setobjectshapeindex(item,getshapeindex("fs3d\\Processor.3ds"));
  ejemplo get: getobjectshapeindex(item);
- truncatemediapath(str path) para reportar como quedo referenciado
  ("If this file exists relative to the model directory, then the path
  will be truncated to be relative to the model directory").
- applyshapefactors(obj object) tras set de o.size.x/y/z ("This command
  applies all of the shape factors to the object if it has any").
  Ejemplo XML: applyshapefactors(item);

Vecinas leidas antes de escribir: flexsim_create_objects (patron
require_gui + Model.find NULL-check + Object.create/name/setLocation +
check_script_safety por script + format_error), _last_link (helpers de
verificacion por colecciones), fs_string (citado de strings via json.dumps,
que produce el \\ doble en fuente FlexScript a partir de un valor con
\ simple) y require_gui (solo ventana).

Contrato: EXITO devuelve JSON {object, file, copied, shape_name,
shape_index, assigned_index, media_ref, size} (+ "warning" solo cuando
getshapeindex difiere del idx de load). ERRORES son texto plano
"Error:/Not found:/Blocked for safety:" como el resto de tools simples
(NO {"error":...}); el exito es el unico caso JSON.

Flujo: 1) existe objeto (Model.find NULL-check). 2) si
copy_next_to_model: destino = dir(_gui_model_path o _current_model)+nombre;
si el archivo ya esta ahi, no copiar; shutil.copyfile (Python, no
FlexScript) + reporta copied:true/false. 3) loadthreedobject(abs con
slashes, shape_name) -> idx; si idx==0 -> error "no cargo (formato? ver
lagunas)" SIN seguir. 4) getshapeindex(abs con \) debe == idx (si
difiere, warning pero sigue con idx de load). 5) setobjectshapeindex +
getobjectshapeindex de vuelta == idx -> si no, error. 6) set_size_xyz
se IGNORA a propósito (o.size rompe el render de importadas; escalar
el archivo con utility/scale_stl.py).

IMPORTANTE: asignaciones por script son POR SESIÓN (verificado
2026-09-27: tras guardar+reabrir no persisten). Usar manifiesto +
flexsim_apply_shapes al abrir el modelo.

Lagunas: escala real por verificar visual; reset puede revertir
textura (shape no documentado).

Args:
    file_path: archivo existente; extension en {.skp,.fbx,.obj,.stl,.dae,
        .3ds,.wrl,.x,.blend,.usd,.jt,.igs,.stp,.step,.glb} case-insensitive.
    object: debe existir via Model.find, si no Not found.
    shape_name: default = stem sanitizado [A-Za-z0-9_].
    copy_next_to_model: default True.
    set_size_xyz: aceptado pero ignorado (ver arriba).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so thoroughly: it documents session-only script assignments, the plain-text error format, the success JSON contract, copy behavior, verification steps, and known limitations. It also warns that set_size_xyz is intentionally ignored and why.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description is heavily overloaded with internal verification notes, command snippets, XML examples, and mixed-language commentary that do not all help an agent select or invoke the tool. Much of the implementation detail could be moved out or summarized without losing decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, lack of annotations, and the existence of an output schema, the description is complete enough: it covers prerequisites, flow, error modes, return contract, persistence caveats, and known gaps. An agent has what it needs to call the tool correctly and interpret outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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, and it does: it explains file_path extensions, object existence requirements, shape_name sanitization default, copy_next_to_model default, and the intentionally ignored set_size_xyz argument. This adds meaning well beyond the bare schema types and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource: importing a 3D shape file onto an existing object, with the window-backend scope stated up front. The description also implies the relationship to flexsim_apply_shapes for persistence, so an agent can distinguish this import action from later reapplication.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context (window backend only) and an explicit flow for when and how to use the tool, including the copy-next-to-model and verification steps. It also names flexsim_apply_shapes for reopening a model, but does not systematically compare all alternative shape-related siblings or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_inspect_modelA

List every object of the model in the FlexSim window as JSON (window backend).

For each object: name, class, position [x, y, z], `to` (flow connections), `resources` (resource
connections such as an Operator) and, for Source/Queue/Processor/Sink/Combiner/Separator/MultiProcessor,
`stats` {input, output, content_avg, content_max}. Also returns the simulation time.

Student (100 objetos, docs oficiales FlexSim): si count>=85 agrega `license_hint` # CNT-limite
"85+/100 objetos (límite licencia Student; ver GUIA)"; si count>100 informa igual # CNT-limite
(la ventana lo permite abrir pero FlexSim bloquea). # CNT-limite
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and it does add real behavioral context: the per-object payload shape, which classes carry `stats`, that simulation time is returned, and especially the Student-license count thresholds (85+/100) that trigger a `license_hint`. It omits safety/profile traits (read-only, prerequisites), keeping it 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded and the field list is useful, but the Student-license block is cluttered with inline '# CNT-limite' markers and mixed-language commentary that add noise without much clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 spelled out, and the description still covers payload shape, the license behavior, and the returned simulation time. Nothing critical for calling a zero-parameter read tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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; the description correctly adds no parameter guidance because none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List every object of the model... as JSON') and the window-backend scope. It is distinguishable from read-oriented siblings like flexsim_list_tree or flexsim_get_statistics by its whole-model object dump, but it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(window backend)' implies the operating context but gives no explicit when-to-use or when-not-to-use guidance relative to siblings such as flexsim_list_tree or flexsim_get_statistics. Usage is only loosely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_layout_lineA

Place existing objects along X or Y (window backend only).

New objects spawn at the origin; this lines them up like Source(0) Queue(6) ...
Default spacing is 6 m (recipe in AGENTE_FLEXSIM.md sec 9).

Args:
    names: existing objects in line order.
    start_x, y, z: position of the first object.
    spacing: gap in meters (default 6).
    axis: x or y.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the backend restriction, the origin behavior of new objects, and the default spacing, but it does not state whether existing object positions are overwritten, whether the operation is reversible, or what happens if a named object is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and uses a compact Args list. Every sentence contributes useful information: the core action, backend constraint, origin behavior, default spacing, and parameter meanings.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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. The description covers the critical backend constraint and all parameters, but with no annotations it could say more about mutation side effects and failure modes for a tool that repositions existing objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must define the fields, which it does: names in line order, start_x/y/z as the first position, spacing in meters, and axis as x or y. It adds substantial meaning beyond the bare schema, though it omits schema constraints such as the minimum of 2 names, maximum of 50, and coordinate ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource: 'Place existing objects along X or Y.' It also adds a backend constraint, but it does not differentiate this tool from sibling layout/mutation tools such as flexsim_create_objects or flexsim_set_node_value, so it falls short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Place existing objects along X or Y' and the 'window backend only' note, which gives context for when the tool applies. However, there is no explicit guidance on when to choose this over alternatives like flexsim_apply_shapes or flexsim_set_view, and no when-not conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_library_listA

List library class names in a group as JSON (window or Python backend). # LIB-people

Solo lectura (dual via run_script, como flexsim_dashboard_list): usa el
patron VERIFICADO de AGENTE_FLEXSIM.md sec 4:
treenode g = library().find("?group"); loop g.subnodes[i].name.

Vecinas leidas antes de escribir: flexsim_person_create (una sola clase
libre del grupo people) y flexsim_dashboard_list (filtra por clase en
Python con subcadena).

Grupos conocidos (AGENTE_FLEXSIM.md sec 4): fixedresources, taskexecuters,
conveyor, warehousing, people, travelnetworks, statistics, processflow,
fluid, AGV, astar, agent, Submodels.

Args:
    group: grupo de la biblioteca (default "people"). Validado con
        ^[A-Za-z0-9_]+$ (sin inyeccion: se cita con fs_string).
    pattern: subcadena opcional para filtrar clases (default "" = sin
        filtro). Subcadena Python `in`, sin regex inyectable (nunca va al
        FlexScript).

Returns JSON {group, count, classes:[...filtradas...]}. Si el grupo no
existe devuelve error claro con la lista de grupos conocidos.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose useful behavior: it is read-only, works on a dual backend, and returns a clear error listing known groups when the group is invalid. It does not mention permissions or latency, but the safety profile and error path are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line, but the body is bloated with implementation notes (a FlexScript snippet, 'Vecinas leidas antes de escribir', a full known-groups list) that serve the author more than an agent choosing a tool. Content is useful but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema present, the description need not explain return values, and it still covers parameters, error behavior, and valid group names. An agent has enough to call it correctly, though permissions and backend selection could be clearer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it explains the group default ('people'), its regex validation and injection protection, and the pattern substring semantics (optional, Python `in`, not a regex, never sent to FlexScript). This meaningfully exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource: 'List library class names in a group as JSON', so an agent knows exactly what it returns. It also references siblings (flexsim_dashboard_list, flexsim_person_create) to situate itself, though the distinction is by analogy rather than by explicit contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It signals read-only use and cites a documented pattern ('Solo lectura (dual via run_script...)' referencing AGENTE_FLEXSIM.md sec 4), but never states explicitly when to reach for this tool versus the many other list/introspection siblings. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_list_treeC

List tree subnodes as JSON (window or Python backend via run_script).

Usa run_script (dual, como flexsim_get_node_value), NO evaluate_node (solo-Python),
asi funciona en ventana. Dado path lista subnodos directos (nombre + clase via
node() + subnodes loop + getname(classobject())) hasta depth con limite max_nodes;
para depth>1 itera niveles con un script por nodo/padre desde Python. Devuelve
JSON {path, nodes: [{name, class, path}]}. path se valida contra inyeccion (solo
alfanumericos, /, _, -, >, :, espacios; rechaza ".." y ";").

Args:
    path: tree path (default "Model").
    depth: 0-3 levels (default 1; 0 returns no children).
    max_nodes: cap for returned nodes (default 100).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the return shape, the depth>1 iteration behavior, and the injection-validation rules on path. However, it never states the operation is read-only/non-mutating, nor any error or permission behavior, and is cluttered with implementation internals rather than agent-relevant traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is bilingual and mixes agent-facing purpose with implementer internals (run_script, node(), classobject(), subnodes loop). The key purpose is front-loaded in one line, but the body is bloated and hard to parse, with no clean separation of usage, behavior, and arguments.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 not strictly required, and the description still provides it. The Args section covers all three parameters, giving an agent enough to call the tool. But the muddled bilingual phrasing and implementation noise leave the definition only adequate, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The Args block does add some meaning beyond the schema: 'depth: 0 returns no children' and 'max_nodes: cap for returned nodes' clarify semantics the schema does not. But path is only described tautologically as 'tree path', and the rest largely restates defaults/ranges already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening states a specific verb+resource: 'List tree subnodes as JSON'. That is clear enough for an agent to know what the tool does. It stops short of a crisp sibling differentiation, since the routing hints (run_script vs evaluate_node) concern internal mechanics rather than why an agent would pick this over flexsim_inspect_model or flexsim_get_node_value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the implementer which backend to use ('Usa run_script ... NO evaluate_node'), but that is not agent-facing when-to-use guidance. There is no statement of when to call flexsim_list_tree versus flexsim_inspect_model, flexsim_get_node_value, or other read tools in the family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_new_modelA

Create a new model from the bridge template and open it.

FlexSim has no script command to create a blank model, so this copies the template
(config.toml [bridge] template_model, which already contains the bridge node) to a new
.fsm file and opens it.

Args:
    model_path: Path of the new .fsm file (must not exist yet)

Example:
    model_path="C:/Models/warehouse.fsm"
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does so reasonably: it discloses the write side effect (a new .fsm file is created on disk), that the model is opened, and the precondition that model_path 'must not exist yet.' It omits error behavior (e.g., missing directory, existing file) and any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action in the first sentence, then explains rationale and args in clearly separated blocks. The config.toml parenthetical is a touch verbose but earns its place by explaining the template source.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter creation tool with an output schema, the description covers purpose, mechanism, the parameter constraint, and returns are handled by the output schema. Only edge-case/error behavior is left unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 identifies model_path as the path of the new .fsm file and adds a critical constraint ('must not exist yet') not present in the schema, plus a concrete example value. This meaningfully exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new model from the bridge template') and discloses the mechanism (copies the template to a new .fsm and opens it). An agent can tell this creates-from-template rather than opening (flexsim_open_model) or cloning (flexsim_clone_model), 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the constraint that 'FlexSim has no script command to create a blank model,' which explains why this tool exists. However, it never states when to prefer it over flexsim_open_model or flexsim_clone_model, nor any explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_open_modelB

Open a FlexSim model file.

Args:
    model_path: Path to .fsm or .fsx file

Example:
    model_path="C:/Models/warehouse.fsm"
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the action ('Open a FlexSim model file') but lacks behavioral details: it doesn't specify if this loads the model into memory, requires specific permissions, affects other operations (e.g., closing previous models), or has side effects like initialization. The example adds minimal context but is insufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by a clear Args section and a practical example. Every sentence earns its place: no fluff, and the structure (purpose, parameters, example) is logical and efficient for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 1 parameter with low schema coverage and an output schema (which reduces need to explain returns), the description is minimally adequate. It covers the parameter semantics well but lacks behavioral context (e.g., what 'opening' entails, error handling). For a tool that likely mutates state (opening a model), more detail on effects and usage context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate, which it does effectively. It explains 'model_path' as 'Path to .fsm or .fsx file' and provides an example with a concrete path, adding meaning beyond the schema's generic 'Model Path' title. However, it doesn't detail path format constraints (e.g., absolute vs. relative, network paths).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Open') and resource ('FlexSim model file'), making the purpose immediately understandable. It distinguishes from siblings like 'flexsim_new_model' (creates new) and 'flexsim_save_model' (saves existing), though not explicitly. However, it doesn't fully differentiate from all siblings (e.g., 'flexsim_compile' might also involve opening).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., if a model must be opened before running or evaluating), nor does it specify when not to use it (e.g., for new models vs. existing ones). The example shows usage but lacks contextual rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_paint_meatA

Pinta como carne los items que ya salieron de las estaciones indicadas.

Los items que estan POST-desencajado (en transit hacia picadora: queues Pie*,
cintas BeltDT*, y dentro de las picadoras) reciben la forma carne_1m5.stl y
color carne. Correr tras cada reset+run: el shape de items no persiste en el
.fsm (limitacion FlexSim: media por sesion, verificado 2026-09-27).

Args:
    from_objects: estaciones cuya salida se pinta (default DesT1/T2/L3).
    file_path: STL de carne (default: proyecto).
    shape_name: nombre de media para loadthreedobject (idempotente).
    color_rgb: color 0-1 (default rojo-marron carne).

Returns JSON {painted: {object: n}, shape_index, errors:[...]}.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does so well: it discloses the session-persistence limitation of shapes in the .fsm, states that shape_name loading is idempotent, and specifies the timing constraint (after each reset+run). It omits auth/permission and error-handling behavior, but for a local FlexSim media operation this is strong disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first line, followed by the scope condition, timing requirement, and Args/Returns blocks. Most sentences earn their place, though the verified-date note and repeated full STL path are minor excess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, yet the description still summarizes the JSON return shape. Combined with defaults, timing, and persistence caveats, an agent has enough to call it correctly; only auth/error semantics are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it defines each of the four params (from_objects as source stations with default DesT1/T2/L3, file_path as the STL, shape_name as the media name, color_rgb as 0-1 channels). It even supplies a default for from_objects that the schema lacks, though it could state the exact color channel order.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Pinta como carne los items') and narrows scope to items already output from the named stations, distinguishing it from generic shape tools like flexsim_apply_shapes or flexsim_import_shape by specifying post-unboxing items in transit toward the picadora.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives a when-to-use condition ('Correr tras cada reset+run') because the shape does not persist across sessions, and identifies the target population (post-desencajado items in Pie*/BeltDT*/picadora queues). It does not, however, name sibling alternatives or when NOT to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_person_createA

Create one people object in the FlexSim window (window backend only).

Via recomendada ahora (# LIB-people): flexsim_library_list +
flexsim_create_any; esta tool queda como caso simple de una sola clase.

OJO: "Person" NO esta verificado como clase creable. El grupo ?people
es listable (AGENTE_FLEXSIM.md sec 4) pero sin prueba de creacion en el
repo. Por eso person_class es LIBRE (default "Person"): se intenta
Object.create(person_class) + name + setLocation + return verificado
(receta AGENTE_FLEXSIM.md sec 9) y si FlexSim responde error/nombre
distinto se devuelve created:false con el error real, sin mentir exito.

Clases candidatas: grep 2026-09-26 de people/Person/Staff/Patient en
AGENTE_FLEXSIM.md y mcp_server/flexsim_mcp.py solo hallo el grupo
`people` listable (sec 4), sin clases candidatas verificadas; por eso
NO se sugieren 2-3 clases aqui (no hay de donde sacarlas sin inventar).

Para listar candidatas reales hacerlo a mano por flexsim_execute_script
con: treenode g = library().find("?people"); string s = ""; for (int i
= 1; i <= g.subnodes.length; i++) s = s + g.subnodes[i].name + ", ";
return s; (patron AGENTE_FLEXSIM.md sec 4 para "?fixedresources").

Args:
    person_class: clase libre del grupo people (default "Person",
        no verificado).
    name: nombre unico (solo letras, digitos, _).
    x, y, z: posicion en metros (default 0, 0, 0).
    overwrite: si True destruye el objeto previo con el mismo nombre.

Returns JSON {name, class, created} o {name, class, created:false,
error, hint} con hint "listar grupo ?people con
library().find(\"?people\") por execute_script". Nunca miente exito.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses that 'Person' is unverified as a creatable class, that failure returns created:false with the real error and never fakes success, and that overwrite 'destruye el objeto previo con el mismo nombre' (destructive semantics). It also reveals the internal create recipe and the window-only backend constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the body is bloated with process meta-commentary: grep history dated 2026-09-26, repeated AGENTE_FLEXSIM.md section citations, and an inline execute_script code snippet for manually listing candidates. These do not earn their place in a tool definition an agent must parse at selection time, and the Spanish/English mix adds friction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and a nested schema with 0% property descriptions, the description is thorough about behavior, failure modes, and arguments. An output schema exists, yet it still restates the return shape, which is redundant but harmless. The main completeness gap is that no verified candidate class is offered, which the description honestly explains rather than inventing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it describes every argument: person_class (free/unverified, default 'Person'), name (letters/digits/_ only), x/y/z (position in meters, default 0,0,0), and overwrite (destroys any prior object with the same name). It adds units and destructive meaning beyond the bare schema, though x/y/z are treated only briefly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb and resource ('Create one people object in the FlexSim window') and immediately scopes it ('window backend only'). It also explicitly names the sibling alternative (flexsim_library_list + flexsim_create_any) that this tool competes with, so an agent can distinguish 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear recommended path ('Via recomendada ahora (# LIB-people): flexsim_library_list + flexsim_create_any') and positions this tool as 'caso simple de una sola clase'. That is explicit alternative-routing guidance, though the condition for choosing this tool is stated obliquely rather than as a crisp when/when-not rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_pf_add_activityA

Add one ProcessFlow activity object at model level (window backend only).

Vecinas: flexsim_processflow_ping (crea ProcessFlow::ProcessFlow + inventario)
y flexsim_processflow_inventory (solo lectura: clase + in/out counts).

Catalogo minimo (NO verificado: construir actividades no se probo,
AGENTE_FLEXSIM.md sec 3c): solo Object.create("ProcessFlow::ProcessFlow")
esta verificado (sin prefijo "ProcessFlow" da `is not a valid class name`).
Por eso activity_class es LIBRE (default "ProcessFlow::Delay") y estos
candidatos llevan prefijo "ProcessFlow::" por analogia, pendiente de
verificacion: "ProcessFlow::Delay", "ProcessFlow::Source",
"ProcessFlow::Sink", "ProcessFlow::Process" (o sin prefijo? incierto).

La lista exacta sale de la biblioteca via:
  execute_script: treenode g = library().find("?processflow"); string s = "";
    for (int i = 1; i <= g.subnodes.length; i++) s = s + g.subnodes[i].name + ","; return s;
(patron AGENTE_FLEXSIM.md sec 4 para "?fixedresources"; grupos verificados
incluyen "processflow"). flexsim_list_tree lista el arbol del modelo
(path="Model"), no la biblioteca, asi que para clases use execute_script.

Metodo (solo comandos verificados): Object.create(activity_class) +
o.name + o.setLocation(x, y, 0) + return o.name (receta AGENTE_FLEXSIM.md
sec 9). NO parenta al flow: en este repo no hay forma verificada de mover
un objeto como subnodo del ProcessFlow (grep: solo Tools.create,
createcopy bajo Tools/GlobalTables y Object.create; ningun movetomodel/
parent verificado), asi que se crea a nivel modelo y se devuelve
attached:false.

Args:
    flow: ProcessFlow existente (debe existir via Model.find).
    activity_class: clase libre (default "ProcessFlow::Delay").
    name: nombre unico de la actividad.
    x, y: posicion (z=0).

Returns JSON {activity, flow, activity_class, attached:false,
    note:"attach al flow pendiente de verificacion"}.
Limite: attached siempre false; el attach al flow queda pendiente.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so substantively: it discloses that the object is NOT parented to the flow, that attached is always false, the exact command sequence used, and which steps remain unverified. This is unusually candid about side effects and uncertainty, though it stops short of covering auth/permissions or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is useful but heavily bloated and bilingual, with repeated hedging about verification status and an embedded script snippet. The purpose is front-loaded, but the middle sprawls across uncertainty notes that could be compressed substantially.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, yet the description supplies them anyway. Combined with the limitation disclosure (attach pending, attached:false) and full parameter coverage, an agent has enough to call this correctly; only error/permission behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% – the individual properties (flow, name, x, y, activity_class) have no descriptions. The prose compensates: it explains flow must exist via Model.find, that name must be unique, that x/y are position with z=0, and gives the default and candidate values for activity_class. That is a meaningful lift over the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+scope: 'Add one ProcessFlow activity object at model level (window backend only)'. It also names and characterizes the neighboring tools (flexsim_processflow_ping, flexsim_processflow_inventory), though these are not true alternatives to this operation, so sibling differentiation is partial rather than clean.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a key constraint ('window backend only', activity always created at model level) and routes the agent to execute_script for discovering valid classes. However, it never says explicitly when to choose this tool over the other pf_* siblings (pf_attach, pf_connect, pf_run_tokens); usage 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.

flexsim_pf_attachA

Move a model-level activity INSIDE its ProcessFlow (window backend only).

Vecinas leidas antes de escribir (sin duplicar nombres de inputs):
flexsim_pf_add_activity (crea a nivel modelo, attached:false),
flexsim_pf_connect (resuelve flow/actividad + token line "A") y
flexsim_processflow_inventory (solo lectura: clase + in/out counts).

Metodo (solo ventana): moveobject(object, containerobject) de la
referencia FlexSim BasicModelingFunctions ("moves the object out of its
current container into its new container") para mover la actividad
creada por pf_add_activity dentro del flow. Verifica con el parent:
Model.find("flow/activity") != NULL tras mover.

Args:
    flow: ProcessFlow contenedor (debe existir via Model.find).
    activity: actividad a mover (nombre corto, creada a nivel modelo).

Returns JSON {activity, flow, attached, parent_path} (+ error real
cuando attached=false, sin mentir).
Limite: la semantica token de ProcessFlow no esta verificada end-to-end.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load and does well: it discloses the underlying operation (moveobject), a post-condition verification (Model.find('flow/activity') != NULL), the return keys, error behavior when attached=false ('sin mentir'), and an honest limitation about unverified token semantics. It omits any permission/auth requirements or side effects on existing connections.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the sections (neighbors, method, args, returns, limit) are organized, but the text is verbose and mixes Spanish and English, including meta-commentary about which tools were 'read before writing' and a manual quote. Some of this is redundant overhead that dilutes an otherwise serviceable structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation tool with an output schema, the description covers the operation, prerequisite workflow, return shape, and an explicit limitation. The output schema makes explaining return values optional (it explains them anyway), and the only real gap is the absence of failure/permission guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 and largely does: 'flow' is defined as the ProcessFlow container that must exist via Model.find, and 'activity' as a short-name activity created at model level. The pattern/length constraints live only in the schema, but the semantic meaning of each parameter is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line gives a precise verb+resource+destination ('Move a model-level activity INSIDE its ProcessFlow') and scopes it ('window backend only'). It explicitly distinguishes itself from siblings by naming flexsim_pf_add_activity as the tool that creates at model level with attached:false, so an agent can route correctly 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the prerequisite/related tools to consult first (pf_add_activity, pf_connect, processflow_inventory) and the implicit workflow of create-at-model-level then attach, plus the 'window backend only' constraint. It stops short of stating explicit when-not-to-use conditions or what to do if the activity is already attached.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_pf_connectA

Connect two ProcessFlow activities with a token line (window backend only).

Los paths de actividades dentro del flow son inciertos, asi que primero
RESUELVE ambos (solo lectura, sin escribir): Model.find("flow/src"),
Model.find("src") (nivel modelo, donde flexsim_pf_add_activity crea) y
scan de subnodos del flow por nombre. Si alguno no resuelve, devuelve error
con los candidatos probados y no escribe nada.

Si resuelve: contextdragconnection(Model.find(from), Model.find(to), "A")
(forma no obsoleta de flujo, como flexsim_connect_objects) y verificacion
outObjects via _last_link (guard length==0, mismo helper de
flexsim_connect_objects).

Args:
    flow: ProcessFlow contenedor (para candidatos "flow/actividad").
    source: actividad origen (nombre corto).
    target: actividad destino (nombre corto).
    verify: comprobar outObjects (default True).

Returns JSON {resolved_from, resolved_to, verified} (+ last_out / error).
Limite: la semantica token de ProcessFlow no esta verificada end-to-end
(sin corrida de tokens de prueba); solo se verifica el enlace outObjects.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the read-only resolution step first, that it writes nothing on failure, the verification via _last_link with length==0 guard, and candidly flags that ProcessFlow token semantics are NOT verified end-to-end. That limitation disclosure is exactly the kind of behavioral context that adds value. It could still note permission/auth needs or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded, but the description is long, dense, and bilingual, mixing English and Spanish mid-sentence. Several clauses (Model.find candidate probing, _last_link helper) are implementation detail an agent invoking the tool does not need, diluting the signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with an output schema, the description covers resolution strategy, failure behavior, verification, args, return shape, and a known limitation. An output schema exists so return-value explanation is not strictly required. What remains missing is guidance on required permissions or environment prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: an Args section defines flow as the container for 'flow/actividad' candidates, source/target as short names, and verify as the outObjects check defaulting to True. This meaningfully exceeds the bare string/boolean schema, though it does not restate the regex/length constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Connect two ProcessFlow activities with a token line', which an agent can distinguish from object-level siblings. It even names flexsim_connect_objects as the analogue whose behavior it mirrors. It stops short of explicitly differentiating from the closest siblings like flexsim_pf_add_activity or flexsim_pf_attach, so not a full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: it is for linking ProcessFlow activities and only works on the 'window backend'. There is no explicit when-to-use vs when-not, nor a stated alternative for connecting activities in other backends. The routing guidance is present but must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_pf_run_tokensA

Observe ProcessFlow state across a short reset+run (window backend only).

Vecinas leidas antes de escribir: flexsim_processflow_inventory
(inventory-like script por subnodos del flow) y flexsim_run_to_time
(flujo ventana: stoptime + applicationcommand run + espera
getrunstate==0 con deadline). SOLO LECTURA + RESET/RUN: no construye
nada (no crea actividades ni inyecta tokens).

Flujo minimo inline en esta tool (sin duplicar helpers): conteo antes
via subnodos del flow, resetmodel, Run Speed 1000 via
node("MAIN:/project/exec/step").value, stoptime(60) +
applicationcommand("run"), espera getrunstate==0 con deadline, conteo
despues.

Args:
    flow: ProcessFlow existente (si no existe, error claro).
    arrivals: referencia esperada de arribos (default 5, 1-100; solo
        referencia, no se inyecta nada: solo lectura).

Returns JSON {flow, before, after, arrivals_observed, note} con
note="tokens inferidos por cambio de estado, semántica token no
verificada a fondo". before/after son conteos de subnodos del flow;
arrivals_observed = after - before (puede ser 0: los tokens runtime no
siempre cambian subnodes).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it discloses the reset+run side effect, sets run speed to 1000, applies stoptime(60)+applicationcommand('run'), and waits for getrunstate==0 under a deadline. It also flags a behavioral caveat ('tokens runtime no siempre cambian subnodes', arrivals_observed can be 0). It stops short of explicitly warning that the reset discards current simulation state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded, but the body is dense, bilingual, and repetitive (the 'no construye/inyecta' point recurs; the reset/run sequence is described twice). Implementation minutiae (node(...).value) crowd out signal. It is serviceable but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a reset+run observation tool with no annotations, the description covers the mechanism, arguments, side effects, and result caveats adequately. An output schema already exists, so the explicit 'Returns JSON {...}' explanation is bonus rather than necessity, and the overall picture is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 and largely does: 'flow' is defined as an existing ProcessFlow (clear error if missing), and 'arrivals' is clarified as a non-injected reference with default 5 and range 1-100. This adds real meaning the bare schema lacks, though it omits how/why the reference value matters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Observe ProcessFlow state across a short reset+run.' It distinguishes itself from the builder siblings by stating 'no construye nada (no crea actividades ni inyecta tokens).' It is clear on what it does, though the mixed-language and implementation-heavy body dilutes the focus somewhat.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a key precondition ('window backend only') and names the read neighbors (flexsim_processflow_inventory, flexsim_run_to_time), implying when this fits. However it never states explicitly when to use this tool instead of flexsim_run_to_time or flexsim_processflow_inventory, nor when not to use it. 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.

flexsim_prepare_gui_modelA

Copy the GUI template to a new .fsm and open that copy in the FlexSim window.

Work on the copy, never on the template. The model's On Model Open trigger runs mcp_start(),
so the window connects by itself in about 20 s; check flexsim_gui_status. If it does not
(for example the MCP server was restarted), run `mcp_start();` in its Script console.

Args:
    model_path: Path of the new .fsm file (must not exist yet)
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the auto-connect via the On Model Open trigger, the ~20 s delay, the status-check step, and the manual `mcp_start();` fallback. The 'must not exist yet' constraint also flags a creation-safety behavior not visible 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, followed by operational notes and then the args block. Each sentence earns its place; nothing is redundant padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 fully covers the operational workflow, precondition, and recovery step for this single-parameter tool. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (the property is only typed as a string with minLength 1), so the description must compensate. It does: model_path is 'Path of the new .fsm file (must not exist yet)', adding format and precondition semantics the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Copy the GUI template to a new .fsm and open that copy in the FlexSim window.' This clearly distinguishes it from siblings like flexsim_new_model (creates fresh), flexsim_open_model (opens existing), and flexsim_clone_model (clones). An agent can tell exactly what this does 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit operating guidance ('Work on the copy, never on the template') and the post-copy connection workflow including the fallback if mcp_start() doesn't fire. What's missing is an explicit statement of when to choose this over flexsim_new_model or flexsim_open_model, but the workflow context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_processflow_inventoryA

List ProcessFlow activities read-only (window backend only, never creates).

Solo lectura (a diferencia de flexsim_processflow_ping que puede crear):
lista subnodos del ProcessFlow + por cada actividad su clase y conteo de
conexiones (inObjects/outObjects length). Nunca crea nada.

Args:
    name: ProcessFlow object name (default ProcessFlow1).

Returns JSON {exists, activities: [{name, class, in_count, out_count}], note}.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well: it repeatedly asserts read-only ('Solo lectura', 'Nunca crea nada', 'never creates') and flags the window-backend constraint. It does not cover permissions, rate limits, or failure behavior when the named ProcessFlow is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core read-only claim and the sibling contrast before the Args/Returns blocks, so the important information comes first. The bilingual duplication of the read-only message makes it longer than strictly necessary, though every sentence still carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool, the description covers what it reads, its safety profile, its parameter, and its return shape, and an output schema also exists so return values need not be spelled out further. The remaining gap is failure/absence handling for a nonexistent ProcessFlow name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'name' parameter has 0% schema description coverage, so the description must compensate: it states the meaning ('ProcessFlow object name') and the default ('ProcessFlow1'), which the schema only encodes as a machine-readable default. It omits any note about the pattern/length constraints the schema enforces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List ProcessFlow activities read-only') with explicit scope: subnodes plus each activity's class and connection counts. It also names the sibling flexsim_processflow_ping and how this tool differs from it, so an agent can route 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description contrasts this tool against flexsim_processflow_ping ('a diferencia de ... que puede crear'), which is an explicit condition for choosing the read-only variant, and notes it is 'window backend only'. It stops short of a full when/when-not statement, but the routing cue is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_processflow_pingA

Inventory a ProcessFlow without building activities (window backend only).

Creates ProcessFlow::ProcessFlow when missing (create_if_missing) and lists
existing subnodes/activities via Model.find + subnodes loop. Never builds
activities (no verificado, AGENTE_FLEXSIM.md sec 3c). See also
flexsim_processflow_inventory for read-only activity detail
(class + in/out counts, never creates).

Args:
    name: ProcessFlow object name (default ProcessFlow1).
    create_if_missing: create it when absent (default True).

Returns JSON {exists, activities, note} (plus name for traceability).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it does well: it discloses that it creates ProcessFlow::ProcessFlow when missing (create_if_missing), that it never builds activities, and that it operates on 'window backend only.' It references a security/verification note (AGENTE_FLEXSIM.md sec 3c). It doesn't describe idempotency, permissions, or side effects beyond creation, but for a 'ping'/'inventory' tool with an output schema, this is solid disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then behavioral detail, then a sibling pointer, then Args and Returns. It is appropriately sized and every section earns its place. Slightly verbose in the parenthetical citations and the sibling comparison, but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 1-parameter tool with an output schema (so return values need not be explained in depth), the description is complete: it covers purpose, behavior, creation semantics, sibling routing, parameter meanings, and even the return shape. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it documents both parameters with defaults ('name: ProcessFlow object name (default ProcessFlow1)' and 'create_if_missing: create it when absent (default True)'). It adds meaning beyond the schema's defaults by explaining the behavioral consequence of create_if_missing (it creates the object when absent). Minor gaps remain (no mention of the name pattern/length constraints), but the parameters are well covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it inventories a ProcessFlow without building activities. It also distinguishes itself from the closest sibling, flexsim_processflow_inventory, by noting that this tool may create and lists subnodes while the sibling is read-only with activity detail. The purpose is clear, though 'ping' in the name slightly undersells what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('window backend only,' inventory without building) and names the alternative ('See also flexsim_processflow_inventory for read-only activity detail'). It also clarifies the crucial difference that the sibling 'never creates' while this one can create when missing. This is exactly the kind of when/when-not guidance that routes the agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_read_consoleA

Read FlexSim's consoles (window backend): compile errors, runtime exceptions and prints.

Args:
    console: compiler, system, output or script (the editor text). Default compiler.
    last_chars: how many trailing characters to return (default 3000).
    clear: not supported by FlexSim from here; use flexsim_execute_script(`clearconsole();`) for the
    output console.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose meaningful behavior: the four distinct console backends and what each contains, plus the important gotcha that clear is unsupported and must be done via flexsim_execute_script. It stops short of stating whether reading is non-destructive, whether it works mid-run, or any permission/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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core statement, followed by a compact Args block where each entry earns its place. The trailing clear note is slightly verbose but conveys a genuinely useful workaround, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 need not be described, and the single nested params object is fully explained. For a one-parameter read tool this is nearly complete; only run-time/permission behavior is unaddressed, which is a minor omission given the low-risk read semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the inner $defs properties carry no descriptions, so the Args block does real work: it maps console values (compiler/system/output/script) to their meaning, notes 'script' is the editor text, and gives defaults for both parameters. It loses a point for documenting a `clear` argument that does not exist in the schema, which could mislead an agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read FlexSim's consoles) and enumerates exactly what the agent gets back: compile errors, runtime exceptions, and prints. No sibling tool in the list reads console output, so it is unambiguous which tool to reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete routing rule for one case: clearing is not supported here, use flexsim_execute_script(`clearconsole();`) for the output console. It does not, however, frame when reading a console is preferable to flexsim_diagnose or flexsim_get_statistics for diagnostics, so the general 'when' is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_resetB

Reset simulation to initial state (time = 0).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Reset simulation') but lacks details on side effects (e.g., does it clear all data, require specific permissions, or have rate limits), the response format, or error conditions. This leaves significant gaps in understanding the tool's behavior beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, consisting of a single sentence that directly states the tool's action and outcome. There is no wasted language or redundancy, making it efficient and easy to parse, which is ideal for a simple tool with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, but has an output schema), the description is minimally adequate. It explains what the tool does but lacks details on behavioral aspects like side effects or usage context. The presence of an output schema means return values are documented elsewhere, but the description could benefit from more completeness for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description does not add parameter details, which is appropriate here, as there are no parameters to explain. This meets the baseline for tools with no parameters, but does not exceed it by providing extra context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Reset simulation') and the outcome ('to initial state (time = 0)'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'flexsim_new_model' or 'flexsim_stop', which might also involve resetting or initializing states, leaving room for ambiguity in sibling context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as whether it should be used after a simulation run or in conjunction with other tools like 'flexsim_stop'. There is no mention of prerequisites, exclusions, or recommended contexts, relying solely on the implied action without operational context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_runB

Start running the simulation continuously (returns immediately).

Args:
    run_speed: Optional run speed multiplier (> 0)
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses one genuinely useful trait ('returns immediately', i.e. non-blocking/async), but says nothing about prerequisites (a loaded model), what happens if already running, how the run is halted (flexsim_stop), or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler; the key fact (continuous, non-blocking run) leads and the argument note follows. Slightly terse and the Args formatting is stubby, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 a single optional param keeps the surface small. However, with zero annotations the description omits preconditions and lifecycle context (how to stop, interaction with reset/step), leaving it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (the schema only encodes the numeric type and exclusiveMinimum 0), so the description must compensate — and it does, labeling run_speed a 'multiplier' with a '> 0' constraint and marking it optional. That adds real semantics beyond the raw type constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start running the simulation continuously') and the 'continuously' qualifier implicitly distinguishes it from flexsim_step and flexsim_run_to_time. It never names those siblings explicitly, so an agent must infer the distinction, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives, and no exclusions. With siblings like flexsim_step, flexsim_run_to_time, flexsim_stop, and flexsim_run_experiments, the agent is left to guess which run mode applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_run_experimentsA

Run a parameter sweep with replications and write summary.csv + manifest.json (Batch MVP).

For each scenario x seed: reset -> apply Model.parameters -> randinit(Source, seed)
-> run_to_time -> get_statistics. Seeds only diverge in the window backend
(Python ignores randinit). Never touches PerformanceMeasureTables.

Args:
    scenarios: [{name, params: {Rate: 5}}] (params go to Model.parameters.<name>).
    seeds: e.g. [101, 202, 303].
    run_to_time: simulated seconds.
    run_speed: Run Speed slider (window only, default 1000).
    statistics: {objects, metrics} (default content/input/output basics).
    artifact_dir: new directory for summary.csv + manifest.json.
    stop_on_error: abort on first failing replica.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load and does so well: it discloses that summary.csv and manifest.json are written to a new directory, that PerformanceMeasureTables are never touched, that randinit only diverges in the window backend (Python ignores it), and that stop_on_error aborts on the first failing replica. It stops short of describing failure behavior when stop_on_error is false or any permission/auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then a compact workflow trace, then a scannable Args list. Every line earns its place, with the backend-divergence and PerformanceMeasureTables notes being genuinely load-bearing caveats rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex batch tool with an output schema (so return values need not be explained), the description covers the execution pipeline, artifact outputs, and every parameter. The only gap is the absence of guidance on choosing this tool over the other experimenter/run siblings, which the usage dimension already penalizes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% at the property level, so the description must compensate, and it does: every argument is documented with added meaning beyond types — params map to Model.parameters.<name>, run_speed is window-only with default 1000, statistics defaults to content/input/output basics, artifact_dir must be a new directory. It does not restate schema constraints like the 20-seed cap, but the semantic coverage is strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+scope: 'Run a parameter sweep with replications and write summary.csv + manifest.json (Batch MVP).' The artifact-writing and sweep semantics clearly distinguish it from siblings like flexsim_run and flexsim_run_to_time, though no alternative tool is named explicitly, keeping it 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the workflow description and the 'Batch MVP' label, which suggests batch execution, but there is no explicit when-to-use versus flexsim_experimenter_run, flexsim_experiment_plan, or plain flexsim_run. The agent must infer the selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_run_to_timeA

Run simulation until reaching target time (blocks until done, max speed).

Args:
    target_time: Target simulation time in seconds

Example:
    target_time=3600  # Run for 1 hour

Note: time only advances while the model has scheduled events.
With the FlexSim window connected, run_speed (optional) sets the Run Speed slider first;
use 1000 for a fast run (the window default is 4x real time).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses blocking behavior ('blocks until done'), the max-speed default, the caveat that 'time only advances while the model has scheduled events,' and how run_speed interacts with the window slider. It omits error/failure behavior and permission needs, so not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first sentence, followed by args, example, and a caveat note. Content is reasonably tight; the example is slightly redundant with the args line but still earns its place by anchoring the unit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 parameters and the key blocking/speed/scheduled-events behaviors. Nothing critical is missing for correct invocation, though it could note what happens if target_time is in the past.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 and largely does: it explains target_time is in seconds with a concrete example, and explains run_speed (sets the Run Speed slider, use 1000 for a fast run, default 4x real time). This adds real meaning beyond the bare numeric schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run simulation until reaching target time') with added scope qualifiers ('blocks until done, max speed'). It is clearly distinguishable from flexsim_run and flexsim_step by the target-time framing, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the example (target_time=3600 for one hour) and the speed note, but there is no explicit 'use this instead of X when Y' routing against siblings like flexsim_run or flexsim_step. The agent must infer when this is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_run_transportA

Dispatch a loaded trip: TRAVEL pickup, LOAD item, TRAVEL dropoff, UNLOAD (window backend only).

API (fuente): createemptytasksequence(dispatcher, priority, preempting)
+ inserttask(ts, type, involved1, involved2) + dispatchtasksequence(ts),
firmas y ejemplos de Commands.xml:6854-6858, :7951-7955 y :7094-7099;
TASKTYPE_LOAD/TRAVEL vistos en XML:7751/:7955, UNLOAD solo en headers
locales FlexsimDefs.h:210 / allobjects.h:290. Stats del dropoff segun
AGENTE_FLEXSIM.md sec 7. Corrida opcional con el patron de
flexsim_run_to_time (Run Speed slider + stoptime + applicationcommand run
+ espera getrunstate==0). # DLV-delivery

Args:
    transporter: TaskExecuter/Transporter que ejecuta (dueno de la TS).
    item_from: flowitem a mover (Model.find debe resolverlo; para ver los
        items dentro de una estacion usar flexsim_list_tree sobre ella).
    pickup: objeto/estacion donde se carga.
    dropoff: objeto/estacion donde se descarga (se leen sus stats).
    priority: prioridad de la TS (default 1).
    run_after: si True, tras dispatch OK corre el modelo una duracion
        run_seconds y confirma por stats (default False).
    run_seconds: duracion simulada a correr tras despachar (default 600).
    run_speed: Run Speed slider para la corrida (default 1000).

Returns JSON {dispatched, delivered (bool|null si run_after=false),
    transporter, item_from, item_path, pickup, dropoff, priority,
    flexsim_result, dropoff_input_before, dropoff_input_after,
    model_time_end, flexsim_console, limits} o {dispatched:false, error,
    ...} con el error real de FlexSim, sin mentir.
Limits: semantica LOAD/UNLOAD (involved1=item, involved2=estacion) no esta
    en Commands.xml (remite al QuickReference); dispatched=true es TS
    aceptada, no entrega confirmada (requiere correr el modelo).
Receta de verificacion (humano): flexsim_reset + linea con items
    (Source>Queue>...) + flexsim_run_transport con run_after=true
    (run_seconds/run_speed) + flexsim_get_statistics sobre el dropoff
    (input.value debe incrementar; delivered refleja eso).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and largely meets it: it discloses the window-backend-only restriction and, critically, that 'dispatched=true es TS aceptada, no entrega confirmada' (accepted task sequence is not a confirmed delivery). It also documents the LOAD/UNLOAD semantic gap and honest error propagation. It omits any note on model-state mutation scope or permissions, keeping it below 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, Args, Returns and Limits are clearly sectioned and the key point is front-loaded, but the middle paragraph is a dense wall of source citations (Commands.xml:6854-6858, FlexsimDefs.h:210, allobjects.h:290) that offer little selection or invocation value to an agent. Mixed-language prose further hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, unannotated mutation tool the description covers purpose, all parameters, the return shape (including the error branch), a limits section, and a verification workflow. An output schema exists, so the return enumeration is somewhat redundant, but the behavioral caveats are the genuinely needed content and are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (properties carry only titles), so the description must compensate, and its Args block does: it defines all eight parameters including defaults, clarifies that item_from must be resolvable via Model.find, and notes that dropoff stats are read. This adds real meaning beyond the schema. The run_speed/run_seconds entries are terse but adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb+resource and the exact operation sequence: 'Dispatch a loaded trip: TRAVEL pickup, LOAD item, TRAVEL dropoff, UNLOAD (window backend only).' An agent can immediately tell this is a task-sequence dispatch tool rather than a generic run/step tool. It does not explicitly differentiate itself from nearby siblings such as flexsim_agv_deliver, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description names flexsim_list_tree as the way to enumerate items inside a station, which is genuine alternative-routing, and the closing 'Receta de verificacion' sketches a workflow with flexsim_reset and flexsim_get_statistics. However, there is no explicit statement of when to use this tool versus flexsim_run, flexsim_run_to_time, or flexsim_agv_deliver, and no when-not conditions; usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_save_modelA

Save the current model (needs the bridge).

Saves to the file the model was opened from; with save_path, also copies it there.

Args:
    save_path: Optional extra destination for a copy of the saved model

Example:
    save_path="C:/Models/warehouse_v2.fsm"
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the bridge dependency and the exact save behavior (writes to the source file, and with save_path writes an additional copy), which is real behavioral value. It stops short of covering failure/permission conditions or overwrite semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then adds the destination behavior, Args, and an example. Sections are labeled and tight with no filler, though the Args/Example scaffolding is slightly formulaic for a single parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter save tool with an output schema (so return values need no explanation), the description covers purpose, dependency, behavior, and parameter meaning. The main remaining gap is the absent comparison to flexsim_save_model_as.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: save_path is described as an optional extra copy destination, with a concrete example path. It adds clear meaning beyond the bare "Save Path" property title. It could still note the expected file format/extension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Save the current model") and clarifies the destination semantics (saves to the opened file, optional copy elsewhere), which behaviorally contrasts with the sibling flexsim_save_model_as. However, it never names save_model_as explicitly, so the agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the save operation, and a prerequisite is noted ("needs the bridge"). It gives no explicit when-to-use / when-not-to-use guidance and does not point to the obvious alternative, flexsim_save_model_as, for choosing a different destination.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_save_model_asA

Save the window model under a NEW path and CONTINUE THERE (window backend only).

True Save-As (a filesystem copy alone would leave FlexSim showing the old file,
diverging bookkeeping from reality): saves the open window, copies the file to
dest_path, OPENS the copy in a new FlexSim window, waits for its title to appear,
then closes the old window (by its exact previous title) and repoints
_gui_model_path/_gui_model_name/_current_model to dest. The new window connects
by itself in ~20 s (On Model Open runs mcp_start()); check flexsim_gui_status.
If the new window never appears, nothing is closed or repointed (safe).
Unlike flexsim_save_model (snapshot copy, state stays), dest becomes active.
Bloquea dest == plantilla (GUI o bridge).

Args:
    dest_path: new .fsm file (must not exist, never the template).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it enumerates the internal sequence (save, copy, open new window, wait for title, close old window, repoint _gui_model_path/_gui_model_name/_current_model), discloses the ~20s reconnect delay, the safe-failure mode ('nothing is closed or repointed'), and the blocked template destination. This is exactly the operational context an agent needs before triggering a side-effecting operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the essential semantic ('NEW path and CONTINUE THERE'), then a parenthetical justification, then the mechanics. It is dense and slightly overpacked, but nearly every clause conveys distinct actionable information rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 description instead covers the side effects, the timing caveat, the verification path via flexsim_gui_status, and the failure/misuse cases. Nothing an agent needs to invoke this safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the only param is an unconstrained string in the schema, so the description must compensate. It does: 'new .fsm file (must not exist, never the template)' supplies both the format expectation and two hard constraints absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Save the window model under a NEW path and CONTINUE THERE') and explicitly scopes it to the window backend. It differentiates itself from the sibling flexsim_save_model by naming the behavioral difference ('snapshot copy, state stays' vs 'dest becomes active').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly names the alternative (flexsim_save_model) and the condition that selects this tool instead ('Continue there' semantics), and points the agent at flexsim_gui_status to verify the new window. It stops short of an explicit when-not-to-use rule beyond the template-path constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_screenshotA

Take a picture of the FlexSim window so you can SEE the model (window backend).

Args:
    region: window (everything: 3D view, panels, consoles) or view3d (only the 3D view, bigger).
    scale: 0.2-1.0 size factor (default 0.6; 1.0 for detail).
    format: jpeg (small, default) or png.
    method: auto (default), printwindow (works while covered by other windows) or screen.

The 3D view crop (view3d) assumes the default layout of the template.
With a rearranged UI (panels moved/resized) the fixed VIEW3D_CROP fractions
(utility/capture.py) may miss the 3D view: use region="window" then, and see
flexsim_set_view for framing hints.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden well: it discloses that method='printwindow' works while the window is covered, and that view3d relies on fixed VIEW3D_CROP fractions that can miss the view if panels are moved. These are real behavioral caveats beyond structured fields, though it doesn't say what the call returns (file path vs image bytes).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, then parameters are grouped in an Args block with defaults and ranges. Every line is useful, though the view3d crop caveat runs a bit long and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations, and 0% schema coverage, yet the description covers purpose, all params, and failure modes of the capture methods. The main remaining gap is not stating the return form of the screenshot, which an agent might want before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the input schema gives no per-property descriptions, so the description must compensate—and it does, documenting all four params: region (window vs view3d semantics), scale range and default, format options, and method options with behavioral notes. This adds substantial meaning over the bare enum patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Take a picture of the FlexSim window') and immediately frames the goal ('so you can SEE the model'). It is clearly distinguishable from siblings like flexsim_read_console or flexsim_inspect_model, and it names flexsim_set_view as the framing-related relative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance: use region='view3d' for a bigger 3D-only crop, but fall back to region='window' when the UI is rearranged. It also routes to flexsim_set_view for framing hints. No explicit when-not-to-use, but the selection logic between the two regions is well covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_set_distributionA

Set a time property distribution by read-modify-rewrite (window backend only).

Verified: exponential par2 (media) via ", <viejo>/**/" mold replace + constant
via setProperty(number) (AGENTE_FLEXSIM.md sec 6). uniform/normal rewrite the
two tagged numbers ONLY when the current code already is that distribution.
CHANGING FAMILY (exponential->uniform/normal) IS REFUSED: the 2026 mold has
par1..par5 slots and a renamed mold leaves par4/par5 empty
(uniform(2,8,stream,,)), which CRASHED FlexSim live (2026-09-26 probe6:
process gone during the next run). Change family by hand in the GUI or use
constant. The stream argument is accepted but the original stream expression
is preserved (third param untouched).

The uniform/normal/exponential (y constant) output reports expected_mean
(exponential=par2, uniform=(par1+par2)/2, normal=par1, constant=valor)
para contraste humano.

Functional check (humano): flexsim_reset + flexsim_run_to_time hasta T +
leer Source.stats.output (arrivals) y contrastar arrivals ~= T / expected_mean
(p. ej. T=600, mean=5 -> ~120 llegadas; tolerancia por variabilidad aleatoria).

Args:
    object: object name (e.g. Source1).
    property: property name (default InterArrivalTime).
    distribution: exponential, uniform, normal or constant.
    par1: uniform min / normal mean / constant value (when par1 set).
    par2: exponential mean / uniform max / normal std / constant value (fallback).
    stream: accepted for API completeness, preserved as-is (not rewritten).

Limits: only the standard mold with /**/ tags is rewritten; a mold
    without tags returns an error (no fallback to constant, no corruption).
    Family changes (exponential->uniform/normal) are refused: they crashed
    FlexSim live (empty par4/par5 slots). Change family in the GUI or use
    constant.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so richly: it discloses a live FlexSim crash on family change (with date and probe id), the exact failure mode (empty par4/par5 slots), error behavior for tag-less molds (no fallback, no corruption), and stream-preservation semantics. It also documents the expected_mean output for human contrast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded, but the body is verbose, mixes English and Spanish ('para contraste humano'), and repeats the family-change refusal in both the main text and the Limits section. The embedded functional-check recipe for humans adds bulk without helping tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with real crash risk and a tag-based rewrite constraint, the description is thorough enough to call it safely, and it even explains return semantics despite an output schema existing. Nothing an agent needs to avoid the documented failure modes is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: par1/par2 are defined per distribution, the par2 fallback for constant is noted, and stream is explained as accepted-but-preserved. Minor residual ambiguity remains around par1 vs par2 for constant and the bare 'object: object name'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set a time property distribution') plus the mechanism (read-modify-rewrite, window backend only), which is more than a name restatement. It does not, however, explicitly contrast itself with the nearest siblings such as flexsim_set_parameter or flexsim_set_node_value, leaving that routing to the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context (window backend only) and concrete exclusions: family changes are refused, tag-less molds error, and the stream argument is ignored. It names workarounds (change family in the GUI or use constant). It stops short of stating when to prefer a sibling tool, so it is clear context without full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_set_node_valueB

Set value in a FlexSim tree node (needs the bridge).

Args:
    node_path: Path to node
    value: New value to set

Example:
    node_path="Model/Processor1/variables/processtime"
    value=5.0
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses one prerequisite (bridge required) but says nothing about whether the model must be loaded/running, whether the write persists or is reversible, or what happens on an invalid path. Thin 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the operation, then lists the two args and a concrete example with no filler. Slightly over-structured for a two-parameter setter, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 needn't be explained, and the example covers the path format. However, for an unannotated mutation tool it omits error behavior, persistence, and state prerequisites beyond 'needs the bridge'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: both node_path and value are explained, and the example shows the expected path syntax ('Model/Processor1/variables/processtime') and a numeric value, which the schema's untyped anyOf does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: set a value in a FlexSim tree node. The get/set pairing with the sibling flexsim_get_node_value is inferable, but the description never names alternatives, so differentiation relies on the agent reading the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(needs the bridge)' hints at a prerequisite but never states when to use this versus flexsim_set_parameter, flexsim_execute_script, or flexsim_table_write. No when-not conditions or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_set_parameterA

Set a model parameter defined in the model's Parameter Tables.

Dual backend: with the FlexSim window connected writes
Model.parameters.<name> by script; without window uses
controller.setParameter. A missing window parameter is an error
(create it with flexsim_ensure_parameter, this tool never creates).

Args:
    name: Parameter name as defined in the model
    value: New value (number or string)
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the dual backend (in-window script write vs. controller.setParameter), the exact mutation target (Model.parameters.<name>), and error behavior on missing parameters. It still omits whether the change is persisted or reversible, so not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then backend behavior, then a terse Args block. Every sentence adds information; minor redundancy between the parenthetical error note and the Args block keeps it just shy of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with no annotations, the description covers the mutation target, error semantics, and creation boundary, and an output schema exists so return values need no explanation. The remaining gap is persistence/reversibility behavior, which is not stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the 'value' property has no declared type, so the description must compensate. It does: 'name' is qualified as defined in the model, and 'value' is documented as number or string, filling a real gap the schema leaves open.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set) and resource (model parameter defined in the model's Parameter Tables), which distinguishes it cleanly from siblings like flexsim_get_parameter and flexsim_ensure_parameter. An agent can tell immediately which parameter tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly informs the agent that a missing window parameter is an error and routes it to flexsim_ensure_parameter, plus notes 'this tool never creates'. This is a clear precondition and alternative, though it doesn't cover when to prefer this over, say, flexsim_set_node_value for other model state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_set_viewA

Frame the 3D view on an object, safely (no invented camera commands).

Safe subset, because this repo has no verified FlexScript camera/fit API: verifies
the target exists via Model.find, reports its position (or points at
flexsim_inspect_model + flexsim_layout_line for target="all"), runs the proven
repaintall() and tells you to check with flexsim_screenshot. The requested view
(3d/top/front) is recorded as intent; nothing else touches the camera, so this tool
can neither hang nor move the model. To frame by hand use the view cube / View menu,
then screenshot.

Limit: flexsim_screenshot region="view3d" crops fixed VIEW3D_CROP fractions
(utility/capture.py:131) tuned for the default template layout; with a rearranged UI
prefer region="window". flexsim_screenshot itself is left intact (no custom crop
parameter: parsing arbitrary crops adds risk for zero verified benefit).

Args:
    target: object name or "all" (default).
    view: 3d (default), top or front (recorded intent, see above).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does so well: it discloses the absence of a verified camera API, that the tool 'can neither hang nor move the model', that the view is only recorded as intent, and that screenshot cropping uses fixed fractions tuned for the default template. It stops short of describing the exact response content, which is partly covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The headline is front-loaded, but the body rambles across implementation details (utility/capture.py:131, VIEW3D_CROP fractions) and repeated disclaimers about the screenshot tool for what is a two-field tool. Much of the second paragraph does not help an agent invoke this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 the description covers the key behavioral caveats (no real camera control, safe/non-hanging, intent recording). For a low-complexity tool it is largely complete, though the misleading framing leaves some ambiguity about what an agent actually gains from calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 explains target (object name or 'all', default) and view (3d/top/front) and, crucially, reveals that view is only recorded intent rather than an actual camera change – meaning beyond what the enum pattern in the schema conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The headline verb 'Frame the 3D view on an object' is misleading, since the body immediately says the tool does NOT touch the camera and only verifies the target, reports position, records intent, and runs repaintall(). Once read fully, the actual behavior is specific (Model.find verification, repaintall, screenshot handoff) and it names the sibling alternatives, but the name/headline overpromises relative to what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent explicitly: for target='all' use flexsim_inspect_model + flexsim_layout_line, and to frame by hand use the view cube / View menu. It also tells the agent to confirm with flexsim_screenshot. Clear context, though it never states a clean 'use this when X' condition for the tool itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_stepC

Step through simulation events (needs the bridge).

Args:
    steps: Number of events to step (1-1000, default: 1)
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It mentions a bridge dependency but says nothing about whether stepping pauses the simulation, whether a model must be loaded first, what happens at the end of the event queue, or any authorization/connection requirements beyond the terse parenthetical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: the purpose leads and the argument note follows. Slightly terse, but every sentence earns its place with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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, but for a state-mutating simulation control tool with zero annotations and no sibling routing, the definition leaves the agent guessing about prerequisites, post-conditions, and when stepping is preferable to running.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 does define the sole parameter as a count of events with a valid range and default, which adds meaning beyond the bare integer schema, but it gives no units-level intuition (e.g., how long 1000 events takes) or edge behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: stepping through simulation events. An agent can distinguish it from flexsim_run or flexsim_run_to_time conceptually, though it never explicitly names those alternatives as the thing it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use stepping versus run, run_to_time, or stop. The only context offered is the precondition 'needs the bridge', which is a dependency note rather than usage selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_stopA

Stop the running simulation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Stop') but does not explain what 'Stop' entails—whether it halts execution immediately, saves state, requires specific permissions, or has side effects. This leaves significant gaps in understanding the tool's behavior beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words, clearly front-loading the core action. It is appropriately sized for a simple tool with no parameters, making it highly efficient and easy to understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, but has an output schema), the description is minimally complete. It states what the tool does but lacks details on behavioral aspects like what 'Stop' means operationally or error conditions. The output schema may cover return values, but the description could benefit from more context on the stopping process.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description does not add parameter semantics, which is appropriate here. A baseline of 4 is applied as it adequately handles the lack of parameters without introducing confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Stop') and the target resource ('the running simulation'), using a precise verb+resource combination. It effectively distinguishes this tool from siblings like 'flexsim_reset' or 'flexsim_pause' (if existed) by focusing on termination rather than resetting or pausing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'the running simulation,' suggesting it should be used when a simulation is actively executing. However, it does not explicitly state when not to use it (e.g., if no simulation is running) or name alternatives like 'flexsim_reset' for different stopping scenarios, keeping it from a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_table_from_snapshotA

Write a statistics snapshot into a GlobalTable (window backend only). # T6

Puente documentado snapshot -> GlobalTable -> (chart a mano). Esto NO bindea
el chart GUI (imposible verificado: grep 2026-09-26 en repo y Commands.xml no
hallo patron collector->chart; ver bloque P3 y flexsim_chart_bind_stat): solo
deja los numeros en Tools/GlobalTables/<table> para graficar fuera o alimentar
el chart a mano con los manual_steps de flexsim_chart_bind_stat.

snapshot: _collect_statistics una vez -> UNA fila de datos + header
  (metricas como columnas object_metric + time) via la misma rutina de
  escritura que flexsim_table_write (_write_table_block duplicado 15 lineas
  para no tocar su comportamiento).
timeseries: SIN reset (destruiria el estado): 3 snapshots consecutivos con
  stoptime now+60/120/180 desde el tiempo actual + columna time (header + 3
  filas). Corrida con el patron de flexsim_run_to_time/chart_snapshot
  (Run Speed 1000 + stoptime + applicationcommand run + espera getrunstate==0).

Args:
    table: GlobalTable destino (^[A-Za-z0-9_]+$, se crea si falta).
    statistics: GetStatisticsInput o None (mismos defaults: metricas basicas).
    mode: snapshot (default) o timeseries.

Returns JSON {table, rows, cols, mode} (+ error en JSON-siempre cuando falla).
Limite: el chart GUI se alimenta a mano (manual_steps de chart_bind_stat);
tablas >100x20 devuelven error (TABLE_MAX_ROWS/COLS de table_write).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and does so: window-backend-only scope, table auto-creation, timeseries mode deliberately skips reset because it would destroy state, the 3-snapshot stoptime recipe, and the >100x20 hard error from TABLE_MAX_ROWS/COLS. Destructive implications and operational limits are both disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is front-loaded but is immediately buried under Spanish prose, an internal ticket marker '# T6', a grep-date justification, and a parenthetical about duplicated 15-line code. Much of this is engineering rationale irrelevant to an invoking agent, making the definition far longer than its usable content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 detailed, yet the description still names them ({table, rows, cols, mode}). Modes, defaults, limits, and the window-only constraint are all present. Only the nested statistics parameters remain under-explained relative to the tool's surface area.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% at the property level, so the description must compensate. It documents table (created if missing, must match ^[A-Za-z0-9_]+$), statistics (defaults to basic metrics, same defaults as the shared routine), and mode (snapshot default vs timeseries). This meaningfully fills the schema gap, though it does not exhaustively explain the GetStatisticsInput fields (metrics/objects/include_time).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource: 'Write a statistics snapshot into a GlobalTable (window backend only)'. It distinguishes itself from flexsim_table_write (same write routine) and flexsim_chart_bind_stat (what it explicitly does NOT do), so an agent can place it among siblings. The clutter of ticket IDs and verification notes slightly muddies the statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the intended use clearly: leave numbers in Tools/GlobalTables/<table> to plot externally or feed the chart manually via the manual_steps of flexsim_chart_bind_stat. It also carves out what it is not for ('Esto NO bindea el chart GUI') and redirects to the binding tool. It stops short of an explicit 'use snapshot vs timeseries when' rule, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_table_readA

Read a GlobalTable as JSON {table, rows, cols, total_rows, total_cols, truncated, data}.

Reads Table("<table>")[r][c] in row batches (braces work inside executestring,
AGENTE_FLEXSIM.md sec 3c) and joins cells with "|" and rows with ";" (the same join
style flexsim_inspect_model already relies on). Numeric cells come back as numbers,
the rest as strings.

Limits (documented, no silent magic): string cells containing "|" or ";" split
ambiguously (a "warning" field is added when the split does not match the table
dims); bundle/object cells read as their text form. Tables larger than max_rows x
max_cols return the top-left window with truncated=True.

Args:
    table: GlobalTable name (Tools/GlobalTables/<table>).
    max_rows: cap 1-100 (default 100).
    max_cols: cap 1-20 (default 20).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and delivers: row-batch reads, cell/row join delimiters, numeric vs string typing, ambiguous-split handling with a warning field, bundle/object text-form reads, and explicit truncation behavior. This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the return shape, then behavior, then limits, then args - a clear structure. It is dense but every sentence carries distinct information; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with an output schema, the description still explains the truncated flag, the join semantics, and edge cases, so an agent understands exactly what comes back and when data is partial. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: table is defined as a GlobalTable resolved at Tools/GlobalTables/<table>, and max_rows/max_cols are given caps and defaults. The schema already supplies the min/max/default constraints, so this adds the missing semantic layer without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Read") and resource ("GlobalTable") plus the exact JSON shape returned. An agent can distinguish it from flexsim_table_write and flexsim_table_from_snapshot 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource (reads a named GlobalTable) and it references flexsim_inspect_model's join style as prior art, but it never states when to prefer this tool over siblings like flexsim_table_write or flexsim_table_from_snapshot, nor any prerequisites. Adequate but with clear gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flexsim_table_writeA

Write a rectangular block of values into a GlobalTable, creating it when needed.

Writes rows (list of lists, 1-100 rows x 1-20 cols, rectangular) into
Table("<table>") cells [1..R][1..C] with quoted literals. With clear=True
(default) the table is resized to exactly R x C first; with clear=False it is
only enlarged and the block lands at the top-left. Returns JSON
{table, rows, cols, table_rows, table_cols, created, cleared, backend}.

Creation (create_if_missing=True, default) tries, in order: Tools.create("GlobalTable")
(Toolbox factory: the only path verified end-to-end — create, setSize, cell R/W),
applicationcommand("addglobaltable"), and cloning the first existing table. It works
even when Tools/GlobalTables is empty or missing. Object.create("GlobalTable") is
never used: its nodes fail with `Invalid row number` (AGENTE_FLEXSIM.md sec 3c).

Args:
    table: GlobalTable name (Tools/GlobalTables/<table>).
    rows: rectangular values (numbers/strings/bool/null; null stored as 0).
    create_if_missing: clone a donor table when missing (default True).
    clear: resize to exactly the block size first (default True).
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden and does so richly: it discloses that clear=True resizes/destroys existing content, that null is coerced to 0, the exact creation fallback sequence, and even a known-failing API path ('Invalid row number'). This is far more behavioral detail than a bare mutation tool would normally provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and Args are front-loaded and clean, but the middle paragraph drifts into internal implementation rationale (applicationcommand ordering, Object.create failure, AGENTE_FLEXSIM.md section reference) that is largely non-actionable for an agent and inflates length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation mutation tool it covers everything needed: purpose, exact dimension limits, coercion rules, resize/create behavior, and the return payload fields (even though an output schema exists). An agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the explicit Args block documents all four parameters, including non-obvious semantics the schema cannot express (rows accept numbers/strings/bool/null, null stored as 0; create_if_missing clones a donor table; clear resizes vs enlarges). It fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb+resource+scope: 'Write a rectangular block of values into a GlobalTable, creating it when needed.' It is immediately distinguishable from the sibling flexsim_table_read, and the dimension bounds (1-100 rows x 1-20 cols) sharpen the scope further.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the operational meaning of the clear and create_if_missing flags (resize vs enlarge, clone-for-create), which implies usage, but it never states when to choose this tool over read/script siblings like flexsim_table_read or flexsim_execute_script, and gives no explicit exclusions.

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.

  1. 73 tool updatesv0.1.0
    • First observedflexsim_add_agv_loop
    • First observedflexsim_add_conveyor_leg
    • First observedflexsim_agv_connect
    • First observedflexsim_agv_deliver
    • First observedflexsim_agv_link_path
    • First observedflexsim_agv_route
    • First observedflexsim_apply_shapes
    • First observedflexsim_attach_resource
    • First observedflexsim_bridge_status
    • First observedflexsim_chart_bind_stat
    • First observedflexsim_chart_inspect
    • First observedflexsim_chart_snapshot
    • First observedflexsim_clone_model
    • First observedflexsim_close_model
    • First observedflexsim_collector_create
    • First observedflexsim_collector_record
    • First observedflexsim_connect_objects
    • First observedflexsim_create_any
    • First observedflexsim_create_objects
    • First observedflexsim_dashboard_create
    • First observedflexsim_dashboard_list
    • First observedflexsim_diagnose
    • First observedflexsim_disconnect_objects
    • First observedflexsim_ensure_parameter
    • First observedflexsim_evaluate_node
    • First observedflexsim_execute_script
    • First observedflexsim_experiment_plan
    • First observedflexsim_experimenter_run
    • First observedflexsim_experimenter_status
    • First observedflexsim_export_results
    • First observedflexsim_fluid_level
    • First observedflexsim_fluid_tank
    • First observedflexsim_get_node_value
    • First observedflexsim_get_parameter
    • First observedflexsim_get_performance_measure
    • First observedflexsim_get_statistics
    • First observedflexsim_get_time
    • First observedflexsim_gui_status
    • First observedflexsim_import_shape
    • First observedflexsim_inspect_model
    • First observedflexsim_layout_line
    • First observedflexsim_library_list
    • First observedflexsim_link_transporter
    • First observedflexsim_list_tree
    • First observedflexsim_new_model
    • First observedflexsim_open_model
    • First observedflexsim_paint_meat
    • First observedflexsim_person_create
    • First observedflexsim_pf_add_activity
    • First observedflexsim_pf_attach
    • First observedflexsim_pf_connect
    • First observedflexsim_pf_run_tokens
    • First observedflexsim_prepare_gui_model
    • First observedflexsim_processflow_inventory
    • First observedflexsim_processflow_ping
    • First observedflexsim_read_console
    • First observedflexsim_reset
    • First observedflexsim_run
    • First observedflexsim_run_experiments
    • First observedflexsim_run_to_time
    • First observedflexsim_run_transport
    • First observedflexsim_save_model
    • First observedflexsim_save_model_as
    • First observedflexsim_screenshot
    • First observedflexsim_set_distribution
    • First observedflexsim_set_node_value
    • First observedflexsim_set_parameter
    • First observedflexsim_set_view
    • First observedflexsim_step
    • First observedflexsim_stop
    • First observedflexsim_table_from_snapshot
    • First observedflexsim_table_read
    • First observedflexsim_table_write

TDQS

B3.1/5.0

Scored across 73 tools

Disambiguation2/5

Many tools overlap in reading statistics (flexsim_get_statistics, flexsim_fluid_level, flexsim_get_performance_measure, flexsim_chart_snapshot), creating objects (flexsim_create_objects, flexsim_create_any, flexsim_person_create, flexsim_dashboard_create, flexsim_collector_create, flexsim_fluid_tank), and connecting objects (flexsim_connect_objects, flexsim_attach_resource, flexsim_agv_connect, flexsim_pf_connect). Despite detailed descriptions and cross-references, the boundaries between tools remain fuzzy, forcing agents to parse experimental notes and backend hints to choose correctly.

Naming Consistency4/5

All tool names follow a consistent flexsim_ prefix and snake_case convention with descriptive terms. Minor deviations exist (e.g., verb-first vs. noun-first ordering, abbreviations like pf and agv), but there is no mixing of casing or chaotic naming styles.

Tool Count1/5

With 73 tools, the set is far beyond the typical 3-15 range and even exceeds the 50+ threshold for an extreme mismatch. Many tools are experimental, overlapping, or superseded, and do not all earn their place, indicating an overgrown surface for the server's purpose.

Completeness3/5

The surface covers many operations (create, connect, run, read statistics, export results), but notable gaps remain: no general delete tool, incomplete ProcessFlow building and chart binding, no verified experiment launching, and several read-only diagnostic stubs. These gaps will cause agents to work around missing functionality.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Control and automate FlexSim simulations through AI assistants like Claude, enabling manufacturing and warehouse digital twin analysis, parameter studies, and real-time model manipulation via tools for opening models, running simulations, evaluating FlexScript, and exporting results.
    15
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Aspen Plus process simulations through a standardized MCP interface, supporting simulation control, data access, and flowsheet manipulation.
    35
    MIT