FlexSim MCP Server
Uses Gradio as the SDK framework for the FlexSim MCP server application interface.
Integrates with FlexSim simulation software through the FlexSimPy Python SDK, providing tools to control simulations, run experiments, execute FlexScript code, manipulate model nodes, and export results for manufacturing and warehouse analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FlexSim MCP Serverrun the warehouse model for 8 hours and export the throughput statistics"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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)
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: anylogicPLE-mcp
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.pyTools exposed:
Simulation control:
flexsim_open_model,flexsim_reset,flexsim_run,flexsim_run_to_time,flexsim_stop,flexsim_step,flexsim_get_timeModel/script:
flexsim_evaluate,flexsim_compile,flexsim_save_model,flexsim_new_modelNode access:
flexsim_get_node_value,flexsim_set_node_valueResults/stats:
flexsim_get_statistics,flexsim_export_results
Logging:
mcp_server/flexsim_mcp.logReproducible environment:
uv syncFlexSimPy build automation:
utility/build_automation.pyIntegration tests:
tests/integration/test_mcp_client.py(stdio-based MCP client)GUI sanity test:
utility/integration_test.pyConfigurable behavior via
config.tomland environment overrides
Requirements
OS: Windows
Python: 3.12 (default; configurable via
config.tomlorFLEXSIM_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 testsManual 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.pyConfiguration
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 = trueEnvironment overrides (see utility/config.py):
FLEXSIM_CONFIG_PATH– path to an alternateconfig.tomlFLEXSIM_INSTALL_PATH– override FlexSim program pathFLEXSIM_PYTHON_VERSION– override Python version for FlexSimPyFLEXSIM_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 testingMCP 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/testsClient 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_evaluate","arguments":{"params":{
"script":"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 > 0GUI sanity test (manual, interactive menu):
uv run python utility/integration_test.py
# Launches FlexSim GUI and provides simple interactive actionsRepository structure
mcp_server/flexsim_mcp.py— FastMCP server and FlexSimPy controller logic (entry point)utility/config.py— configuration loader with env overridesbuild_automation.py— FlexSimPy build/install orchestration (MSBuild resolution, .pyd install)copy_flexsim.py— copies a FlexSim installation intoFlexSimDev/(usesflexsim.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 toolsREADME.md— test descriptions and sample outputs
depends/FlexSimPy— FlexSimPy SDK submoduleFlexSimDev/program— optional repo-local mirror of FlexSim installconfig.toml,mcp_server_config.json,AGENTS.md,eval-flexscript.md
Batch Experiment Orchestrator (Design)
A high-impact enhancement to run parameter sweeps with replications, gather metrics, and export a unified summary.csv (and manifest.json), enabling “what-if” studies at scale.
Design document:
Batch_Experiment_Orchestrator.mdStatus: design in-repo; implementation planned (not yet in
flexsim_mcp.py)MVP tool (planned):
flexsim_run_experimentswith parameter list, seeds/replications, run_to_time, stats, artifact_dir
Troubleshooting
FlexSim not found:
Update
flexsim.install_pathinconfig.tomlor setFLEXSIM_INSTALL_PATHOptionally use
utility/copy_flexsim.pyto mirror an existing install intoFlexSimDev/
FlexSimPy unavailable:
Check status:
uv run python utility/build_automation.py --statusRebuild for the active Python version and ensure the
.pydis installed
Stdio client issues:
Ensure you run the server without
--test-modewhen using stdio clientsCheck
mcp_server/flexsim_mcp.logfor details
GUI noise (CEF) or shutdown issues:
The utilities suppress CEF stderr and force a safe interpreter exit when needed
Available Tools
15 toolsflexsim_compileB
Compile the model (check for FlexScript errors).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 tool compiles and checks for errors, implying a read-only validation operation, but doesn't disclose behavioral traits such as whether it modifies the model, requires specific permissions, has side effects, or provides detailed error output. For a tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Compile the model') and adds clarifying detail ('check for FlexScript errors') without waste. Every word earns its place, making it appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema exists), the description is somewhat complete but lacks depth. It explains the purpose but doesn't cover behavioral aspects like error reporting format or when to use it. With an output schema, it needn't explain return values, but for a validation tool with no annotations, more context on outcomes would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, which is acceptable since there are no parameters to explain. Baseline 4 is appropriate as it doesn't need to compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Compile') and resource ('the model'), specifying it checks for FlexScript errors. It distinguishes from siblings like 'flexsim_run' or 'flexsim_step' by focusing on compilation/validation rather than execution. However, it doesn't explicitly differentiate from all siblings (e.g., 'flexsim_evaluate' might also involve checking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. It doesn't mention prerequisites (e.g., after editing code), exclusions (e.g., not needed before running), or comparisons to siblings like 'flexsim_evaluate' for error checking. The description implies usage for validation but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flexsim_evaluateB
Execute FlexScript code.
Args:
script: FlexScript code to evaluate
Examples:
script='Model.find("Queue1").subnodes.length' # Get queue content
script='getmodeltime()' # Get simulation time
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 tool executes code, implying it's a mutation operation that could affect the simulation state, but doesn't specify permissions needed, side effects (e.g., whether it modifies model data), error handling, or performance implications. The examples hint at read-only queries, but the tool's name 'evaluate' suggests broader execution capabilities without clarifying limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by structured sections for Args and Examples. Every sentence earns its place by clarifying parameters or demonstrating usage. It could be slightly more concise by integrating the examples into the Args section, but overall it's efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (executing arbitrary code in a simulation environment) and the presence of an output schema (which likely handles return values), the description is moderately complete. It covers the basic purpose and parameter usage but lacks critical context: no annotations mean safety/behavior traits are undocumented, and it doesn't explain how this tool relates to siblings or what happens on execution failure. The examples help but don't fully address the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that the 'script' parameter is 'FlexScript code to evaluate' and provides two concrete examples showing syntax and common use cases (querying queue content and simulation time). This compensates well for the schema's lack of documentation, though it doesn't detail constraints like the 1-10000 character length from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute FlexScript code.' This is a specific verb ('Execute') + resource ('FlexScript code'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like flexsim_compile (which might compile rather than execute) or flexsim_get_node_value (which might use FlexScript internally), so it falls short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer flexsim_evaluate over other tools (e.g., flexsim_get_node_value for specific values, flexsim_run for simulation execution, or flexsim_compile for code compilation). The examples show usage but don't provide contextual decision-making criteria.
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 simulation results to file.
Args:
export_path: Path to save results
format: Export format (csv, xlsx, json)
Example:
export_path="C:/Results/output.csv"
format="csv"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 (export) but lacks critical details: whether this overwrites existing files, requires specific permissions, has rate limits, or what happens on failure (e.g., invalid path). The example helps but doesn't cover behavioral traits beyond the basic operation, leaving significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a clear purpose statement, bullet-pointed args with brief explanations, and a concrete example. Every sentence earns its place by providing essential information without redundancy. It's front-loaded with the main action and remains appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values) and low complexity, the description covers the basics adequately. However, as a mutation tool with no annotations, it should include more behavioral context (e.g., side effects, error handling). The parameter explanations help, but overall completeness is moderate due to missing usage and transparency details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial value beyond the input schema, which has 0% description coverage. It explains both parameters: export_path as 'Path to save results' and format as 'Export format (csv, xlsx, json)' with an example. This clarifies semantics that the schema alone doesn't provide, though it doesn't detail format constraints (e.g., case sensitivity) or path requirements, keeping it from a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'export' and resource 'simulation results to file', making the purpose immediately understandable. It distinguishes from siblings like flexsim_get_statistics (which retrieves but doesn't export) and flexsim_save_model (which saves the model, not results). However, it doesn't explicitly contrast with all siblings, keeping it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing simulation results first from flexsim_run or flexsim_get_statistics), nor does it specify scenarios where export is appropriate versus using other tools for data access. This leaves the agent with minimal context for decision-making.
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 FlexSim tree node.
Args:
node_path: Path to node (e.g., "Model/Queue1/stats/input")
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Get' operation which implies read-only behavior, but doesn't specify whether this requires specific permissions, what happens if the node doesn't exist, whether there are rate limits, or what format the returned value will have. The description provides minimal behavioral context beyond the basic operation type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately brief and front-loaded with the core purpose. The two-sentence structure efficiently communicates the main function and provides a parameter example. However, the second sentence could be more structured as a proper parameter documentation section rather than an inline example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which presumably documents return values) and only one required parameter, the description is reasonably complete for a simple read operation. However, as a mutation-free tool with no annotations, it should ideally provide more context about error conditions, permissions, and relationship to sibling tools. The presence of an output schema reduces but doesn't eliminate the need for behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides a single example for the node_path parameter ('Model/Queue1/stats/input'), which adds meaningful context beyond the schema's minimal documentation (0% coverage). However, it doesn't explain the path syntax rules, what constitutes a valid path, or how to navigate the FlexSim tree structure. The schema shows a 'value' parameter with null default, but the description doesn't mention this parameter at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get value') and target resource ('from FlexSim tree node'), making the purpose immediately understandable. It distinguishes from siblings like 'flexsim_set_node_value' by specifying it's a read operation rather than a write operation. However, it doesn't explicitly contrast with other read operations like 'flexsim_get_statistics' or 'flexsim_get_time'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention what types of values can be retrieved, when this tool is appropriate compared to other get operations (like flexsim_get_statistics or flexsim_get_time), or any prerequisites for using it. The only contextual clue is the sibling tool name 'flexsim_set_node_value' which implies this is the read counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flexsim_get_statisticsB
Get simulation statistics and performance metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 the tool 'Get[s] simulation statistics and performance metrics,' which implies a read-only operation, but it doesn't disclose any behavioral traits like whether it requires a simulation to be running, if it has rate limits, what the output format is, or if it affects simulation state. This is a significant gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and appropriately sized for a tool with no parameters, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description's job is simplified. However, it lacks context about when to use it, behavioral details, and how it differs from siblings, which are important for a tool in a simulation environment. The output schema may cover return values, but the description doesn't provide enough guidance for effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline of 4 is applied since no parameters exist, and the description doesn't introduce confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('simulation statistics and performance metrics'), making it easy to understand what it does. However, it doesn't distinguish this tool from potential siblings like 'flexsim_export_results' or 'flexsim_get_node_value', which might also retrieve data, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context, or exclusions, such as whether it should be used after a simulation run or in place of other data-retrieval tools like 'flexsim_export_results'. This lack of usage context leaves the agent with minimal direction.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_new_modelB
Create a new blank model.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 'Create a new blank model,' which implies a write/mutation operation, but doesn't disclose any behavioral traits such as whether this requires specific permissions, if it overwrites existing models, what the output looks like (though an output schema exists), or any side effects. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core action ('Create') and efficiently conveys the purpose. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple creation with no parameters) and the presence of an output schema (which handles return values), the description is minimally complete. However, it lacks context about the model's state (e.g., is it in memory or saved to disk?) and doesn't integrate with sibling tools. For a mutation tool with no annotations, it should do more to explain behavior and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema description coverage is 100% (as there are no parameters to describe). The description doesn't need to add parameter semantics beyond what the schema provides. A baseline of 4 is appropriate for zero-parameter tools, as there's nothing to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new blank model'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'flexsim_open_model' (which opens existing models) or 'flexsim_save_model' (which saves models), though the 'blank' qualifier implies it's not opening an existing file. A 5 would require explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention whether this should be used before other operations like 'flexsim_run' or 'flexsim_set_node_value', or if it's a prerequisite for certain workflows. There's no context about when not to use it or what alternatives exist among the siblings.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_resetB
Reset simulation to initial state (time = 0).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 the tool starts continuous simulation but lacks details on what 'continuously' entails (e.g., runs until stopped, may block other operations), potential side effects, or error conditions. For a mutation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core action ('Start running') and efficiently conveys the essential purpose. Every part of the sentence earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description's job is simplified. It adequately states what the tool does but lacks context on usage relative to siblings and behavioral details. For a tool that likely initiates a significant simulation process, more guidance on effects and alternatives would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is given as it avoids redundancy and correctly aligns with the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start running') and the target ('the simulation continuously'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'flexsim_run_to_time' or 'flexsim_step', which also involve running the simulation but with different conditions or modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a loaded model), exclusions, or comparisons to siblings like 'flexsim_run_to_time' (for running to a specific time) or 'flexsim_step' (for incremental execution). This leaves the agent without context for tool selection.
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.
Args:
target_time: Target simulation time in seconds
fast_mode: Run at maximum speed (default: True). Set to False for real-time GUI updates.
Example:
target_time=3600 # Run for 1 hour
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 explains what the tool does (runs simulation to target time) and mentions fast_mode behavior (maximum speed vs real-time GUI updates), but doesn't cover important aspects like whether this is a blocking operation, error conditions, or what happens if target_time is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise: a clear purpose statement, parameter explanations, and a practical example. Every sentence adds value with no redundancy. The information is front-loaded with the core functionality stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values), no annotations, and good parameter coverage in the description, this is mostly complete. The main gap is lack of behavioral context about blocking nature, error handling, or simulation state implications, preventing a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining both parameters: target_time ('Target simulation time in seconds') and fast_mode ('Run at maximum speed... Set to False for real-time GUI updates'). The example further clarifies target_time usage with a concrete value (3600 seconds = 1 hour).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Run simulation') and resource ('until reaching target time'), distinguishing it from siblings like flexsim_step (single step) or flexsim_run (continuous run). The example reinforces this by showing a 1-hour simulation run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (to run simulation to a specific time) and includes guidance on fast_mode parameter usage. However, it doesn't explicitly contrast with alternatives like flexsim_step (for single steps) or flexsim_run (for continuous running), which would be needed for 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_save_modelB
Save the current model.
Args:
save_path: Path to save (optional, uses current if not provided)
Example:
save_path="C:/Models/warehouse_v2.fsm"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a write operation ('Save') but doesn't disclose critical traits: whether it overwrites existing files, requires specific permissions, handles errors, or affects model state. The example hints at file path usage but lacks details on format constraints or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by structured Args and Example sections. Every sentence earns its place: the first states the action, the second clarifies parameter behavior, and the third provides concrete usage. No redundant or verbose elements are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (save operation with one parameter) and the presence of an output schema (which likely handles return values), the description is minimally adequate. However, it lacks completeness for a mutation tool: no annotations, no mention of error handling or side effects, and insufficient guidance on usage context. It meets basic needs but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the single parameter 'save_path' as optional and defaulting to current path. It adds meaning beyond the schema's basic type/optionality, though it doesn't detail path format (e.g., file extension requirements). With only one parameter, the baseline is 4, but limited semantic depth reduces this to 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save') and resource ('the current model'), making the purpose immediately understandable. It distinguishes this from siblings like 'flexsim_compile' or 'flexsim_export_results' by focusing on model persistence rather than compilation or data export. However, it doesn't explicitly differentiate from 'flexsim_open_model' in terms of file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requires an open model), exclusions, or relationships with siblings like 'flexsim_new_model' (for creating) or 'flexsim_open_model' (for loading). The example shows usage but lacks contextual decision-making advice.
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 FlexSim tree node.
Args:
node_path: Path to node
value: New value to set
Example:
node_path="Model/Processor1/variables/processtime"
value=5.0
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It states 'Set value' which implies a write/mutation operation, but doesn't disclose permissions needed, whether changes are immediate/persistent, error conditions, or side effects. The example adds some context but lacks comprehensive behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args section and Example are well-structured and add necessary clarification without redundancy. Every sentence earns its place, though the formatting could be slightly more polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature, no annotations, and an output schema (which reduces need to describe returns), the description is moderately complete. It covers basic purpose and parameters but lacks important context about when/why to use it, behavioral implications, and integration with sibling tools. For a write operation, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful parameter context beyond the schema. With 0% schema description coverage and only 1 parameter (params object containing node_path and optional value), the description clarifies that node_path is a 'Path to node' and value is 'New value to set', plus provides a concrete example showing path structure and numeric value. This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'value in FlexSim tree node', making the purpose immediately understandable. It distinguishes from siblings like flexsim_get_node_value (get vs set) but doesn't explicitly contrast with other write operations like flexsim_new_model or flexsim_save_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an open model), exclusions, or relationships to sibling tools like flexsim_get_node_value for reading values or flexsim_save_model for persisting changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flexsim_stepB
Step through simulation events.
Args:
steps: Number of events to step (1-1000, default: 1)
Example:
steps=10 # Advance 10 events
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 mentions stepping through events but lacks details on behavioral traits such as whether this pauses or resumes the simulation, what happens if the simulation is not running, if it requires specific permissions, or how it interacts with other tools. The example adds minimal context, but overall, the description is insufficient for a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose, followed by args and an example. Every sentence earns its place by providing essential information without redundancy, and the structure is clear and efficient for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation tool with no annotations) and the presence of an output schema (which handles return values), the description is moderately complete. It covers the purpose and parameters well but lacks behavioral context like side effects or prerequisites. For a tool that likely alters simulation state, more details on usage constraints would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'steps' refers to the 'Number of events to step' with a range and default, clarifying the parameter's purpose and constraints. Since there's only one parameter and the schema lacks descriptions, the description effectively compensates, though it doesn't detail the event types or simulation state implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('step through') and resource ('simulation events'), making the purpose understandable. It distinguishes this tool from siblings like 'flexsim_run' or 'flexsim_run_to_time' by focusing on event-by-event advancement rather than continuous running or time-based execution. However, it doesn't explicitly contrast with all siblings like 'flexsim_reset' or 'flexsim_compile'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying the tool steps through events, suggesting it's for controlled simulation progression. It doesn't provide explicit guidance on when to use this versus alternatives like 'flexsim_run' (for full execution) or 'flexsim_run_to_time' (for time-based advancement), nor does it mention prerequisites or exclusions, leaving usage context somewhat inferred.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v0.1.0- First observed
flexsim_compile - First observed
flexsim_evaluate - First observed
flexsim_export_results - First observed
flexsim_get_node_value - First observed
flexsim_get_statistics - First observed
flexsim_get_time - First observed
flexsim_new_model - First observed
flexsim_open_model - First observed
flexsim_reset - First observed
flexsim_run - First observed
flexsim_run_to_time - First observed
flexsim_save_model - First observed
flexsim_set_node_value - First observed
flexsim_step - First observed
flexsim_stop
TDQS
Every tool has a clearly distinct purpose with no ambiguity. For example, flexsim_run starts continuous simulation, flexsim_run_to_time runs to a specific time, and flexsim_step advances by events, while flexsim_compile checks for errors versus flexsim_evaluates executes code. The descriptions clearly differentiate each tool's function.
All tools follow a consistent 'flexsim_verb' or 'flexsim_verb_noun' pattern with snake_case throughout. Examples include flexsim_open_model, flexsim_get_time, and flexsim_set_node_value, making them predictable and readable.
With 15 tools, the set is well-scoped for a FlexSim simulation server, covering essential operations like model management, simulation control, data access, and result export. Each tool earns its place without being overwhelming or insufficient.
The tool surface provides complete coverage for the FlexSim domain, including model creation, opening, saving, simulation control (run, stop, reset, step), time and statistics retrieval, node value manipulation, code evaluation, and result export. There are no obvious gaps that would hinder agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- SimSenseOAuthai.simsense
Deploy sims to any screen. Control your displays with Claude.
Deploy sims to any screen. Control your displays with Claude.
- mcpOAuthcom.crisphive
Field operations on a deterministic solver — run jobs, crews & fleet from Claude or ChatGPT.
13 Run 70+ AI models and 50+ tools on CNAPS Studio in natural language — Claude, n8n, or Zapier.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceControls FlexSim simulation engine via Model Context Protocol, enabling natural language-driven simulation modeling and automation.2-
- AlicenseAqualityDmaintenanceGenerates AnyLogic simulation models from natural-language prompts in Claude Code, allowing users to describe queueing systems, factories, or ERs and obtain runnable .alp files.5MIT
- AlicenseBqualityBmaintenanceProvides Claude with direct access to the Open Porous Media (OPM) reservoir simulation stack, enabling running simulations, inspecting results, and automating workflows via natural language.402MIT
- FlicenseNot gradedqualityBmaintenanceEnables natural language control of a digital twin simulation pipeline for phone drop tests, converting LS-DYNA .k meshes to solid .k files with hand grip poses using 7 MCP tools.-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SethGame/mcp_flexsim'
If you have feedback or need assistance with the MCP directory API, please join our Discord server