NetLogo MCP
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., "@NetLogo MCPCreate a predator-prey model with 100 sheep and 20 wolves and run for 200 ticks."
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.
The first MCP (Model Context Protocol) server for NetLogo — enabling AI assistants to create, run, and analyze agent-based models through natural conversation.
Works with: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code (Copilot), Cline, Continue, Roo Code, Zed, OpenCode, Codex — any tool that supports MCP.
Why NetLogo MCP?
As an AI student taking an Agent-Based Modeling course, I searched for an MCP server to control NetLogo — nothing existed. So I built one.
Instead of manually writing NetLogo code, clicking buttons, and tweaking sliders, you tell your AI assistant what you want in plain English:
"Create a predator-prey model with 100 sheep and 20 wolves. Run it for 500 ticks and show me the population dynamics."
The AI writes the code, runs the simulation, and shows you the results — all through conversation.
By default a real NetLogo window opens (on first use) so you can watch your simulations run live. Headless mode is available for CI or servers.
Related MCP server: mcp-tap
Features
Create models from code — with real interface widgets: sliders, switches, buttons, monitors
Run simulations and collect tick-by-tick data as markdown tables
Run BehaviorSpace experiments — parallel parameter sweeps via the headless launcher
Export the view as PNG — visible inline in chat
Inspect everything — world state, agent samples, patch grids for heatmaps
CoMSES Net integration — search and safely run models from the largest peer-reviewed ABM library
Built-in references — NetLogo primitives, programming guide, and 6→7 transition guide as MCP resources
Lazy startup — the NetLogo window only opens when you actually use a tool, not when your AI client connects
See docs/TOOLS.md for the full reference of all 25 tools, widget schema, and prompts.
Prerequisites
Requirement | Install via terminal? | How |
Python 3.10+ | Yes | Windows: |
Java JDK 11+ | Yes | Windows: |
NetLogo 7.0+ | No — manual | Download from ccl.northwestern.edu/netlogo |
Only NetLogo requires manual download. Everything else can be installed via terminal, and the Zero-Config Setup prompt below handles those automatically.
Zero-Config Setup (Recommended)
If you're using an AI coding tool, copy the prompt below into your chat. The AI will detect your OS, find your NetLogo and Java installations, clone the repo, install dependencies, configure your MCP client, and tell you how to use it.
Please set up the NetLogo MCP server for me end-to-end. Follow these steps carefully:
1. **Detect my environment**
- Identify my OS (Windows / macOS / Linux).
- Check Python version (need 3.10+). If missing, tell me to install it first and stop.
- Check for Java JDK 11+ (not JRE). Look in common locations (JAVA_HOME env var, standard install dirs). If missing, tell me to install Adoptium Temurin JDK 11+ and stop.
- Check for NetLogo 7.0+. Look in common locations:
- Windows: `C:/Program Files/NetLogo*`
- macOS: `/Applications/NetLogo*`
- Linux: `/opt/netlogo*`, `~/netlogo*`
If NetLogo isn't installed, tell me to download it from https://ccl.northwestern.edu/netlogo/download.shtml and stop.
2. **Install**
- Run: `pip install netlogo-mcp`
- Verify the `netlogo-mcp` command is now available on my PATH.
3. **Identify my MCP client**
- Figure out which AI tool I'm using (Claude Code, Cursor, Windsurf, Cline, Continue, Roo Code, Zed, OpenCode, VS Code Copilot, Codex, or Claude Desktop).
- If you're not sure, ask me.
4. **Configure the MCP client**
- Locate (or create) the correct config file for my client (see
https://github.com/Razee4315/NetLogo-MCP/blob/main/docs/CLIENTS.md
for exact paths and schemas per client).
- Add a `netlogo` server entry with:
- `command`: `netlogo-mcp`
- `env.NETLOGO_HOME`: the NetLogo path you detected
- `env.JAVA_HOME`: the JDK path you detected
- Use the exact JSON schema for my specific client (e.g. `"type": "stdio"` for Cursor, `"servers"` key for VS Code).
- Preserve any existing config entries — merge, don't overwrite.
- IMPORTANT: configure it for THIS project only (project-scope config file), not globally, unless I say otherwise — a global entry loads the server in every session.
5. **Tell me what to do next**
- Tell me to fully restart my AI tool for the new MCP server to load.
- Tell me the NetLogo window opens on the FIRST model tool call, and that call takes 30–60 seconds while the Java Virtual Machine starts. Tell me NOT to click stop during this wait.
- Give me this exact test prompt to try after restart:
> "Create a simple predator-prey model with wolves and sheep on a green landscape. Run setup, then run 100 ticks while tracking wolf and sheep counts. Export the view before and after so I can see how the world evolved."
- Tell me where models and exports are saved (by default, the current working directory's `models/` and `exports/` folders) and that I can browse them with the `list_models` tool.
Do not skip any verification step. If something fails, stop and tell me exactly what failed and how to fix it.Manual Installation
pip install netlogo-mcpThen add the server to your MCP client. For Claude Code, add to your project's .mcp.json:
{
"mcpServers": {
"netlogo": {
"command": "netlogo-mcp",
"args": [],
"env": {
"NETLOGO_HOME": "C:/Program Files/NetLogo 7.0.3",
"JAVA_HOME": "C:/Program Files/Eclipse Adoptium/jdk-25.0.2.10-hotspot"
}
}
}
}Restart Claude Code and verify with /mcp.
Tip: prefer project-scope config (
.mcp.jsonin one project) over global config — a global entry loads the server in every session of every project.
Using Cursor, Windsurf, VS Code, Cline, Continue, Roo Code, Zed, OpenCode, Codex, or Claude Desktop? See docs/CLIENTS.md for exact config for all 11 clients. All configuration options (GUI/headless mode, directories, limits) are in docs/CONFIGURATION.md.
Developing or contributing? Clone the repo and install editable instead:
git clone https://github.com/Razee4315/NetLogo-MCP.git
cd NetLogo-MCP
pip install -e ".[dev]"Docker
The image bakes in NetLogo (headless) with its bundled JRE — no host install needed:
docker build -t netlogo-mcp .
docker run -i --rm netlogo-mcpMCP client config:
{
"mcpServers": {
"netlogo": {
"command": "docker",
"args": ["run", "-i", "--rm", "netlogo-mcp"]
}
}
}Docker runs headless only (no GUI mode). Add -v ./exports:/data/exports to keep exported views and worlds on the host.
Quick Start
Once connected, try these prompts in any MCP client:
> Create a simple NetLogo model with 50 turtles doing a random walk.
Run setup, simulate 100 ticks, and export the view.
> Open the Wolf Sheep Predation model and run a parameter sweep
on initial-number-wolves from 10 to 100.
> Build a disease spread model with sliders for population size and
infection chance.The first model tool call takes 30-60 seconds while the JVM starts — the NetLogo window appears when it's ready. Don't click stop. Every call after that is instant.
Troubleshooting
Problem | Solution |
| Set the environment variable to your NetLogo install directory |
| Set it to your JDK directory (not JRE) |
JVM crashes on startup | Make sure JAVA_HOME points to JDK 11+, not an older version |
| Call |
First model call hangs for 30-60s | Normal — JVM is warming up. Don't click stop. |
NetLogo window opens when my AI client starts | You have |
Server won't connect | Run |
Documentation
docs/TOOLS.md — Full tool reference, widget schema, BehaviorSpace & CoMSES guides
docs/CONFIGURATION.md — All environment variables, GUI vs headless, startup timing
docs/SECURITY.md — Security model and trust boundary
docs/CLIENTS.md — Setup for all 11 MCP clients
docs/DEVELOPMENT.md — Project structure, running tests, architecture notes
CONTRIBUTING.md — How to contribute
CHANGELOG.md — Version history
Listed on
Citing
If you use NetLogo MCP in research or teaching, please cite it — click "Cite this repository" in the GitHub sidebar, or see CITATION.cff.
Author
Saqlain Abbas Email: saqlainrazee@gmail.com GitHub: @Razee4315 LinkedIn: @saqlainrazee
License
This project is licensed under the MIT License — free to use, modify, and distribute for any purpose.
Available Tools
36 toolscalibrateA
Calibrate simulated funnel rates to real-world levels.
Two modes:
With
csv_path: fit against a REAL past campaign's stats. The CSV needs columnssent, opened, clicked, converted(one or more rows). Requirescampaign_namefor the simulated side of the fit.Without
csv_path: anchor the campaign's simulated rates to industry benchmark base rates (a sane default until you have real data).
After calibrating, get_campaign_report shows a calibrated column.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | email | paid_social | organic. | |
| csv_path | No | Optional real campaign stats CSV. | |
| campaign_name | No | Campaign whose simulated rates to calibrate from. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the two modes, CSV column requirements, and output effect (calibrated column in report). However, it does not mention side effects (e.g., whether it modifies the model irreversibly) or any permission requirements, leaving some behavioral ambiguity.
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 concise and well-structured: a one-line purpose followed by two bullet-like mode explanations. Every sentence adds value, with no redundancy. It is front-loaded with the core action and immediately clarifies optionality.
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 conditional logic and CSV requirements, the description covers the essential usage and output effect. It does not discuss error handling or the output schema, but the latter is presumably documented elsewhere. Overall, it is sufficiently complete for an agent to understand and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the conditional relationship between csv_path and campaign_name, and specifying the required CSV columns ('sent, opened, clicked, converted'), which the schema does not detail.
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 calibrates simulated funnel rates to real-world levels, and explicitly distinguishes between two modes (with and without csv_path). This specificity differentiates it from sibling tools, which are mostly about simulation and campaign management.
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 explains when to use each mode: with real stats (csv_path) or without (industry benchmarks). It implicitly tells the agent when to avoid the tool (no need if already calibrated) but does not explicitly mention alternatives. Since no sibling provides calibration, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_modelA
Unload the currently loaded model and reset the workspace.
Useful when you want to discard pending state (mid-run agents, set parameters, pending plots) and start fresh, or before opening a new model file from disk to make sure cached compilation state isn't carried forward.
Note: this does NOT shut down the JVM or NetLogo workspace — only the
model. The next open_model / create_model call will reuse the same
JVM (no 30-60s warmup).
| 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 provided, but the description fully discloses behavior: it discards state, resets workspace, and importantly does not shut down JVM, which is critical for understanding its effect.
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 concise with three purposeful sentences: clear action, usage context, and a clarifying note about what it doesn't do. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, the description covers purpose, usage, behavior, and limitations comprehensively, making it complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline applies. The description adds no parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool unloads the currently loaded model and resets the workspace, distinguishing it from siblings like open_model and create_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 explicitly says when to use it (discard pending state, before opening a new model) and what it does not do (shut down JVM), providing good usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commandB
Execute a NetLogo command (e.g. 'setup', 'go', 'create-turtles 10').
| Name | Required | Description | Default |
|---|---|---|---|
| netlogo_command | Yes | The NetLogo command string to execute. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It states execution of a command but omits details on side effects, return values, error handling, or permission requirements. The output schema (indicated) may partially cover return values, but behavioral traits remain unclear.
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, concise sentence with an example list. It uses no extraneous words and communicates the tool's purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command execution tool with one parameter and an output schema, basic purpose is clear. However, lacking usage guidelines and transparency, the description is minimally adequate but not complete for complex tasks.
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 100% coverage for its single parameter, describing it as 'The NetLogo command string to execute.' The description adds examples but no further semantic context. Baseline 3 is appropriate as schema does the heavy lifting.
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 'Execute a NetLogo command' with examples like 'setup', 'go', 'create-turtles 10', making the verb and resource explicit. However, it does not differentiate from sibling tools like 'run_simulation' or 'set_parameter', which could also involve executing commands in broader contexts.
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 is provided on when to use this tool vs alternatives (e.g., run_simulation, report, set_parameter). The agent is left to infer usage from context, which may lead to incorrect selections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_campaign_variantsA
Paired A/B comparison of a campaign's variants (winner, lift, significance). Subset of get_campaign_report for quick checks.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_name | Yes | A campaign previously executed with run_campaign. |
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 full burden. It indicates the tool is read-only (comparison) but does not disclose if it has side effects, rate limits, or error conditions. It mentions requiring a previously executed campaign in the parameter description, but the main description lacks behavioral detail.
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 two concise sentences with no wasted words. It front-loads the core purpose and efficiently conveys the relationship to get_campaign_report.
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 (one parameter, output schema present), the description covers the essentials: what it does, its outputs, and its relation to a sibling. It is sufficient for an agent to use correctly, though a note on error handling 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?
Parameter schema coverage is 100%, and the description adds value by explaining the campaign_name must refer to a campaign already executed with run_campaign. This context beyond the schema definition helps the agent understand the prerequisite.
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 does paired A/B comparison of campaign variants, listing key outputs (winner, lift, significance). It distinguishes itself from get_campaign_report by noting it's a subset for quick checks, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly positions this tool as a subset of get_campaign_report for quick checks, implying when to use it versus the full report. However, it does not provide explicit when-not-to-use or alternative scenarios beyond that one sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignA
Create and save a campaign (one audience x one or more ad/email variants).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_yaml | Yes | YAML campaign spec. Example: name: launch-email audience: saas-founders replicates: 3 # runs per variant (confidence intervals) max_ticks: 72 # 1 tick = 1 simulated hour fidelity: mixed # fast | mixed | full (LLM cost vs detail) stimuli: - id: A type: email # email | social_ad | landing_page | search_ad teaser: subject: "Your churn number is hiding in plain sight" sender: "Ada from RetainIQ" body_text: "..." cta: "See your churn breakdown" price_shown: "$49/mo" channel_params: {channel: email, send_tick: 1, reach: 1.0} - id: B variant_of: A type: email teaser: {subject: "Cut churn 20% this quarter"} body_text: "..." cta: "Start free trial" |
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 only states 'create and save' but does not disclose whether the operation is mutable, idempotent, or requires specific permissions. The YAML example in the schema provides some detail but the description itself lacks 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, well-structured sentence that conveys the essential purpose without any superfluous words. It is appropriately sized for a simple creation 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 complexity of campaign creation, the description is minimal. It does not mention return values, error conditions, or prerequisites, but the schema's YAML example and the existence of an output schema partially compensate. However, more context on behavior 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?
Schema description coverage is 100% for the single parameter 'campaign_yaml', with a detailed YAML example. The description adds no extra parameter meaning, meeting the baseline expectation.
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 specifies the verb ('Create and save'), the resource ('a campaign'), and the structure ('one audience x one or more ad/email variants'). It distinguishes this tool from siblings like 'run_campaign' which likely executes a campaign, and 'compare_campaign_variants' which is for comparison.
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 for creation but does not explicitly state when to use this tool versus alternatives like 'run_campaign' or 'update_model'. No exclusions or prerequisites are mentioned, but the context of creation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_modelA
Create a new NetLogo model from code and load it.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | NetLogo model code. Can be just the procedures (globals, breeds, setup, go, etc.) — the .nlogox envelope will be added automatically. Or provide a full .nlogox XML file. | |
| widgets | No | Optional interface widgets. Each item is an object: {"type": "slider", "variable": "num-sheep", "min": 0, "max": 250, "default": 100, "step": 1, "label"?, "units"?} {"type": "switch", "variable": "show-trails?", "default": false} {"type": "button", "code": "setup", "label"?, "forever"?: false} {"type": "monitor", "code": "count sheep", "label"?, "precision"?: 0} {"type": "plot", "label"?: "populations", "x_axis"?, "y_axis"?, "pens": [{"code": "plot count sheep", "label"?, "color"?: "green", "mode"?: 0, "interval"?: 1}]} Plot pens redraw on every tick (and on update-plots). Pen colors: palette names (black/gray/white/red/orange/brown/yellow/green/ lime/turquoise/cyan/sky/blue/violet/magenta/pink) or AWT ints. IMPORTANT: slider/switch widgets DEFINE their variable — do NOT also declare it in `globals [...]` or the model won't compile. Include setup/go buttons yourself when passing widgets. When omitted, Setup/Go buttons are auto-added for procedures that exist in the code. |
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 burden. It explains that '.nlogox' envelope is added automatically and warns about widget variable declarations. However, it does not disclose whether the operation is destructive (overwrites existing model) or other 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 purpose and well-structured. Every sentence adds value, though some widget details could be condensed or moved to schema doc. Overall efficient for the 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?
The description covers creating and loading but does not mention return values, error handling, or what happens with invalid code. Given the tool's complexity and many siblings, some completeness is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds significant value by explaining that 'code' can be just procedures or full .nlogox, and provides detailed examples and important caveats for 'widgets' parameter (e.g., not duplicating globals).
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 a new NetLogo model from code and load it'), using a specific verb and resource. It distinguishes from siblings like 'open_model' and 'update_model', which are different 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 implies usage for creating models from code but does not explicitly state when to use this tool versus alternatives like 'open_model' or 'download_comses_model'. No when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_comses_modelA
Download and safely extract a COMSES model archive.
Standalone "fetch but don't open" tool. Most AI flows should use
open_comses_model instead — it subsumes this tool and also loads
NetLogo models into the workspace.
Safety guarantees:
version="latest"is resolved to a concrete version BEFORE any cache path is computed. Cache dirs are named by the resolved version.HEAD request screens oversize archives before streaming.
Stream enforces the byte cap mid-download; overruns abort and delete the partial file.
Zip members are validated against path traversal before extraction.
Uncompressed total is checked against 2 × cap to reject zip bombs.
Extract happens in a temp directory; only a successful extract is moved atomically into the cache. A
.comses_completemarker is written on success; future calls only trust cached dirs with the marker.
| Name | Required | Description | Default |
|---|---|---|---|
| max_mb | No | Size cap in MB. Pass 0 or omit to use the `COMSES_MAX_DOWNLOAD_MB` env var (default 50 MB). | |
| version | No | Version string (e.g. "1.2.0") or "latest". | latest |
| identifier | Yes | Full model UUID (from `search_comses`). |
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 extensively details safety guarantees: version resolution before cache path, HEAD request for size, stream byte cap, zip traversal validation, uncompressed size check, atomic move with marker. This goes well beyond basic 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 well-structured with a clear purpose statement, usage guidance, and bulleted safety guarantees. It is front-loaded but somewhat lengthy; however, the detail is justified by the tool's complexity. A slight reduction would not harm clarity.
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 presence of an output schema (not needing return value explanation), the description covers all necessary aspects: purpose, usage guidance, parameter context implicitly, and extensive behavioral transparency. It is complete for the tool's complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional semantics beyond what the schema provides for the three parameters (identifier, max_mb, version). The safety details relate to behavior, not parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Download and safely extract a COMSES model archive' and explicitly distinguishes itself from sibling 'open_comses_model' by noting it is a standalone 'fetch but don't open' tool. This provides a specific verb+resource and differentiates from alternatives.
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 explicitly guides the agent: 'Most AI flows should use open_comses_model instead — it subsumes this tool and also loads NetLogo models into the workspace.' This provides clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_viewA
Export the current NetLogo view as a PNG image.
Returns the image so Claude can see the model visualization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It states the tool exports and returns an image, but does not explicitly confirm it is a read-only operation with no side effects, nor detail prerequisites like model being open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. Front-loaded with action and resource. No unnecessary words.
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 zero parameters, no output schema, and no annotations, the description is fairly complete. It explains purpose and output. Could mention if image is base64 or URL, but sufficient for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema coverage, baseline is 4. The description adds context that no inputs are needed beyond the current state, which aligns with 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 verb 'Export', the resource 'current NetLogo view', and the output format 'PNG image'. It distinguishes from sibling 'export_world' which likely exports state data, not an image.
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?
Implies usage for visualization ('so Claude can see the model visualization'), but no explicit when-to-use or when-not-to-use compared to alternatives like 'get_world_state' or 'watch_simulation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_worldA
Export the full world state to a CSV file.
Saves all turtle, patch, and link data. Useful for checkpointing a simulation or analyzing the complete state offline.
Returns the path to the exported CSV file.
| 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 provided, so description bears full burden. It discloses scope (all turtle, patch, link data) and output (returns path to CSV), but omits potential side effects or performance considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose, no wasted words.
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 no parameters and presence of output schema, the description sufficiently covers tool behavior and return value for a simple export operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist in the input schema, so the description adds full meaning by explaining what the export includes and the return type.
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 specifies the tool exports the full world state to a CSV file, listing the data types (turtle, patch, link) and distinguishing from siblings like export_view and get_world_state.
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?
States usefulness for checkpointing or offline analysis, providing context on when to use, but lacks explicit exclusion or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_audienceA
Generate and save a synthetic audience from a YAML spec.
The audience is a frozen, seeded population of personas plus a social network — the same spec always produces the same people, so campaign variants can be tested against an identical audience.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_yaml | Yes | YAML audience spec. Minimal example: name: saas-founders product_context: "a churn-analytics SaaS tool" size: 300 seed: 42 distributions: age: {mean: 33, sd: 8, min: 22, max: 60} income_bracket: {low: 0.2, mid: 0.5, high: 0.3} trust_in_ads: {mean: 0.2, sd: 0.1} network: topology: watts-strogatz # or barabasi-albert (influencer-heavy) k: 8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses that the tool generates and saves a synthetic audience with personas and a social network, and that it is seeded for reproducibility. However, it does not mention whether it overwrites existing audiences, authentication needs, or rate limits. The behavioral overview is decent but not exhaustive.
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 two sentences plus a short explanation, front-loaded with the main action. Every sentence adds value, no wasted words.
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 low complexity (single parameter, no annotations), the description covers the tool's purpose, input format, and key behavioral trait (frozen/seeded). An output schema exists so description does not need to detail return values. It is sufficiently complete for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and includes a detailed example in the parameter description. The main description adds context about what the YAML spec represents (audience specification) but does not significantly extend beyond the schema-provided information. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Generate and save' and the resource 'synthetic audience from a YAML spec'. It distinguishes from sibling tools like 'get_audience' (retrieval) and 'list_audiences' (listing).
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 explains that the audience is 'frozen, seeded' and 'the same spec always produces the same people', providing strong context for when to use: testing campaign variants against identical audiences. It does not explicitly exclude alternative tools but the usage intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_sampleA
Return a sample of agents with selected variables as a markdown table.
Filling the gap between get_world_state (aggregates only) and
hand-crafted report calls. Picks N random agents from the named
breed (or all turtles when breed is None) and reports the requested
per-agent attributes.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of agents to sample (1-200). When N exceeds the agentset size, every agent is returned. | |
| breed | No | Agentset name, e.g. ``"sheep"``, ``"wolves"``. ``None`` means ``turtles``. Must be a valid NetLogo identifier — letters, digits, ``-``, ``_``, ``.``, ``?``, ``!`` — same rule as ``set_parameter``. | |
| attributes | No | Per-agent variables to report. Each entry must also be a valid NetLogo identifier. Defaults to ``who``, ``xcor``, ``ycor``, ``color``, ``heading``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool selects N random agents from a specific breed (or all turtles when breed is None) and returns requested attributes as a markdown table. It does not mention side effects or error conditions, but the read-only nature is implied. A slight gap in explicit non-destructive guarantee prevents a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two paragraphs. The first sentence states core purpose, and the second paragraph adds context and detail. Every sentence earns its place, and the structure front-loads key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage, no required parameters, and an output schema, the description is complete. It explains the tool's role relative to siblings and describes the selection logic and default attributes. No missing critical 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?
Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond what the input schema already provides for n, breed, and attributes. It restates defaults but does not introduce new parameter semantics.
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 returns a sample of agents with selected variables as a markdown table. It explicitly distinguishes from siblings by mentioning 'aggregates only' for get_world_state and 'hand-crafted report calls' for report, giving specific purpose 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 explicit guidance on when to use this tool: as a middle ground between get_world_state (aggregates) and report (custom calls). It implies when not to use by contrasting with these alternatives, making usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audienceA
Show a saved audience: spec summary, archetypes, and sample persona cards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Audience name (see list_audiences). | |
| sample | No | How many example persona cards to include (0-10). |
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 burden of behavioral disclosure. It only states what the tool shows, not any traits like read-only permissions, required authentication, or side effects. Minimal 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, front-loaded sentence with zero waste. Every word contributes to conveying the purpose and content of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters) and the presence of an output schema, the description adequately covers the purpose. It could mention prerequisites (e.g., audience must exist), but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions in the schema). The description adds context about the output content but does not enhance parameter understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows a saved audience with three components (spec summary, archetypes, sample persona cards), distinguishing it from sibling tools like list_audiences (lists audiences) and generate_audience (creates audiences).
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 does not explicitly state when to use this tool versus alternatives, but the context implies it is for viewing details of a specific audience, contrasting with listing all audiences. No when-not or alternative tool mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_reportA
Generate the pre-flight report for a campaign that has been run.
Includes: funnel with confidence intervals (simulated / calibrated / industry benchmark), segment breakdown, top objections with verbatim quotes, word-of-mouth stats, weak-point diagnosis, and the A/B verdict. Also writes an HTML version with interactive charts.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_name | Yes | A campaign previously executed with run_campaign. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Discloses side effect: 'writes an HTML version with interactive charts.' Does not mention other traits like latency or permissions, but sufficient for a read-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second enumerates contents and side effect. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lists multiple report sections and side effect; output schema exists. Lacks guidance on error handling if campaign not run, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for one parameter. Description adds context that campaign must have been previously executed with 'run_campaign,' but this is minimal extra over schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Generate the pre-flight report for a campaign that has been run.' Lists specific components (funnel, segment breakdown, etc.), distinguishing from siblings like 'report' or 'compare_campaign_variants'.
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?
States it's for a campaign that has been run; parameter description reinforces execution with 'run_campaign.' Does not explicitly exclude unrun campaigns or compare with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comses_modelC
Get detailed metadata for a specific CoMSES model.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Full UUID from `search_comses` results. |
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 must fully disclose behavioral traits. It only implies a read operation with 'get' but does not mention permissions, side effects, rate limits, or what 'detailed metadata' entails.
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 is front-loaded with the verb and resource, but could benefit from brevity without sacrificing completeness.
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 presence of an output schema, the description does not need to detail return values. However, in the context of many sibling tools, it lacks information on what 'detailed metadata' includes and how it differs from related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already specifies 'Full UUID from search_comses results.' The tool description adds no further meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'detailed metadata for a specific CoMSES model', making the purpose unambiguous. However, it does not differentiate from siblings like search_comses or open_comses_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?
No guidance is provided on when to use this tool versus alternatives. The sibling list includes search_comses for listing and open_comses_model for UI opening, but the description gives no 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.
get_patch_dataA
Get patch data as a 2D grid (useful for heatmaps / spatial analysis).
| Name | Required | Description | Default |
|---|---|---|---|
| attribute | Yes | The patch variable to report (e.g. 'pcolor', 'grass'). | |
| max_cells | No | Upper bound on the number of grid cells returned in full-grid mode. When the world exceeds the cap, rows and columns are evenly downsampled (nearest-neighbor) to fit; the response includes a ``downsampled_from`` field so the AI knows it's seeing a subsample. Default 10000 (≈ 100×100). Set to 0 to disable the cap (not recommended for large worlds). | |
| summary_only | No | If True, return shape + min/mean/max/std/unique-count instead of the full 2D grid. For a 100×100 world this trims ~10k cells of JSON to ~6 numbers — useful when you just want to know "is this attribute distributed widely?" without enumerating every patch. |
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 responsibility for behavioral disclosure. It only states the output format, omitting any mention of side effects, permission requirements, or that it is a read-only operation. The schema covers parameter behavior, but the description itself lacks 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, front-loaded sentence that immediately communicates the core function and use-case. It contains no filler or redundant information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and complete parameter documentation, the description is adequate but leaves gaps. It does not explain that only one attribute is returned per call (implied by 'attribute' parameter), nor does it provide usage context relative to 37 sibling tools. Overall, it meets minimum viability for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% per context signals, so baseline is 3. The description adds no extra parameter meaning beyond '2D grid' output hint; all parameter semantics are already fully documented in the input schema. The description does not 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?
Description clearly states the tool retrieves patch data formatted as a 2D grid, explicitly noting its utility for heatmaps and spatial analysis. This verb+resource+use-case formulation distinguishes it from siblings like get_agent_sample or get_world_state, which serve different purposes.
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 for spatial/heatmap analysis via the parenthetical remark, but provides no explicit guidance on when to use versus alternatives, no exclusions, and no prerequisites. The context is implied but not systematically stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_world_stateA
Get the current world state: tick count, agent counts, world dimensions.
Returns JSON with ticks, turtle/patch/link counts, and world bounds.
| 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 full burden for behavioral disclosure. It only states return values, not side effects, permissions, or constraints. The read-only nature is implied but not explicit, and there is no mention of whether the tool requires an active state or model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: first states the purpose, second specifies the return structure. Every word is necessary and informative. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers what is returned, it omits important context such as prerequisites (e.g., does a model need to be open?) or any potential restrictions. Given the output schema exists, the return info is already detailed, but the description lacks completeness in guiding proper 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?
There are no parameters, so the description does not need to add parameter documentation. Baseline for 0 params is 4. The description does not include any misleading or redundant param info.
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 specifies the verb 'Get' and the resource 'current world state', listing exact components (tick count, agent counts, world dimensions) and return format. This distinguishes it from sibling tools like get_agent_sample or get_patch_data which focus on subsets.
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 explicit guidance on when to use this tool vs alternatives or what prerequisites are needed. Usage is implied as a general state inquiry, but without context like 'requires an open model' or 'use for overview, not details', the agent lacks clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interview_personaB
Ask a follow-up question to persona(s) — an on-demand focus group.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | How many personas to ask when persona_id is omitted (1-10). | |
| question | Yes | What to ask, e.g. "What would make you trust this brand enough to click?" | |
| persona_id | No | Ask one specific persona (id from get_audience). When omitted, a stratified handful is asked instead. | |
| audience_name | Yes | A saved audience. |
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 describes the action as asking a question, which implies a non-destructive read, but it fails to disclose potential side effects, error handling, or prerequisites (e.g., audience existence), leaving behavioral ambiguity.
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 very concise (one sentence) and front-loaded with the core purpose. However, the word 'follow-up' may cause confusion without further context, slightly reducing clarity.
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 output schema exists, the description need not explain return values. However, it omits details about error cases, the meaning of 'follow-up', and the relationship to sibling tool 'get_audience', leaving some contextual 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 coverage is 100%, and the parameter descriptions in the schema are detailed (e.g., explaining 'n' range, persona_id usage). The tool description adds no additional semantic value beyond the schema, meeting the baseline expectation.
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 'ask', the resource 'persona(s)', and provides a helpful analogy ('on-demand focus group'), making the tool's purpose immediately clear and distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like 'get_agent_sample' or 'market_info'. The term 'follow-up question' implies a prior step but is not elaborated, leaving usage context vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audiencesB
List saved synthetic audiences.
| 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 only states 'list', omitting details like pagination, ordering, or whether it returns all audiences. For a list operation, such behavioral context is minimal.
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 (4 words) with no waste. Every word earns its place, and the information is front-loaded.
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 and an output schema exists, the description is minimally adequate. However, it lacks context about the nature of the list (e.g., ordered, filtered) and does not help distinguish from similar list tools among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description adds value by specifying 'saved synthetic audiences', clarifying what is being listed beyond the empty schema. No further parameter info is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List saved synthetic audiences' clearly states the verb (list) and resource (saved synthetic audiences). It is specific but does not differentiate from sibling tools like 'get_audience' or 'generate_audience', though differentiation is implicitly understood from verb choice.
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 is provided on when to use this tool versus alternatives (e.g., get_audience for a single audience). The description does not mention exclusions or context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsA
List saved campaigns.
| 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 present, but the description fails to disclose any behavioral traits beyond the action itself. There is no mention of read-only nature, ordering, pagination, or permissions.
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?
Extremely concise at one sentence. While efficient, it could include a hint about usage without becoming verbose.
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?
Despite the simple nature (no params, output schema exists), the description is adequate for understanding the tool's core function given the sibling 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?
No parameters exist (0 parameters, 100% schema coverage). The description adds no parameter meaning, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List saved campaigns.' uses a clear verb 'List' and specific resource 'saved campaigns', distinguishing it from sibling list tools for audiences, experiments, and models.
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 other list tools like list_audiences or list_experiments. The description offers no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_experimentsA
List BehaviorSpace experiments saved inside a NetLogo model file.
Reads the <experiments> section of a .nlogox (or .nlogo) without
starting a JVM, so it's instant. By default it inspects the model the
AI most recently loaded; pass model_path to inspect a specific file.
Returns JSON: {"model_path": ..., "experiments": [<spec>...]} where
each spec includes name, repetitions, time_limit,
setup_commands, go_commands, metrics, variables (with
expanded_size per variable), and total_runs. An empty list means
the file has no saved experiments — you can still pass an inline
spec to run_experiment.
| Name | Required | Description | Default |
|---|---|---|---|
| model_path | No |
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 bears full burden. It discloses that reading is instant (no JVM start), that it reads without side effects, and describes the precise return format. It could be improved by explicitly stating that the tool is read-only, but the description sufficiently conveys the behavioral traits.
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 concise and front-loaded with the core purpose. Every sentence adds value: purpose, mechanism, default behavior, parameter usage, and output format. No superfluous text.
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 (1 optional parameter, no annotations, but detailed output), the description covers input, default behavior, output format, and edge case (empty list). It also mentions relationship to `run_experiment`, making it contextually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description compensates by explaining that `model_path` is optional and defaults to the most recently loaded model. It gives context on when to use the parameter (to inspect a specific file), adding significant meaning beyond the schema alone.
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 lists BehaviorSpace experiments saved inside a NetLogo model file, specifying it reads the `<experiments>` section. It distinguishes from siblings like `run_experiment` by noting it returns the list of saved experiments and mentions that an empty list means no saved experiments, but inline specs can still be passed to `run_experiment`.
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 explains default behavior (inspects most recently loaded model) and how to use the `model_path` parameter to inspect a specific file. It implies usage before `run_experiment` but does not explicitly compare to `preview_experiment` or other siblings, nor does it 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.
list_modelsA
List all .nlogo model files in the configured models directory.
Returns a JSON array of {name, path, size_kb} objects.
| 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 fully describes the behavior: listing all .nlogo files and returning a JSON array with specific fields. It is transparent about the return format, though it omits details like potential performance implications.
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, consisting of two sentences that efficiently convey the tool's purpose and output without any superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and the presence of an output schema, the description covers the essential behavior. It could mention edge cases (e.g., empty directory) but is largely complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema provides full coverage. The description adds value by detailing the output structure beyond 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 that the tool lists all .nlogo model files in the configured models directory. The verb 'list', resource 'model files', and scope are specific, and it is distinct from sibling tools like create_model or open_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 does not provide any guidance on when to use this tool versus alternatives or when not to use it. While the purpose is clear, no context is given for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_infoA
Status of the market-simulation module: LLM config, saved audiences, campaigns, and where artifacts live.
| 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?
The description discloses that the tool returns status information about specific components, implying it is read-only and non-destructive. However, it does not explicitly state behavioral traits like side effects, idempotency, or performance, which is a gap given the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that delivers the essential information without wasted words, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter status tool with an output schema, the description adequately lists what the status covers, providing sufficient context without needing to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is complete. The description does not need to add parameter details, meeting the baseline expectation for zero-parameter tools.
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 that the tool provides the status of the market-simulation module, listing specific components like LLM config, audiences, and campaigns. It is distinct from siblings like server_info, though it could use an action verb like 'Get status'.
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 is given on when to use this tool versus siblings such as server_info or list_audiences. There is no comparison or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_comses_modelA
Download (or reuse cache), then open a COMSES model ready to use.
This is the single entry point most AI flows should call.
Behavior:
Resolves
"latest"to a concrete version BEFORE any cache path is computed. The returnedresolved_versionis what every follow-upread_comses_filescall MUST pass — never re-pass"latest"in the same flow, or you risk inspecting a different cache slot than the model you just loaded.If the cache for
(identifier, resolved_version)is already complete (has.comses_complete), skips download.Otherwise, downloads + extracts safely (same logic as
download_comses_model).If the model is NetLogo, picks one
.nlogo/.nlogoxper Section 4.4 rules (exactly one → use it; else prefercode/; else prefer.nlogox; else lex-largest relative path — a deterministic tie-breaker, NOT semver-aware).If NetLogo, loads it into the workspace.
If not NetLogo, returns structured info for manual follow-up.
Returns JSON with:
status: "loaded_netlogo", "not_runnable_in_netlogo", or "no_netlogo_file".resolved_version: concrete version string (never "latest").identifier,title,language,license,cached.extracted_path: absolute path to cached model directory.all_netlogo_files: list of every NetLogo file found.loaded_netlogo_file: the one selected (if any).code_files: source files by extension.odd_doc: ODD / README path, if any.message: short text for the AI to show the user.
| Name | Required | Description | Default |
|---|---|---|---|
| max_mb | No | Max download size in MB. Pass 0 or omit to use the env default. | |
| version | No | Version string or "latest". | latest |
| identifier | Yes | Full model UUID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses caching, version resolution, NetLogo file selection rules, and the exact return format with all fields. No surprises.
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?
Well-structured with bullet points and clear sections. Though lengthy, every sentence adds necessary detail about behavior and return fields. Minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema in the description and many sibling tools, the description covers caching, version resolution, NetLogo selection, return JSON fields, and error states (no_netlogo_file). Complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining version resolution ('latest' to concrete), max_mb default behavior, and identifier as UUID. Slightly above baseline 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 tool downloads/opens a COMSES model, says it's the 'single entry point', and distinguishes itself from siblings like read_comses_files and download_comses_model by detailing its unique behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('single entry point most AI flows should call'), provides specific guidance on not re-passing 'latest' in the same flow, and mentions follow-up tool (read_comses_files).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_modelB
Open an existing .nlogo model file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .nlogo file. Can be absolute, or relative to the configured models directory. |
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 bears full responsibility for behavioral disclosure. It merely states the action without revealing side effects (e.g., replaces current model, unsaved changes warning), requirements, or other behavioral traits.
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, front-loaded sentence without any wasted words. It is appropriately concise for a simple tool, though a bit more context would not hurt.
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 (one parameter, no nesting) and the existence of an output schema, the description provides the core information. However, it omits what happens after opening (e.g., the model becomes active) and any prerequisites, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'path' parameter, so baseline is 3. The description does not add new meaning beyond the schema; it only restates the tool's purpose without elaborating on parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Open' and the resource 'existing .nlogo model file', distinguishing it from siblings like 'create_model' (which creates a new model) and 'open_comses_model' (which opens from CoMSES). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'open_comses_model', 'create_model', or other related tools. No context about prerequisites or scenarios is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_experimentA
Show the run plan for a BehaviorSpace experiment WITHOUT executing it.
Use this before run_experiment to verify the parameter combinations,
total runs, and rough time estimate. Two modes:
By name: pass
experiment_name(must match a saved experiment in the model file). The other args are ignored.Inline: omit
experiment_nameand passmetrics+ (optionally)variables,repetitions,time_limit,setup_commands,go_commands,stop_condition.
Returns JSON with the resolved spec, total_runs, and a coarse
estimated_seconds_lower_bound derived from time_limit × total_runs
assuming roughly 1k ticks/s per run (real models are usually slower).
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | ||
| variables | No | ||
| model_path | No | ||
| time_limit | No | ||
| go_commands | No | go | |
| repetitions | No | ||
| setup_commands | No | setup | |
| stop_condition | No | ||
| experiment_name | No | ||
| sequential_run_order | No | ||
| run_metrics_every_step | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It clearly states the tool does NOT execute, only previews. It details the return JSON structure including resolved spec, total_runs, and time estimate derivation. No surprises.
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?
Well-structured with bullet points and clear separation of modes. Every sentence adds value, no redundancy. Front-loaded with the key purpose. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters, no required ones, and presence of output schema, the description covers the essential aspects: two modes, what each returns, and the time estimate. No missing context for effective selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates well by explaining the two modes and which parameters to pass in each (experiment_name vs metrics + optional fields). However, it does not individually describe all 11 parameters (e.g., model_path, sequential_run_order). Still adds significant meaning beyond 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 shows a run plan without executing, using the verb 'show' and resource 'run plan for a BehaviorSpace experiment'. It distinguishes from sibling 'run_experiment' by explicitly advising to use it beforehand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this before run_experiment to verify parameter combinations...' and describes two modes (by name and inline) with clear instructions for each. No ambiguity about when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_comses_filesA
Return text contents of source and documentation files from a downloaded COMSES model.
The model MUST already be downloaded by open_comses_model or
download_comses_model. If the cache is absent, this tool returns an
error telling the AI to call one of those first.
The AI should pass the resolved_version it captured from
open_comses_model — not the literal string "latest" — or it risks
inspecting a different cache slot than the model it just loaded.
When version="latest" is passed, this tool calls the COMSES API to
resolve it (so it works standalone) and surfaces the concrete version
in the resolved_version field of the response.
Behavior:
Files are UTF-8 decoded with
errors="replace"so binary junk never aborts the call. Every file that matchesextensionsis returned as a string (may contain replacement characters for non-text bytes).Files are included in priority order: ODD docs → NetLogo source → other code → other .md/.txt → everything else matching extensions.
Total body is capped at
max_total_bytes(default 50 KB — sized to fit in a single conversational-LLM tool response). When the cap is hit mid-file, that file is truncated at a line boundary; subsequent files are listed inomitted_fileswith reasonbyte_cap_reached. For larger pulls, pass a higher value explicitly.Files matching no
extensionsfilter are listed inomitted_fileswith reasonextension_not_in_filter.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Concrete version (preferred) or "latest". Always surfaced back in `resolved_version`. | latest |
| extensions | No | List of file suffixes (with dot) to include. Defaults to NetLogo + common ABM languages + .md + .txt. | |
| identifier | Yes | Full model UUID. | |
| max_total_bytes | No | Cap on total returned content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: UTF-8 decoding with error handling, file priority order, byte cap and truncation, extension filtering, and version resolution. No 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with core purpose, then logically structured into prerequisites, important notes, and bullet-pointed behavior. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description doesn't need to detail return format, but still mentions key response fields. Covers prerequisites, all behavioral details, error conditions, and parameter usage comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds significant context: explains version resolution and importance of concrete version, defaults for extensions, and cap behavior for max_total_bytes. Each parameter is enriched beyond 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?
First sentence clearly states the tool returns text contents of files from a downloaded model. Differentiates from siblings by specifying prerequisite of a prior download operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states model must be downloaded first via open_comses_model or download_comses_model, and advises using resolved_version from that call. Clearly tells when to use and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reportA
Evaluate a NetLogo reporter expression and return its value.
| Name | Required | Description | Default |
|---|---|---|---|
| reporter | Yes | A NetLogo reporter expression (e.g. 'count turtles', 'mean [energy] of turtles'). |
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 full burden. It states that the tool evaluates and returns a value, but does not explicitly clarify whether it is read-only or has side effects. Given the simplicity of the tool, the description is adequate but could be enhanced with statements about nondestructive behavior.
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 sentence that is front-loaded and efficient. It is concise but not overly terse, providing essential information without unnecessary words. Some might argue for slight expansion on usage, but overall it is 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 simplicity (one parameter, output schema exists), the description is mostly complete. It covers the core functionality. However, it could briefly mention the output schema or typical return values, though that is covered by the output schema itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description already explains the reporter expression. The tool description adds no additional meaning beyond restating the parameter's purpose, so it meets the baseline for high coverage but does not exceed it.
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 'evaluate' and the resource 'NetLogo reporter expression', specifying the action and the type of input. It distinguishes from sibling tools like 'command' which executes commands without returning values, and other tools that manipulate models or retrieve data.
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 for evaluating reporters to get values, but lacks explicit guidance on when to use this tool versus alternatives such as 'command' (for side effects) or 'get_agent_sample' (for agent data). No when-not or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_campaignA
Run a saved campaign against its audience and log every reaction.
Runs every variant x replicate with a PAIRED design (identical audience, reach and network randomness per replicate across variants), so A/B differences are attributable to the creative.
Cognition: personas react via the configured backend — a live local LLM when SYNTH_LLM_MODE=live (Ollama etc.), otherwise the deterministic heuristic model.
| Name | Required | Description | Default |
|---|---|---|---|
| watch | No | Slow the NetLogo run down (~0.15s/tick) to watch the campaign spread through the network live. Ignored for engine="python". | |
| engine | No | "netlogo" (visible simulation in the NetLogo window; first call boots the JVM, 30-60s) or "python" (headless, fastest). | netlogo |
| campaign_name | Yes | A campaign saved with create_campaign. |
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 responsibly discloses key behavioral traits: it logs every reaction, runs all variant x replicate pairs, and configures cognition via environment variable or heuristic. It does not mention side effects like overwriting previous results, but the mutation is implicit in a run 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 structured into three paragraphs, which is reasonably concise but includes some redundancy (e.g., 'Runs every variant x replicate' is mentioned twice). It could be tightened while retaining clarity.
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 (not shown but indicated), the description does not need to detail return values. It covers the campaign execution model, cognition backends, and the experimental design, providing sufficient context for an agent to understand the tool's behavior.
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 covers all 3 parameters with descriptions, and the tool description adds context about the paired design and cognition modes but does not elaborate on individual parameters beyond what the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Run a saved campaign against its audience and log every reaction.' It specifies the verb 'run' and the resource 'campaign', and distinguishes it from siblings like run_simulation (which runs isolated simulations) and create_campaign (which saves a campaign).
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 explains the tool's usage context, including the paired experimental design and the two cognition modes. However, it does not explicitly state when not to use it or provide alternative tools for similar tasks, such as run_simulation for ad-hoc experiments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_experimentA
Run a BehaviorSpace experiment headlessly and return summarized results.
Two ways to specify the experiment:
By name — pass
experiment_namematching a saved experiment in the loaded model (.nlogox<experiments>section). All other experiment-shape args are ignored.Inline — omit
experiment_name. Required:metrics. Optional:variables(list of{"name", "values"}or{"name", "first", "step", "last"}),repetitions,time_limit,setup_commands,go_commands,stop_condition.
Variable shapes (Cartesian product of all expanded values is run for each repetition)::
[{"name": "density", "values": [50, 60, 70]},
{"name": "growth-rate", "first": 0.1, "step": 0.05, "last": 0.3}]Long-run controls:
- max_total_runs — refuse to start if total_runs exceeds this.
- timeout_seconds — kill the launcher after this many seconds.
Partial results in the table CSV are preserved.
- threads — parallel runs (0 = let NetLogo decide; default ~75% of CPUs).
The launcher runs in a SEPARATE JVM, so the GUI workspace this server is hosting is unaffected. Run before calling this only matters insofar as the model file must be saved on disk (it is, after open_model / create_model / open_comses_model).
Returns JSON with: output_csv, runs, metrics_summary,
per_combination, duration_seconds, command, timed_out. The
full per-tick data is in output_csv for offline analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | ||
| threads | No | ||
| variables | No | ||
| model_path | No | ||
| time_limit | No | ||
| go_commands | No | go | |
| output_name | No | ||
| repetitions | No | ||
| max_total_runs | No | ||
| setup_commands | No | setup | |
| stop_condition | No | ||
| experiment_name | No | ||
| timeout_seconds | No | ||
| sequential_run_order | No | ||
| run_metrics_every_step | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: runs in separate JVM, unaffected GUI, timeouts, max runs, and return format. It lacks details on authentication or rate limits but is otherwise transparent.
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 well-structured with sections for modes, variable shapes, and long-run controls. It is front-loaded with the main purpose and avoids redundancy, though slightly verbose in examples.
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 15 parameters and no schema descriptions, the description covers most aspects: two usage modes, variable shaping, run controls, and return values. Missing details on a few parameters and no explanation of output schema, but still comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains most key parameters (metrics, variables, repetitions, etc.) with examples, but misses output_name, sequential_run_order, and run_metrics_every_step. Overall, it adds significant meaning beyond 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 'Run a BehaviorSpace experiment headlessly and return summarized results,' specifying the verb, resource, and mode. It distinguishes from siblings like 'run_simulation' by mentioning headless execution and separate JVM, though no explicit differentiation is made.
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 explains two ways to specify the experiment (by name or inline) and provides long-run controls (max_total_runs, timeout_seconds). It notes prerequisites (model file saved) but does not explicitly state when not to use the tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_simulationB
Run the simulation for N ticks and collect reporter data each tick.
| Name | Required | Description | Default |
|---|---|---|---|
| ticks | Yes | Number of ticks to run (1-10000). | |
| max_rows | No | If > 0 and the run produces more rows than this, the output is decimated by evenly-spaced sampling (always keeps the final tick). Use to keep a long run's output below the client's context budget without losing the shape. | |
| reporters | Yes | List of NetLogo reporter expressions to collect each tick. | |
| go_command | No | The go command to use (default: "go"). | go |
| summary_only | No | If True, return only min/mean/max/std/final per reporter — much smaller than the full per-tick table. Use this when you don't need the time series, e.g. parameter sweeps that only care about the final state. |
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 must disclose behavioral traits. It does not mention that the run is synchronous and potentially long-running, nor does it describe state changes. This is insufficient for a tool that likely blocks and modifies 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and concise. It is efficient but could add a bit more context without becoming verbose.
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?
Although an output schema exists, the description does not explain what the tool returns (e.g., a table of reporter data per tick). Given the complexity of parameters like max_rows and summary_only, more context on output behavior is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal value by linking 'N ticks' to the ticks parameter and 'collect reporter data each tick' to reporters, but the schema already defines these well.
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 specifies the verb 'run', the resource 'simulation', and the scope 'for N ticks and collect reporter data each tick'. It clearly distinguishes from siblings like 'command' (single command) and 'run_experiment' (multiple simulations).
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 when a simulation with specific ticks and reporter collection is needed, but it provides no explicit guidance on when not to use this tool, nor does it mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_modelA
Save NetLogo model code to a .nlogox file in the models directory.
This saves the model so you can open it in the NetLogo desktop app for live visualization with GUI, sliders, and real-time animation.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | NetLogo model code (procedures only — envelope added automatically). Or provide a full .nlogox XML file. | |
| name | Yes | Filename for the model (without extension). | |
| widgets | No | Optional interface widgets — same schema as create_model (slider/switch/button/monitor). Slider/switch widgets DEFINE their variable; don't also declare it in `globals [...]`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses key behaviors: code can be procedures-only or full XML, envelope is added automatically, and widgets follow create_model schema. However, it does not mention whether it overwrites existing files, permission requirements, or any side effects beyond saving.
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: two sentences, each serving a clear purpose. The first sentence states the core action, the second provides usage context for desktop visualization. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description need not detail return values. It covers the main aspects: saving to a specific directory, automatic envelope addition, and widget schema. However, it lacks information on overwrite behavior, error handling, or success indicators, which might be relevant.
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 100% schema coverage, baseline is 3. The description adds significant value beyond the schema: clarifications for code (procedures vs. XML, automatic envelope), name (without extension), and widgets (relationship to create_model, caution about globals). This enriches understanding of parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: saving NetLogo model code to a .nlogox file in the models directory. The verb 'save' and resource 'model code' are specific. It distinguishes from siblings like create_model or update_model by focusing on saving to file for desktop use, though not explicitly differentiating from all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests usage when you want to open the model in the NetLogo desktop app for live visualization. However, it does not provide explicit guidance on when not to use this tool versus alternatives like create_model or update_model, nor mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_comsesC
Search the CoMSES Net computational model library.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-indexed page number (10 results per page). | |
| query | No | Free-text search across title, description, authors, tags. Leave empty to browse all models. |
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. It does not disclose behavioral traits beyond the schema's parameter descriptions—e.g., pagination details or that leaving query empty browses all models. The schema partially compensates, but the description adds no new safety, auth, or rate-limit context.
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 concise sentence with no unnecessary words. It is front-loaded with the key action, but a bit more context could improve without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with complete schema and output schema, the description is adequate but not rich. It misses usage guidelines and behavioral context that would help in a toolset with many related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear explanations for 'page' and 'query'. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Search' and identifies the resource as 'the CoMSES Net computational model library,' making its purpose clear. It distinguishes from sibling tools like get_comses_model (specific model retrieval) and download_comses_model (download), though it could be more explicit about the query-based nature.
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 open_comses_model or get_comses_model. It lacks any 'when to use' or 'when not to use' context, which is needed given the number of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoA
Return a snapshot of the running NetLogo MCP server's configuration.
Useful as a no-cost health check for the AI / user — returns the server version, configured paths, GUI mode, currently-loaded model, and whether a NetLogo headless launcher is reachable for BehaviorSpace runs.
No JVM round-trip; this is a pure config / filesystem inspection so it works even before the workspace is fully initialized.
| 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, the description fully discloses behavior: it's a pure config/filesystem inspection with no JVM round-trip and works pre-initialization. It could still mention that it's safe and read-only, but the provided details are strong.
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 concise with two short paragraphs. First sentence states purpose, second explains utility and return fields, third adds technical detail. No wasted words.
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 no parameters and an output schema available, the description fully covers the tool's purpose, behavior, and return types. The explanation of its lightweight nature and pre-initialization capability adds 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 zero parameters, so the baseline is 4. The description adds value by listing what the output contains, which compensates for the absence of parameter documentation.
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 returns a snapshot of the server's configuration, listing specific fields (version, paths, GUI mode, model, headless launcher). It is distinct from siblings like 'report' or 'command' which focus on model interaction.
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 frames the tool as a 'no-cost health check' and notes it works before workspace initialization. However, it does not explicitly mention when not to use it or compare it to alternatives, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parameterB
Set a NetLogo global variable / slider / switch value.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the global variable (e.g. 'initial-number-sheep'). Must be a valid NetLogo identifier — letters, digits, and any of ``- _ . ? !`` only. Names with whitespace or shell/NetLogo meta-characters are rejected to prevent command injection. | |
| value | Yes | The value to set. Numbers, strings, booleans accepted. |
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, and the description does not disclose behavioral traits such as mutation, side effects, or safety. It only restates the purpose.
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 concise at one sentence with no wasted words, but it lacks structure that could improve readability.
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 is a setter with output schema, the description omits behavioral context like return value or side effects, leaving gaps for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents parameters. The description adds no extra meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set') and the resource ('NetLogo global variable / slider / switch value'), distinguishing it from sibling tools like 'command' and 'report'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting parameters but provides no explicit guidance on when to use vs alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_modelA
Update the currently loaded model's code in place and reload it.
Prefer this over create_model when iterating on an existing model: the same .nlogox file is rewritten and reloaded, so the NetLogo window stays on one model and the models directory doesn't grow a new file per iteration.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | New NetLogo procedures — a FULL replacement of the code tab, not a diff. Raw procedures only (no .nlogox XML). | |
| widgets | No | Optional new interface widgets (same schema as create_model). When omitted, the model's existing widgets are preserved unchanged — sliders keep their positions and values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the mutation behavior: 'rewritten' and 'reloaded' the .nlogox file, and that widgets are 'preserved unchanged' when omitted. This goes beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, followed by the benefit over the alternative. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple 2-parameter schema and presence of an output schema, the description covers purpose, usage, behavioral effects, and parameter default behavior (widgets preserved). No 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 coverage is 100% with detailed descriptions for both parameters. The tool description adds some context (e.g., 'in place' implying file rewriting) but does not significantly enhance the meaning of individual parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('currently loaded model's code'), and explicitly distinguishes it from the sibling 'create_model' by stating when to prefer this tool ('when iterating on an existing 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 explicitly advises to 'Prefer this over create_model when iterating on an existing model', providing a clear use case and rationale (same file rewritten, window stays on model, no directory growth).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_simulationA
Run the simulation SLOWLY so a human can watch it in the GUI window.
Unlike run_simulation (full speed, returns data), this steps go once
per tick with a pause between steps — use it for demos and teaching when
the user wants to see the dynamics unfold live. In headless mode it
works but there's nothing to watch; prefer run_simulation there.
| Name | Required | Description | Default |
|---|---|---|---|
| ticks | Yes | Steps to run (1-2000). | |
| delay_ms | No | Pause between steps in milliseconds (10-2000, default 150). ticks x delay_ms must stay under 120 seconds — chain calls for longer demos. | |
| go_command | No | The command to run each step (default "go"). | go |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It explains that the tool steps 'go' once per tick with a pause, and that it works but is pointless in headless mode. However, it does not explicitly state that it returns no data (unlike run_simulation) or mention any side effects. Still, the behavioral description is largely adequate and truthful.
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 two short paragraphs with the key point in the first sentence. Every sentence serves a purpose: stating the primary function, comparing with the sibling, specifying use cases, and noting headless mode. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 params, high schema coverage, output schema present), the description covers the essential behavioral and usage aspects. It explains the slow stepping, the pause, the headless caveat, and the target audience (demos, teaching). Lacking only a brief note on return value (likely nothing or a status), but not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description reinforces parameter usage (e.g., 'pause between steps' maps to delay_ms) but adds little beyond the already-detailed schema descriptions. For example, the schema already explains the 120-second constraint on delay_ms. No new semantic insight is provided.
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 opens with 'Run the simulation SLOWLY so a human can watch it in the GUI window,' clearly stating the verb (run), resource (simulation), and key distinguishing trait (slowness for human viewing). It contrasts with sibling 'run_simulation' by noting the speed and data-return difference, making the tool's unique role unmistakable.
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 explicitly compares with 'run_simulation' and gives clear usage context: 'use it for demos and teaching when the user wants to see the dynamics unfold live.' It also warns against headless mode: 'In headless mode it works but there's nothing to watch; prefer run_simulation there.' This provides direct when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose. For instance, simulation tools are differentiated by use case (run_simulation for data collection, watch_simulation for visual demo, run_campaign for campaign testing, run_experiment for BehaviorSpace). Model management tools are also well-separated. No two tools appear to overlap in functionality.
The vast majority of tool names follow a consistent verb_noun pattern with underscores (e.g., create_campaign, list_audiences, get_world_state). A few exceptions like market_info and server_info (noun_noun) and calibrate (bare verb) break the pattern slightly, but overall the naming is predictable and readable.
With 36 tools, the server covers a broad scope (NetLogo model management, simulation, BehaviorSpace, campaign marketing simulation, COMSES integration). While each tool serves a specific function, the high count may be overwhelming for simple tasks. It is borderline appropriate for the server's ambitious scope, but could benefit from consolidation.
The tool surface covers the full lifecycle of NetLogo models (create, open, update, close, save), simulation control, state inspection, BehaviorSpace experiments, and campaign simulation. Notable gaps include missing delete operations for models, audiences, and campaigns, which agents may need for cleanup. Otherwise, the set is comprehensive.
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI dialogue using various LLM models via AceDataCloud
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceAn MCP server that provides integration with Microsoft's AutoGen framework, enabling multi-agent conversations through a standardized interface.415
- AlicenseAqualityCmaintenanceEnables AI assistants to discover, install, configure, and manage MCP servers through natural language conversation, automating tedious manual setup across multiple clients.11MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to communicate, coordinate, and collaborate on complex tasks through a local MCP server.118ISC
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to dynamically create and reuse executable skills (Python functions) from natural language descriptions, with automatic skill crystallization and real-time MCP spec updates.42MIT
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/Razee4315/NetLogo-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server