idfkit-mcp
OfficialClick 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., "@idfkit-mcpcreate a single-zone office with a packaged rooftop unit"
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.
idfkit-mcp
An MCP server that lets AI assistants work directly with EnergyPlus building energy models. Connect it to Claude, ChatGPT, Cursor, Codex, or any MCP-compatible client and use natural language to:
Build models from scratch — describe a building and let the agent create zones, surfaces, constructions, schedules, and HVAC systems
Edit existing models — load an IDF or epJSON file, rename objects, swap materials, adjust setpoints, and validate as you go
Run simulations — pick a weather file, launch EnergyPlus, and query or export the results without leaving the conversation
Explore the schema — ask what fields a
ZoneHVAC:IdealLoadsAirSystemaccepts, what values are valid, and get links to the official EnergyPlus documentationSearch the docs — full-text search across the EnergyPlus I/O Reference, Engineering Reference, and other documentation sets hosted on docs.idfkit.com
Built on idfkit, it supports EnergyPlus 8.9 through 26.1 (17 versions with bundled schemas). Schema exploration, model editing, and validation work out of the box with no external dependencies. Running simulations requires a local EnergyPlus install — the server discovers it automatically via PATH, the ENERGYPLUS_DIR env var, or standard OS install locations. A Docker image with EnergyPlus bundled is also available.
Tools
The server exposes 37 tools across ten categories, plus 13 MCP resources for read-only data access:
Category | Tools | What they do |
Schema | 4 | Explore object types, fields, constraints, and valid references |
Model Read | 6 | Load IDF/epJSON/OSM files, inspect objects, search, and read change history |
Model Write | 10 | Create models, add/update/remove/rename/duplicate objects, save, and manage sessions |
Validation | 2 | Schema validation and pre-simulation integrity checks |
Simulation | 8 | Run EnergyPlus, query variables and tabular reports, export time series, analyze peak loads, and view reports |
Weather | 2 | Search weather stations worldwide and download EPW/DDY files |
Geometry | 1 | Interactive 3D building geometry viewer (MCP Apps) |
Schedules | 1 | Interactive schedule heatmap viewer (MCP Apps) |
Migration | 1 | Migrate IDF models forward across EnergyPlus versions |
Documentation | 2 | Search and read EnergyPlus documentation from docs.idfkit.com |
All tools return structured Pydantic models. Schema, validation, and search results include direct doc_url links to the relevant EnergyPlus documentation.
Session state (loaded model, simulation results, weather file) is persisted to disk automatically, so clients that restart the server between turns (e.g. Codex) can resume where they left off.
Related MCP server: ladybug-tools-mcp
Installation
pip install idfkit-mcpOr with uv:
uv add idfkit-mcpUsage
Run as stdio MCP server (default):
idfkit-mcpRun as Streamable HTTP MCP server:
idfkit-mcp --transport streamable-http --host 127.0.0.1 --port 8000Quick MCP Setup
Add idfkit-mcp to your MCP client. Example for Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"idfkit": {
"command": "uvx",
"args": ["--from", "idfkit-mcp", "idfkit-mcp"]
}
}
}See MCP Client Setup for all supported clients (Claude Desktop, Cursor, VS Code, Claude Code, Windsurf, ChatGPT, Codex, JetBrains, Cline, Continue, and Zed).
Development
This project uses uv for dependency management and Zensical for documentation.
Setup
# Clone the repository
git clone https://github.com/idfkit/idfkit-mcp.git
cd idfkit-mcp
# Install dependencies and pre-commit hooks
make installCommands
make install # Install dependencies and pre-commit hooks
make check # Run linting, formatting, and type checks
make test # Run tests with coverage
make docs # Serve documentation locally
make docs-test # Test documentation build
make docker-build # Build base Docker image (no EnergyPlus)
make docker-build-sim ENERGYPLUS_TARBALL_URL=<linux-tarball-url> # Build simulation image
make docker-build-sim DOCKER_PLATFORM=linux/amd64 ENERGYPLUS_TARBALL_URL=<linux-x86_64-tarball-url> # Apple Silicon + x86 tarball
make docker-run # Run Docker containerReleasing
Bump the version:
uv version --bump <major|minor|patch>Commit and push
Create a new release on GitHub with a tag matching the version (e.g.,
1.0.0)
The GitHub Action will automatically publish to PyPI.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Available Tools
39 toolsadd_objectA
Add one object. Use batch_add_objects for multiple.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Object name (empty for unnamed types). | |
| fields | No | Field values as {field_name: value}. | |
| object_type | Yes | EnergyPlus object type (e.g. "Zone", "Material"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, but description adds no behavioral context (e.g., side effects, permissions). Simply restates the action without depth.
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 efficient sentences with no waste. Essential 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?
For a simple tool with high schema coverage and no output schema, the description covers the basics but lacks details on return values or validation 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?
Schema coverage is 100% and description adds no additional parameter meaning beyond the schema. 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 'Add one object' and distinguishes from sibling 'batch_add_objects', using a specific verb-resource pair.
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 to use batch_add_objects for multiple, providing clear context for when to use an alternative. No further exclusions or 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.
analyze_peak_loadsARead-onlyIdempotent
Analyze peak heating and cooling loads for QA/QC.
Decomposes facility and zone-level peaks into components (solar, people, lighting, equipment, infiltration, envelope) and flags potential issues such as unusual peak timing, excessive loads, or component dominance.
Requires a completed simulation with SQL output and the SensibleHeatGainSummary and HVACSizingSummary reports.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| flags | No | |
| cooling | Yes | Facility-level peak load with component breakdown and zone ranking. |
| heating | Yes | Facility-level peak load with component breakdown and zone ranking. |
| sizing_cooling | No | |
| sizing_heating | No | |
| total_floor_area_m2 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, non-destructive behavior. The description adds context by detailing the decomposition and flagging of issues, which aligns with the annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three clear sentences. It front-loads the primary purpose, then adds details on components and prerequisites. 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 tool has no parameters and an output schema exists, the description fully explains what the tool does, its components, and prerequisites. It is complete for an agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter info. The schema coverage is 100%, and the description focuses on the tool's purpose and requirements.
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 analyzes peak heating and cooling loads for QA/QC, decomposes peaks into specific components, and flags issues. It is a specific verb-resource pair that distinguishes it from sibling tools such as run_simulation or query_timeseries.
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 states the prerequisite: a completed simulation with specific SQL output and reports. This provides clear context for when to use the tool, though it does not explicitly list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_add_objectsA
Add multiple objects in one call. Continues on errors.
| Name | Required | Description | Default |
|---|---|---|---|
| objects | Yes | List of dicts with keys: object_type, name, fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| errors | Yes | |
| results | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral trait 'Continues on errors,' which is not covered by annotations. Annotations indicate non-readonly, non-idempotent, non-destructive, which align with the add operation. The error-continuation detail provides useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states the purpose, the second adds a key behavioral detail. Front-loaded and 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?
For a simple one-parameter tool with an output schema, the description provides sufficient context. It covers the core function and error behavior, and the output schema handles return value documentation.
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 a clear description of the 'objects' parameter structure. The description adds no additional parameter meaning beyond the schema, so baseline 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 tool adds multiple objects in one call, distinguishing it from single-object add operations. The verb 'Add' and resource 'multiple objects' are 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 implies usage for batch adding but does not explicitly state when to prefer this over the sibling add_object for singular additions. No when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_model_integrityARead-onlyIdempotent
Domain-level pre-simulation QA — catches issues schema validation cannot.
Runs six checks against the loaded model:
Zones with no BuildingSurface:Detailed surfaces
Missing required simulation control objects (Version, Building, Timestep, RunPeriod, SimulationControl)
Orphan schedules (defined but not referenced by any object)
Surface boundary condition mismatches (non-reciprocal 'Surface' pairs)
Fenestration surfaces referencing non-existent host surfaces
ZoneHVAC:EquipmentConnections referencing non-existent zones
Use this after validate_model and before run_simulation. A model can pass validate_model but still fail these checks.
Preconditions: model loaded. Side effects: none — read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | |
| passed | Yes | |
| checks_run | Yes | |
| error_count | Yes | |
| warning_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds 'Side effects: none — read-only' and details the six checks performed, offering substantial behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a summary line, a bulleted list of checks, a usage note, and a clear preconditions/side effects line. 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?
The description provides preconditions ('model loaded'), side effects ('none — read-only'), and detailed check lists. With an output schema present (context signals), it is fully complete for a no-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters; the input schema is empty with 100% coverage. The description does not need to add parameter details, and the baseline score of 4 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 explicitly states it is a 'Domain-level pre-simulation QA' tool that catches issues schema validation cannot. It lists six specific checks, clearly distinguishing it from siblings like validate_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 advises using it 'after validate_model and before run_simulation' and explains that a model can pass validate_model yet fail these checks, providing clear context for when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_sessionADestructive
Reset model and simulation state so you can start fresh.
Unloads the current model, schema, simulation results, migration report, and weather file. Uploaded files are kept so the user can re-load them without re-uploading.
WARNING: Only call this when the user explicitly asks to start over. Do NOT call this to recover from tool errors — those errors are recoverable by retrying the failed tool or calling load_model again.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the destructive nature (unloads state) and preserves uploaded files, going beyond the destructiveHint annotation. No contradiction—it accurately reflects the tool's 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?
Extremely concise: one sentence for purpose, one list of what is unloaded, one note on preservation, and one warning. No wasted words, 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 no input parameters and an output schema, the description fully covers the tool's effect on state, preservation policy, and usage constraints. It is complete for an agent to decide on 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?
There are no parameters, so the description correctly avoids parameter discussion. The baseline for 0 parameters is 4, and the description provides sufficient context for the tool's operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: resets model and simulation state. It lists specific items unloaded (model, schema, results, migration report, weather file) and explains that uploaded files are preserved, distinguishing it from other tools like new_model or load_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?
Explicit guidance on when to use (user asks to start over) and when not to use (tool errors); provides alternatives (retry or load_model). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_osm_to_idfCIdempotent
Convert an OSM model to IDF and load it.
| Name | Required | Description | Default |
|---|---|---|---|
| osm_path | Yes | Source .osm path. | |
| overwrite | No | Overwrite existing output. | |
| output_path | Yes | Output .idf path. | |
| allow_newer_versions | No | Allow newer OSM versions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | Yes | |
| status | Yes | |
| version | Yes | |
| osm_path | Yes | |
| file_path | Yes | |
| zone_count | Yes | |
| output_path | Yes | |
| total_objects | Yes | |
| openstudio_version | Yes | |
| allow_newer_versions | Yes | |
| translator_errors_count | Yes | |
| translator_warnings_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the conversion and loading without detailing side effects (e.g., overwriting files, session impact). Annotations indicate idempotent and non-read-only, but the description adds minimal behavioral context 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?
Extremely concise (one short sentence), but at the cost of missing important usage and behavioral details. Every sentence should earn its place; this one is too terse.
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 a complex conversion task, the description lacks prerequisites, behavioral side effects, and distinction from sibling tools. It does not fully specify what happens to the current session or model state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds no additional meaning to parameters. Baseline 3 is appropriate since the schema already documents each parameter.
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 (convert) and the resources (OSM model to IDF), and mentions loading. However, it does not differentiate from the sibling tool 'load_model' or clarify if the conversion and loading are always combined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'migrate_model' or 'load_model'. The description lacks when-not-to-use or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_object_typeARead-onlyIdempotent
Field schema with types, constraints, defaults, and references. Call before adding objects.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | EnergyPlus version as "X.Y.Z". | |
| object_type | Yes | Object type name (e.g. "Zone", "Material"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| memo | Yes | |
| fields | Yes | |
| doc_url | No | |
| has_name | Yes | |
| object_type | Yes | |
| is_extensible | Yes | |
| extensible_size | Yes | |
| required_fields | Yes | |
| extensible_group | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the tool is safe. The description adds specific behavioral context about the returned content (schema with types, constraints, defaults, references), which aids the agent beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (8 words) and front-loaded. Every word earns its place, providing essential information without verbosity.
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 is complete given that an output schema exists (not shown but context indicates its presence) and the tool is a simple read-only schema retrieval. It tells the agent when to use it (before adding objects) and what it returns.
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?
Input schema has 100% description coverage, so parameters are well-defined. The description does not add extra semantic detail about parameters beyond what the schema provides, 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 states it provides a field schema with types, constraints, defaults, and references, and instructs to call before adding objects. The purpose is clear but could explicitly state the action 'describe'. It distinguishes from sibling manipulation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a when-to-use context ('Call before adding objects') but does not mention when not to use or alternatives among siblings like search_schema or list_objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_weather_fileAIdempotent
Download EPW/DDY files for a station. Auto-used by run_simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| wmo | No | WMO station number. | |
| query | No | City or airport name. | |
| state | No | State code, e.g. "MA". | |
| country | No | Country code, e.g. "USA". |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| station | Yes | Weather station metadata. |
| ddy_path | Yes | |
| epw_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the context that it is auto-used, but does not disclose additional behavioral traits beyond what annotations provide. Annotations already indicate idempotence and non-destructiveness, and the description is consistent.
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 with no wasted words. Two sentences effectively communicate the purpose and a key usage hint.
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 and annotations, the description is adequate for an agent. It covers the essential purpose and auto-use context, though it omits details like output file location or error 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?
Schema coverage is 100% with parameter descriptions. The tool description does not add any parameter meaning beyond what the schema already provides, resulting in a baseline score of 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 verb 'Download', the resource 'EPW/DDY files', and the context 'for a station'. It also distinguishes from siblings like search_weather_stations by indicating it is auto-used by run_simulation.
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 states 'Auto-used by run_simulation', implying that manual use is typically unnecessary. However, it does not provide explicit when-to-use or when-not-to-use guidance relative to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_objectB
Copy an object with a new name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Source object name. | |
| new_name | Yes | Name for the duplicate. | |
| object_type | Yes | EnergyPlus object type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'copy', but fails to disclose behavioral details such as overwrite behavior, error conditions, or side effects. Annotations provide minimal safety info (readOnlyHint=false, destructiveHint=false), so description carries burden and falls short.
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, front-loaded with the core action, and contains no unnecessary words. It is appropriately concise.
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 lacks details on return values, error behavior, and edge cases (e.g., duplicate new_name). Given no output schema and minimal annotations, more completeness is needed for an agent to use the tool reliably.
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?
All three parameters have descriptions in the schema, so the schema itself provides meaning. The description adds no additional parameter-level context beyond what is in the schema, so score is 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 verb 'copy' and the resource 'object with a new name', making the purpose unambiguous. It distinguishes itself from siblings like rename_object and remove_object.
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 copy is needed, but does not explicitly state when to use it versus alternatives like rename_object or add_object. No guidance on prerequisites 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.
export_timeseriesCIdempotent
Export time series to CSV.
| Name | Required | Description | Default |
|---|---|---|---|
| frequency | No | Reporting frequency. | |
| key_value | No | Zone/surface or "*". | * |
| environment | No | Environment filter. | |
| output_path | No | CSV path (default: output dir). | |
| variable_name | Yes | Variable name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| rows | Yes | |
| units | Yes | |
| frequency | Yes | |
| key_value | No | |
| variable_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (idempotentHint=true, destructiveHint=false) provide some behavioral context. However, the description adds no additional details, such as whether the CSV file is overwritten or appended, or if export requires prior simulation results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it is very brief and could benefit from slightly more detail without sacrificing 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?
Given the complexity (5 params, output schema exists), the description is minimal and lacks context such as default behavior, output file structure, or how it relates to other time series operations. The presence of an output schema reduces the burden, but the tool is still underspecified.
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 documents all 5 parameters with 100% coverage. The description does not add extra meaning beyond the schema, so a baseline 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 states a clear action ('Export') and resource ('time series') to a format ('CSV'), making the purpose specific. However, it does not explicitly distinguish from sibling tools like 'query_timeseries' which may also retrieve time series 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?
No guidance is provided on when to use this tool versus alternatives (e.g., query_timeseries). There is no mention of prerequisites, typical usage scenarios, or contexts where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_managerC
Upload and manage files. Drop files here to send them to the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only mentions 'upload' and 'send to server' but does not disclose side effects, authentication requirements (e.g., login needed), file size limits, or whether uploaded files overwrite existing ones. Lack of 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?
Two sentences, minimal waste. However, the second sentence ('Drop files here to send them to the server') reads more like a UI placeholder than a tool description. It could be more direct and structured. Decent but not excellent.
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 output schema and simple structure, the description should explain the tool's role in the file management workflow. It does not mention that upload is only one part of file management, nor does it reference sibling tools like list_files for retrieval. Leaves gaps for an agent.
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 no parameters (coverage 100%, baseline 3), but the description fails to clarify how files are provided. The phrase 'drop files here' suggests a UI interaction, but for an API it is ambiguous. No explanation of expected input format (e.g., multipart upload), file types, or size limits. Underwhelming for a file upload tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Upload and manage files', which clearly identifies the tool's purpose. However, 'manage' is somewhat vague, and the sibling tool 'list_files' suggests file listing is separate, so upload is distinct. Score 4 for specific verb+resource but lacking full precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_files or check_model_integrity. The description does not provide any context for appropriate usage or 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.
get_available_referencesARead-onlyIdempotent
List valid names for a reference field (e.g. zone_name).
| Name | Required | Description | Default |
|---|---|---|---|
| field_name | Yes | Field name to check. | |
| object_type | Yes | Object type containing the reference field. |
Output Schema
| Name | Required | Description |
|---|---|---|
| field_name | Yes | |
| object_type | Yes | |
| available_names | Yes | |
| by_reference_list | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds that it lists valid names for a reference field, which aligns with safe read behavior. No contradictions, but little extra context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource, no waste. 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?
The description covers the basic purpose for a simple list tool. An output schema exists, so return values need not be explained. Minor improvement would be to state when to use (e.g., 'before setting a reference field'), but still 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 coverage is 100%, so the schema already documents both parameters. The description adds an example ('zone_name') but no additional semantic meaning beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List' and resource 'valid names for a reference field', with an example ('zone_name'). It distinguishes itself from sibling tools like search_objects or list_objects by being specific to reference fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an example implying usage for reference field names, but no explicit guidance on when to use this tool vs alternatives (e.g., when setting a reference field). Context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_logARead-onlyIdempotent
Return recent model mutation history for this session.
Records add, update, remove, rename, duplicate, load, and new-model operations in chronological order. Useful for auditing what the agent has changed and verifying that edits were applied as intended.
The log is in-memory only and resets when clear_session is called.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum entries to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entries | Yes | |
| entry_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context: the log is 'in-memory only and resets when clear_session is called,' and enumerates the specific mutation types captured. No contradictions with 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?
Three sentences with zero wasted words. The main purpose is stated in the first sentence, followed by details and a note on scope. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an existing output schema, the description covers everything needed: purpose, tracked operations, and lifecycle behavior. No gaps given 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?
The only parameter (limit) is fully described in the schema (100% coverage). The description does not add additional semantics beyond what the schema already provides. Baseline score of 3 is appropriate as the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource: 'Return recent model mutation history for this session.' It lists the types of operations tracked (add, update, remove, etc.) and the purpose (auditing, verifying edits). This clearly distinguishes it from sibling tools which focus on simulation, file operations, or object manipulation.
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 states the tool is 'useful for auditing what the agent has changed and verifying that edits were applied as intended.' It also warns that the log resets when clear_session is called, implying when not to use it. While it doesn't name alternative tools, the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_sectionARead-onlyIdempotent
Read full content of a doc section from search_docs results.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | EnergyPlus version as "X.Y". | |
| location | Yes | Section location key from search_docs results. | |
| max_length | No | Maximum characters of text to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| tags | Yes | |
| text | Yes | |
| title | Yes | |
| doc_url | Yes | |
| version | Yes | |
| location | Yes | |
| truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is already communicated. The description adds that it reads 'full content', which aligns with annotations and adds minimal 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 a single, clear sentence that is front-loaded with the tool's purpose and context. 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 tool's simplicity and the presence of an output schema, the description adequately explains what the tool does. It doesn't detail the optional parameters (version, max_length) but those are captured in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description does not add additional meaning beyond what the schema provides, so 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 'Read full content of a doc section', which uses a specific verb and resource. It distinguishes from sibling 'search_docs' by specifying it retrieves the full content of a section found via search.
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 it should be used after 'search_docs' results are obtained, but does not explicitly state when not to use it or 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.
get_zone_propertiesARead-onlyIdempotent
Typed summary of zone geometry, surfaces, constructions, schedules, and HVAC.
Returns floor area, volume, ceiling height, surface counts by type (walls/floors/roofs/ windows/doors), unique construction names, schedule names referenced by zone loads, HVAC equipment connection names, and thermostat control object names.
Geometry values (area, volume, height) are calculated from BuildingSurface:Detailed vertices and returned as None when no surfaces exist for the zone.
Preconditions: model loaded. Side effects: none — read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_name | No | Zone name. Omit for all zones. |
Output Schema
| Name | Required | Description |
|---|---|---|
| zones | Yes | |
| zone_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds that geometry values are calculated from vertices and returned as None when no surfaces exist, which provides useful behavioral detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with no wasted words. Each sentence serves a distinct purpose: overview, listing returns, explaining calculation, stating preconditions and side effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions, side effects, behavior on missing data, and return value composition. Since there is an output schema, full detail on return values is not required, but the description still provides a useful summary.
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 and already describes the parameter (optional zone_name, omitting gets all). The description does not add extra meaning for the parameter beyond what 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?
Clearly states it is a 'Typed summary of zone geometry, surfaces, constructions, schedules, and HVAC.' Lists specific returned items, which distinguishes it from other tools like view_geometry or analyze_peak_loads.
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 preconditions ('model loaded') and side effects ('read-only'). Provides clear context for when to use, but does not explicitly mention when not to use or provide alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
List all uploaded files with metadata.
| 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. The description only mentions listing files and metadata, but does not disclose side effects, authentication requirements, rate limits, or output structure beyond 'metadata'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, clearly states the core functionality.
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 list-all tool with no parameters and an output schema, the description covers the essential behavior. Could be slightly more specific about metadata, but overall adequate.
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, so baseline is 4. Schema coverage is 100% trivially, and description adds no extra meaning beyond what's implied by 'list all'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'uploaded files', and what is returned 'metadata'. It distinguishes from siblings like 'file_manager' and 'list_objects'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'file_manager' or other listing tools. No when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_objectsARead-onlyIdempotent
List objects of a type.
By default each object is returned in brief form: name plus schema-required fields
only. Optional fields (economizer settings, enum overrides, etc.) are omitted — set
include_all_fields=True to get every field, or read the
idfkit://model/objects/{type}/{name} resource for one object's full field values.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum objects to return. | |
| object_type | Yes | EnergyPlus object type (e.g. "Zone"). | |
| include_all_fields | No | If False (default), each object includes only its name and schema-required fields to save tokens. Set True to return every field value for every object. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| objects | Yes | |
| returned | Yes | |
| object_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by describing the default brief output, the omission of optional fields, and the include_all_fields option. No contradiction with annotations which correctly indicate read-only, idempotent 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?
Two sentences, first sentence states core action, second sentence expands on behavior and alternatives. No unnecessary words, front-loaded and 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?
With output schema present, description adequately covers default behavior and key parameter. Mentions alternative resource for full fields. Could mention pagination via limit but limit is documented in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds concrete examples of optional fields (economizer settings, enum overrides) and explains the default effect of include_all_fields, enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'List objects of a type' clearly states the action and resource. It differentiates between brief and full form but does not explicitly contrast with sibling tools like search_objects or list_object_types.
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 listing objects of a given type and provides alternative ways to get full fields, but does not explicitly state when to use this tool vs siblings or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_object_typesARead-onlyIdempotent
Browse object types grouped by category. Filter by group to list individual types.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Filter to a group (e.g. "Thermal Zones and Surfaces"). | |
| limit | No | Max type names to include. | |
| version | No | EnergyPlus version as "X.Y.Z". |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | Yes | |
| truncated | Yes | |
| total_types | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description does not need to repeat that. It adds context about grouping by category and filtering 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, clear sentence with no wasted words. It front-loads the main action and grouping behavior.
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 the core functionality (browsing by category, filtering by group). With an output schema present, the agent does not need further details about 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?
Schema description coverage is 100%, so the description adds minimal value beyond what the schema already provides for parameters. The description mentions filtering by group, which is already documented in 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 'browse' and the resource 'object types'. It also adds grouping by category, which distinguishes it from siblings like 'list_objects' (which lists instances) and 'describe_object_type' (which describes a specific type).
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 says 'Filter by group to list individual types,' which implies when to use it. However, it does not explicitly state when not to use it or provide direct alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_output_variablesARead-onlyIdempotent
List output variables and meters from last simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results. | |
| search | No | Regex filter on name (case-insensitive). |
Output Schema
| Name | Required | Description |
|---|---|---|
| returned | Yes | |
| variables | Yes | |
| total_available | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and idempotent. The description adds the context 'from last simulation' but doesn't mention behavior when no simulation exists or if data is empty. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource. Efficient with 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 simple listing tool with output schema and annotations, the description covers the essential purpose. Could mention return format or pagination, but not critical.
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?
Input schema covers 100% with descriptions for 'limit' and 'search'. The tool description adds no extra meaning; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'output variables and meters from last simulation', specifying both the resource and source. It distinguishes from siblings like 'list_files' or 'list_objects' which are not about simulation outputs.
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 explicit guidance on when to use this tool vs alternatives like 'list_simulation_reports' or 'query_simulation_table'. The description only implies usage after a simulation run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_simulation_reportsARead-onlyIdempotent
List all tabular report names available in the last simulation's SQL output.
Use the returned names with query_simulation_table to retrieve specific tables.
Preconditions: simulation completed with SQL output available. Side effects: none — read-only.
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that there are no side effects and it's read-only, reinforcing the annotations. It also discloses preconditions, which adds value beyond the structured fields.
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, using three short sentences with no wasted words. It front-loads the main purpose and provides just enough additional context in follow-up sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no parameters and an output schema exists, the description covers all necessary aspects: what the tool does, how to use its output, preconditions, and side effects. It is fully complete for an agent to select 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?
There are zero parameters, so the description does not need to add parameter-specific meaning. Baseline 4 is appropriate as the description already explains the tool's output and usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'all tabular report names available in the last simulation's SQL output.' The verb 'list' and specific resource 'tabular report names from last simulation's SQL output' make the purpose explicit and distinguish it from siblings like query_simulation_table or view_simulation_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 provides clear usage guidance: it tells the agent to use the returned names with 'query_simulation_table' for data retrieval, and specifies preconditions (simulation completed with SQL output). While it doesn't explicitly state when not to use it, the context is sufficient for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_modelAIdempotent
Open an IDF or epJSON file as the active model.
Provide exactly one source: file_path for files on the server's disk, or
upload_name to load a file the user dropped into the file_manager UI.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Version override as "X.Y.Z". | |
| file_path | No | Server-local path to an IDF/epJSON file (stdio/local clients). | |
| upload_name | No | Name of a file uploaded via the file_manager UI tool (remote clients). |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | Yes | |
| version | Yes | |
| file_path | Yes | |
| zone_count | Yes | |
| total_objects | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosures that it sets the active model state, consistent with idempotentHint=true. No contradictions with annotations. Adds context about file sources but does not detail side effects (e.g., overwriting unsaved changes).
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 with front-loaded action verb and clear parameter guidance. 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?
With output schema present, description adequately covers the loading operation. Could mention effect on existing model state, but siblings like new_model imply this is a replacement.
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%. Description adds mutual exclusivity constraint and clarifies the distinction between file_path and upload_name, which goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Open' and the resource 'IDF or epJSON file as the active model'. It distinguishes from siblings like new_model and save_model by specifying it loads an existing file.
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 instructs to 'Provide exactly one source: file_path or upload_name', guiding parameter selection. Does not explicitly state alternatives (e.g., new_model for creating a new file), but context is clear for a loading action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate_modelADestructive
Forward-migrate the loaded model to a newer EnergyPlus version.
Drives the EnergyPlus IDFVersionUpdater transition binaries through the
required chain of steps and replaces the session document with the migrated
one. state.file_path is unchanged — call save_model(path=...) to
persist the migrated model.
Preconditions: model loaded; target version >= current model version. Side effects: replaces the in-memory document; records a change-log entry. Next step: validate_model + check_model_integrity, then save_model.
Read idfkit://migration/report for per-step stdout/stderr and the
structural diff after the call.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_work_dir | No | Retain the per-step transition work directory for debugging. | |
| energyplus_dir | No | EnergyPlus install dir. Autodetected if None. | |
| target_version | No | Target EnergyPlus version "X.Y.Z". If omitted, uses the installed EnergyPlus version (the migration binaries ship with EnergyPlus, so an install is required regardless). |
Output Schema
| Name | Required | Description |
|---|---|---|
| diff | Yes | Structural diff between the source and migrated documents. |
| steps | Yes | |
| success | Yes | |
| summary | Yes | |
| source_version | Yes | |
| target_version | Yes | |
| requested_target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (destructiveHint=true) are supplemented with detailed behavioral context: drives IDFVersionUpdater, replaces in-memory document, records changelog, and offers debugging via keep_work_dir. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points, front-loaded with main action. Slightly verbose but each sentence adds value. No wasted 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 complexity, full schema coverage, output schema present, and annotations, the description covers all critical aspects: preconditions, side effects, next steps, and report location. Highly 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 coverage is 100% with detailed descriptions. The tool description adds minimal extra meaning beyond restating schema info, 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 tool forward-migrates the loaded model to a newer EnergyPlus version, using specific verb and resource. It is distinct from siblings like convert_osm_to_idf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides preconditions (model loaded, target version >= current), side effects (replaces in-memory document, records change-log), and next steps (validate_model, save_model). Does not explicitly compare to alternatives but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_modelB
Create an empty model.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | EnergyPlus version as "X.Y.Z" (default: latest). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries full responsibility for behavioral disclosure. It fails to mention side effects (e.g., whether an existing model is replaced) or the state of the session after creation.
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 (one sentence) and front-loads the core purpose. However, some additional context could be included without reducing 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?
Despite the presence of an output schema, the description omits critical context such as what the tool returns, whether it initializes a session, and how it interacts with an existing model. This is insufficient for a creation 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% and the parameter 'version' is well-documented in the schema. The description adds no additional meaning, 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 'Create an empty model' uses a specific verb ('create') and resource ('model') with a qualifier ('empty'). This clearly distinguishes it from sibling tools like load_model or migrate_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as load_model or clear_session. It lacks any contextual cues about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_simulation_tableARead-onlyIdempotent
Query tabular report data from the last simulation's SQL output.
Use this for deeper analysis beyond the structured diagnostics in
idfkit://simulation/results. Tabular data covers every EnergyPlus
summary report: energy use, envelope, HVAC sizing, comfort, and more.
Omit table_name to retrieve all tables within a report at once.
To discover available report names call list_simulation_reports first.
Common report names:
AnnualBuildingUtilityPerformanceSummary— site/source energy, end uses, EUISystemSummary— unmet hours, HVAC sizingEnvelopeSummary— U-values, areas, orientationsEquipmentSummary— HVAC component sizingZoneComponentLoadSummary— peak heating/cooling loads by zoneLightingSummary— lighting power density
Preconditions: simulation completed with SQL output available (sql_available: true
in idfkit://simulation/results).
Side effects: none — read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| row_name | No | Filter to a specific row label. | |
| table_name | No | Table name within the report (e.g. 'End Uses', 'Time Setpoint Not Met'). Omit to return all tables in the report. | |
| column_name | No | Filter to a specific column label. | |
| report_name | Yes | Report name (e.g. 'AnnualBuildingUtilityPerformanceSummary', 'SystemSummary'). Use list_simulation_reports to discover available names. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| row_count | Yes | |
| table_name | Yes | |
| report_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations (readOnlyHint=true, destructiveHint=false) by stating 'Side effects: none — read-only.' Adds behavioral detail about omitting table_name retrieving all tables. Could mention response format but output schema exists.
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 purpose first, then usage, parameter guidance, and preconditions. Reasonably concise for the detail provided; could tighten slightly but no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a read-only query tool: covers purpose, parameter usage, preconditions, side effects, and example report names. Output schema handles 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?
Schema covers all parameters with descriptions (100% coverage). Description adds significant value: examples of common report names, guidance on omitting table_name, and referencing list_simulation_reports for discovery.
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 verb 'Query', resource 'tabular report data from the last simulation's SQL output', and distinguishes purpose from sibling tools by mentioning 'deeper analysis beyond structured diagnostics' and referencing list_simulation_reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit preconditions (simulation completed with SQL output), context for when to use (deeper analysis), and refers to related tool list_simulation_reports for discovery. No explicit when-not-to-use or alternatives, but contextual guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_timeseriesBRead-onlyIdempotent
Query time series data from simulation SQL output.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max data points. | |
| frequency | No | Reporting frequency. | |
| key_value | No | Zone/surface or "*". | * |
| environment | No | Environment filter. | |
| variable_name | Yes | Variable name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| units | Yes | |
| returned | Yes | |
| frequency | Yes | |
| key_value | No | |
| total_points | Yes | |
| variable_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, non-destructive behavior. The description adds the source (simulation SQL output) but does not disclose potential large result sets, pagination, or dependency on prior simulation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that immediately conveys the tool's purpose. 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 moderate complexity (5 params, 1 required) and existing annotations, the description is adequate but lacks guidance on prerequisites and result structure. The presence of an output schema is not leveraged.
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 provides context but does not elaborate on parameters beyond what the schema already states.
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 queries time series data from simulation SQL output. However, it does not distinguish from siblings like query_simulation_table or export_timeseries, missing an opportunity to differentiate.
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 usage guidance is provided. The description does not specify when to use this tool, prerequisites (e.g., model loaded and simulated), or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_objectADestructive
Delete an object. Blocked if referenced unless force=True.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Object name. | |
| force | No | Remove even if referenced by other objects. | |
| object_type | Yes | EnergyPlus object type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| object_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds value by disclosing that deletion is blocked when referenced unless force=True, which goes beyond the annotation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence states the action ('Delete an object'), and the second adds a critical condition. 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?
The description is adequate for a destructive tool with good annotations. It covers the purpose and a key behavioral nuance. Could mention irreversibility or success indicators, but overall sufficient given the structured schema and output schema (exists).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to explain parameters fully. However, it adds meaning to the force parameter by relating it to the blocking behavior, which provides context beyond the schema's 'Remove even if referenced by other objects.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Delete an object' with a specific verb and resource. It distinguishes from sibling tools like add_object, duplicate_object, rename_object, and remove_objects (plural) by specifying the singular action and the condition about references.
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 context on when to use force=True ('Blocked if referenced unless force=True'), offering clear guidance on a key condition. However, it does not explicitly compare with alternatives like remove_objects or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_objectsADestructive
Delete every object of the given type. No-op when none exist.
Intended for types where individual entries have no canonical addressable
identity (Output:Variable, Output:Meter, …): those parse with
_name="" to support duplicates, so remove_object cannot reach them
individually. Use this when the calling tool owns the entire collection
and wants replace-all semantics (e.g. an output-picker UI).
Blocked when any entry is referenced by other objects unless force=True.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Remove even if some entries are referenced by other objects. | |
| object_type | Yes | EnergyPlus object type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| removed | Yes | |
| object_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes no-op behavior, blocking when referenced, and force override. Annotations only indicate destructiveHint=true; description adds valuable context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: core function, use case, condition. Front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, use case, behavior (no-op, blocking, force), and sibling differentiation. With high schema coverage and output schema, description is 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 coverage is 100%, so baseline is 3. Description explains force parameter meaning but object_type is already defined in schema. Minimal added value 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?
Clearly states 'Delete every object of the given type' with specific verb and resource. Differentiates from sibling 'remove_object' by clarifying intended use for types without canonical addressable identity.
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 when to use (for collections owned by caller with replace-all semantics) and when not (for types with individual identity). Also provides condition for blocking and force parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_objectA
Rename and auto-update all references.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | New object name. | |
| old_name | Yes | Current object name. | |
| object_type | Yes | EnergyPlus object type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| new_name | Yes | |
| old_name | Yes | |
| object_type | Yes | |
| references_updated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (all false). The description adds that it auto-updates references, implying side effects, but lacks details on what modifications occur or authorization needs.
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?
Description is a single concise sentence that is front-loaded. However, it could benefit from slightly more detail 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?
Given the tool's side effects (auto-updating references), the description is too brief. It does not explain what 'auto-update' entails, output format, or prerequisites, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already describes each parameter. The description adds no additional 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 action (rename) and the resource (object), and highlights the unique auto-update of references, distinguishing it from siblings like update_object or remove_object.
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 renaming objects with automatic reference updates, but does not explicitly state when to use vs alternatives like update_object or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_simulationAIdempotent
Execute EnergyPlus on the loaded model — the authoritative runtime validation gate.
Fatal or severe errors mean the model did not simulate correctly. A clean exit does
not guarantee physically reasonable results. After this call, read the resource
idfkit://simulation/results for full QA diagnostics: unmet hours by zone,
end-use energy breakdown, classified warnings, and QA flags that drive the fix loop.
Preconditions: model loaded; weather file set via download_weather_file, or design_day=True. Side effects: writes outputs to output_directory; updates session simulation result. Next step: read idfkit://simulation/results to assess result quality.
| Name | Required | Description | Default |
|---|---|---|---|
| annual | No | Annual simulation. | |
| readvars | No | Run ReadVarsESO after the simulation to produce eplusout.csv (and eplusmtr.csv when meters are requested) alongside the .eso/.mtr files. | |
| design_day | No | Design-day only. | |
| weather_file | No | EPW path (default: last downloaded). | |
| energyplus_dir | No | EnergyPlus install dir. | |
| output_directory | No | Output dir. | |
| energyplus_version | No | Version filter "X.Y.Z". |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | Yes | Error summary from a simulation run. |
| success | Yes | |
| energyplus | Yes | EnergyPlus installation metadata. |
| runtime_seconds | Yes | |
| output_directory | Yes | |
| simulation_complete | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds useful context about fatal/severe errors and that a clean exit does not guarantee physically reasonable results, which is beyond annotation capabilities.
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 three concise paragraphs: purpose, result interpretation, and preconditions/side effects/next step. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 7 parameters and an output schema, the description covers preconditions, side effects, error interpretation, and next steps. It is complete for an experienced user without over-explaining.
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 linking parameters to preconditions (e.g., weather_file or design_day) and explaining the simulation flow, which goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute EnergyPlus on the loaded model — the authoritative runtime validation gate.' This provides a specific verb and resource, distinguishing it from sibling tools like check_model_integrity or validate_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?
Explicit preconditions are given: 'model loaded; weather file set via download_weather_file, or design_day=True.' Also specifies side effects and next step, showing when and how to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_modelAIdempotent
Write model to disk as IDF or epJSON.
When file_path is omitted the model is re-saved to its original load
path. An explicit file_path must resolve within an allowed output
directory (IDFKIT_MCP_OUTPUT_DIRS, defaults to CWD) and will not
overwrite an existing file unless overwrite is True.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | Output path (default: original load path). | |
| overwrite | No | Overwrite existing output. | |
| output_format | No | Output format. | idf |
Output Schema
| Name | Required | Description |
|---|---|---|
| format | Yes | |
| status | Yes | |
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it explains the default path behavior, directory restrictions, and overwrite semantics. Annotations already indicate idempotentHint=true and destructiveHint=false, which align with the description. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with only two sentences. The key action is front-loaded ('Write model to disk as IDF or epJSON'), and all necessary details are included without redundancy. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, 0 required), the description covers the main behavioral aspects. There is an output schema (not shown), so return values are likely documented there. The description could mention error conditions or confirmation messages, but overall it is adequately 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 coverage is 100%, so baseline is 3. The description adds significant value by explaining the default for file_path (original load path), the allowed directory constraint, and the overwrite condition. For output_format, it just lists the options, but the overall parameter semantics are enhanced.
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 a specific verb 'Write' and identifies the resource 'model to disk as IDF or epJSON'. It clearly distinguishes saving from other operations like loading or migrating, and mentions the two output formats, 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 provides clear when-to-use guidance: it explains the behavior when file_path is omitted (re-save to original path), the directory constraint (must be within IDFKIT_MCP_OUTPUT_DIRS), and the overwrite condition. It does not explicitly contrast with siblings, but the context is sufficient for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsBRead-onlyIdempotent
Search EnergyPlus docs by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by doc set (e.g. "Input Output Reference"). | |
| limit | No | Maximum results. | |
| query | Yes | Search query (e.g. "zone heat balance"). | |
| version | No | EnergyPlus version as "X.Y". |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| results | Yes | |
| version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already define readOnlyHint=true and idempotentHint=true, making the tool's safe, read-only nature clear. The description adds minimal behavioral context, only stating 'by keyword' without explaining how results are returned (e.g., snippets, titles) or search scope.
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 no redundant words. It is appropriately concise, though slightly more detail could be included 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?
Given the presence of an output schema and comprehensive parameter descriptions, the tool is mostly complete. However, the description lacks information about return format (e.g., document titles, snippets), which would help the agent interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all parameters. The description does not add new meaning beyond the schema, meeting the baseline of 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 'Search EnergyPlus docs by keyword' clearly states the verb (search), resource (EnergyPlus docs), and method (by keyword). It effectively distinguishes from sibling tools like search_objects and search_schema which target different resources.
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 usage guidelines are provided. The description does not indicate when to use this tool versus alternatives such as search_objects or search_schema, nor does it mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_objectsARead-onlyIdempotent
Find objects by name or field value substring match.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return. | |
| query | Yes | Case-insensitive substring match on name and string fields. | |
| object_type | No | Restrict search to a specific type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description adds that it performs case-insensitive substring matching, which is useful context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is densely informative, with no wasted words. The core purpose 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 3 parameters with full schema coverage, an output schema (exists), and rich annotations, the description is complete enough. It might briefly note that it searches across all objects in the model, but that is implied by the name 'objects'.
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?
Input schema has 100% coverage with descriptions for all three parameters. The description adds no further semantic detail beyond the schema; it effectively restates the query parameter's purpose. Baseline score 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 specific verb 'find' and resource 'objects', and clarifies the method as substring match on name and field values. This clearly distinguishes from siblings like 'list_objects' (which likely lists all) and 'search_docs' (which searches documentation).
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 instead of alternatives. It does not mention when not to use it (e.g., for exact match or full-text search) or suggest sibling tools like 'list_objects' or 'search_docs' for other use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_schemaARead-onlyIdempotent
Find object types by name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return. | |
| query | Yes | Case-insensitive substring match. | |
| version | No | EnergyPlus version as "X.Y.Z". |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| limit | Yes | |
| query | Yes | |
| matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds minimal behavioral context beyond 'finds by name or description'. It does not contradict annotations, but also does not elaborate on side effects or return behavior beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous information. It is front-loaded with the verb and resource, making it efficient for an AI agent 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?
Given the tool's simplicity, full schema coverage, existing output schema, and comprehensive annotations, the description is largely sufficient. It could clarify that it searches schema metadata rather than object instances, but overall completeness is high.
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 parameters are fully documented in the input schema. The description does not add additional semantic value beyond the schema's parameter descriptions (e.g., 'case-insensitive substring match' is already in 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 action ('Find object types') and the search criteria ('by name or description'). It distinguishes this tool from siblings like 'search_objects' (which finds instances) and 'search_docs' (which finds documentation), providing clear resource differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it specify any prerequisites or exclusions. It simply states the function without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_weather_stationsBRead-onlyIdempotent
Find weather stations by name or coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results. | |
| query | No | City or airport name. | |
| state | No | State code, e.g. "MA". | |
| country | No | Country code, e.g. "USA". | |
| latitude | No | Latitude. | |
| longitude | No | Longitude. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | No | |
| stations | Yes | |
| search_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint, idempotentHint, and destructiveHint. The description adds no additional behavioral context (e.g., pagination, rate limits, or that results are searchable by partial name). It is consistent but does not enhance transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no fluff, earning its place. However, it could be slightly expanded to include a hint about optional parameters or usage context 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?
Given the tool has 6 optional parameters and an output schema, the description is minimally adequate. It covers the core functionality but lacks details like order-by, radius search, or wildcard support. The output schema exists, so return values need not be explained.
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 each parameter is already well-documented. The description's mention of 'name or coordinates' loosely corresponds to parameters (query, lat/lon) but adds no new meaning beyond what the schema provides. 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 finds weather stations by name or coordinates, specifying the verb 'Find' and the resource 'weather stations'. It distinguishes itself from sibling search tools like 'search_docs' and 'search_objects' by focusing on weather stations.
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 mentioning that it should be used before other tools requiring station IDs or that it is not suitable for non-weather searches. No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_objectC
Update fields on an existing object.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Object name. | |
| fields | Yes | Fields to update as {field_name: value}. | |
| object_type | Yes | EnergyPlus object type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not contradictory (readOnlyHint=false), but the description does not disclose whether updates are merged or overwritten, what happens on error, or any side effects beyond the basic mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short but lacks necessary detail. It is concise to a fault, missing key information that would help an agent select or use the tool correctly.
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 three required parameters and no output schema, the description should explain what 'fields' are valid for each object_type and what the return value is. It provides almost no contextual information.
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 parameters are already documented. The description adds no additional meaning or context beyond the parameter names and types, resulting in no added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action 'Update' and resource 'object', but 'object' is ambiguous without specifying it's an EnergyPlus object. Siblings like add_object, rename_object also operate on objects, so the description does not clearly differentiate.
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 vs alternatives such as add_object or duplicate_object. The description lacks context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_modelARead-onlyIdempotent
Schema-based pre-flight check — run after any model modifications.
Checks field types, numeric ranges, required fields, enum values, singleton constraints (codes E001-E010, W001-W003), and cross-object reference integrity.
IMPORTANT: This is schema validation only. It does not run EnergyPlus and cannot detect runtime faults such as convergence failures, zone connectivity issues, or autosizing problems. A model that passes this check may still fail to simulate.
Preconditions: model loaded (load_model or new_model). Side effects: none — read-only. Next steps: check_model_integrity for domain-level QA, then save_model, then run_simulation for definitive runtime validation.
| Name | Required | Description | Default |
|---|---|---|---|
| object_types | No | Only validate specific types (default: all). | |
| check_references | No | Check reference integrity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | Yes | |
| is_valid | Yes | |
| warnings | Yes | |
| info_count | Yes | |
| error_count | Yes | |
| warning_count | Yes | |
| errors_truncated | No | |
| warnings_truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description details what exactly is checked (field types, ranges, enums, reference integrity) and crucially states what is NOT checked (runtime faults, convergence issues). This provides comprehensive behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a clear title, bullet-point list of checks, important caveats, and structured sections for preconditions, side effects, and next steps. 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 the complexity of the tool, the presence of an output schema, and the annotations, the description covers all necessary aspects: purpose, usage, behavioral details, parameter implications, and integration with other tools. It leaves no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear descriptions for both parameters. The description adds no additional meaning beyond what the schema already provides, so the 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 identifies the tool as a 'Schema-based pre-flight check' and specifies its role after model modifications. It effectively distinguishes it from sibling tools like check_model_integrity and run_simulation by noting their 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 explicitly states when to use it ('run after any model modifications') and provides preconditions (model loaded), side effects (none), and next steps (check_model_integrity, run_simulation). It also clarifies what it does not cover (EnergyPlus runtime faults), giving clear guidance on when not to rely solely on this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_geometryARead-onlyIdempotent
Show interactive 3D building geometry from the loaded model.
Renders all building surfaces, fenestration, and shading geometry in a Three.js viewport with orbit controls. Click surfaces to inspect properties; toggle visibility by surface type or zone.
| Name | Required | Description | Default |
|---|---|---|---|
| color_by | No | Color surfaces by type (wall/floor/roof/window) or zone. | type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds that it uses a Three.js viewport with orbit controls, click inspection, and visibility toggling. This adds useful behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and each sentence adds value. No extraneous words 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 simplicity (one optional param, read-only, no output schema), the description covers the main aspects: rendering, interaction, visibility toggling. It could mention that a model must be loaded, but 'from the loaded model' implies it. Not fully explicit about return behavior (likely no JSON returns), but acceptable for an interactive view 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?
The only parameter 'color_by' is fully described in the schema with enum and default. The tool description does not add any additional semantics to the parameter; it merely restates the enum options. With 100% schema coverage, baseline is 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's purpose: showing interactive 3D geometry from the loaded model. It specifies what is rendered (surfaces, fenestration, shading) and interactions (click, toggle visibility). This distinguishes it from sibling tools like view_schedules or view_simulation_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?
No explicit when-to-use or when-not-to-use guidance is provided. The agent can infer usage from the purpose, but there is no mention of alternatives or prerequisites (e.g., model must be loaded).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_schedulesARead-onlyIdempotent
Show interactive schedule heatmap from the loaded model.
Renders EnergyPlus schedules as a visual heatmap showing hourly values across days of the week (week view) or across the full year (year view). Supports Schedule:Compact, Schedule:Constant, Schedule:Year, and Schedule:File types.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Schedule name to visualize. If omitted, shows all top-level schedules. | |
| year | No | Year for schedule evaluation (affects day-of-week alignment). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds value by explaining it renders a visual heatmap and supports specific schedule types, going beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two clear paragraphs. First sentence states core purpose, second adds detail. No redundant 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 annotations and full schema coverage, the description covers all necessary context. No output schema needed; the interactive heatmap nature is well explained.
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 mentions 'Schedule name' and 'year' but does not add meaningful detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it shows an interactive schedule heatmap from the loaded model, specifying supported schedule types and views (week/year). This distinctly separates it from siblings like view_geometry.
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 visualizing schedules but does not explicitly state when to use alternatives or when not to use it. No comparison with sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_simulation_reportARead-onlyIdempotent
Browse the full EnergyPlus tabular report in an interactive viewer.
Returns all tabular data from the simulation SQL output organized by report, section, and table. The companion viewer provides a searchable, browsable interface with a table-of-contents sidebar.
Requires a completed simulation with SQL output.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| reports | Yes | |
| timestamp | Yes | |
| environment | Yes | |
| table_count | Yes | |
| report_count | Yes | |
| building_name | Yes | |
| energyplus_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavioral context: interactive viewer, searchable, browsable with table-of-contents sidebar. It also notes the need for SQL output. No contradictions with 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 concise at three sentences, each earning its place: first sentence states core purpose, second details return format, third adds prerequisite. Information is front-loaded and no superfluous content exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description covers the main purpose and prerequisite adequately. It could mention performance considerations for large reports or that the viewer is read-only, but overall it is sufficiently complete for a browsing 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?
The tool has no parameters and schema coverage is 100% (vacuously). Per guidelines, 0 parameters leads to a baseline of 4. The description correctly does not attempt to add 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 browses the full EnergyPlus tabular report in an interactive viewer, specifying it returns all tabular data organized by report, section, and table. However, it does not explicitly differentiate from sibling tools like list_simulation_reports or query_simulation_table, which have overlapping functionality.
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 states the prerequisite (a completed simulation with SQL output), giving clear context for when to use. However, it provides no guidance on when not to use this tool (e.g., if only a specific table is needed) or mention of alternatives like query_simulation_table.
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, from model editing to simulation and analysis. Overlap is minimal; even similar tools like add_object and batch_add_objects are differentiated by batch vs single operation.
Tool names consistently follow a verb_noun pattern (snake_case), e.g., list_objects, run_simulation, validate_model. The only minor deviation is 'file_manager', but it still fits the overall pattern.
39 tools is relatively high but appropriate given the complexity of EnergyPlus model management, which covers modeling, simulation, results analysis, weather, documentation, and file management. Each tool serves a specific need.
The tool surface covers the full lifecycle: model creation, editing, validation, simulation, results analysis, weather files, schema exploration, and file management. No obvious gaps for core workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Design, solve and simulate HVAC systems from real components, weather years and buildings.
1Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to interact with OpenStudio building energy models through natural language, allowing users to load, inspect, and manipulate OSM files including building geometry, HVAC systems, materials, schedules, and internal loads.11MIT
- AlicenseNot gradedqualityAmaintenanceEnables natural-language interaction with Ladybug Tools for building performance simulation, 3D modeling, and data visualization, allowing agents to perform complex environmental analysis tasks without CAD software.4GPL 3.0
- FlicenseNot gradedqualityAmaintenanceEnables natural language interaction with OpenStudio building energy simulation, allowing creation, querying, and modification of models, running EnergyPlus simulations, and analyzing results.30
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to understand, query, and manipulate Honeybee building energy models through natural language via the Model Context Protocol.17GPL 3.0
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/idfkit/idfkit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server