PVsyst CLI MCP
Click on "Deploy 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., "@PVsyst CLI MCPcheck my PVsyst license quota and run MY_PROJECT.PRJ variant VC0"
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.
PVsyst CLI MCP
English | 简体中文
Local MCP server and Python adapter for driving an installed copy of PVsyst 8 on Windows. It wraps PVsystCLI.exe for simulations, weather conversion, and license checks, and provides direct parsers and editors for PVsyst text files (.PRJ, .VCx, .PAN, .OND, .BTR, .GEN, .SIT) along with targeted GUI automation for features that the official CLI does not expose.
You need your own PVsyst installation and license on the host machine.
Common workflows
What you want to do | Main entry point | Guide |
Check equipment counts and missing inputs from a feasibility brief |
| |
Inspect an existing project, apply an isolated change, and run a full year |
| |
Assemble a new project by repeating fixed subarray blocks from a template |
| |
Build a 3D house scene, bind roof orientations, and run annual shading |
| |
Evaluate centralized AC-coupled storage against an hourly load profile |
| |
Diff two or three simulation runs and bundle the project + reports into a ZIP |
|
By default the server registers 82 tools across 8 groups. If you need low-level access to components, variant parameters, circuit trees, weather files, loads, or result CSVs, see the tool reference.
Related MCP server: blender-control-mcp
Installation
Requirements:
Windows with Python 3.10+
Installed
PVsystCLI.exe(tested against 8.0.6 and 8.1.6)For features that drive the desktop UI (3D house scene import and DC cable resistance calculation): PVsyst 8.1.6 rev49278 in Chinese locale at 96 DPI (100% display scaling)
From the repository root:
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
$env:PVSYST_CLI = 'C:\Program Files\PVsyst8.1.6\PVsystCLI.exe'
$env:PVSYST_WORKSPACE = 'C:\path\to\PVsyst8.1_Data'
.\.venv\Scripts\python.exe -m pvsyst_autoDependencies (mcp 2.x and tzdata for Windows IANA timezones) are declared in pyproject.toml. Running pip install -r requirements.txt installs the same editable package; use pip install . for a regular install.
MCP client configuration
Point your MCP client at the virtualenv Python executable. Launching via -m pvsyst_auto (or the installed pvsyst-mcp console script) does not depend on the working directory:
{
"mcpServers": {
"pvsyst": {
"command": "C:/path/to/pvsyst-cli-mcp/.venv/Scripts/python.exe",
"args": ["-m", "pvsyst_auto"],
"env": {
"PVSYST_CLI": "C:/Program Files/PVsyst8.1.6/PVsystCLI.exe",
"PVSYST_WORKSPACE": "C:/path/to/PVsyst8.1_Data"
}
}
}
}pvsyst_mcp_server.py at the repo root is kept as a thin wrapper so older client configs still boot. Restart your MCP client after changing environment variables or pulling code updates.
Once connected, run pvsyst_capabilities and pvsyst_license_info first to see which CLI flags your PVsyst version supports and check your remaining CLI simulation quota. Note that PVsyst tracks CLI and GUI licenses separately.
Filtering exposed tool groups
Exposing all 82 tools can bloat an LLM's context window. If a session only needs a subset, set PVSYST_TOOL_GROUPS in env—for example "PVSYST_TOOL_GROUPS": "setup,engineering,results" to expose only those 15 tools.
Valid group keys (case-sensitive): setup, projects, components, weather, storage, simulation, results, engineering. Unknown or duplicate group names raise an error at startup so typos fail fast.
Understanding task statuses
High-level workflow tools return structured status fields so callers can tell the difference between a dry-run check, a file edit, and an actual PVsyst simulation:
Status / Flag | What it means |
| Dry-run preflight passed; no files were written and PVsyst did not run |
| Project or input files were written to disk, but no simulation has run yet |
| PVsyst ran the simulation and output checks (calendar, columns, units) passed |
| Simulation or preparation finished, but there are caveats to check (e.g. template-inherited fields, weather time-shift warnings, or missing engineering citations) |
| Preconditions or execution failed; check |
Package layout
src/pvsyst_auto/
├── api/ # MCP server setup, strict argument validation, and 8 tool modules
├── workflows/ # End-to-end pipelines (template runs, revisions, house tasks, ZIP delivery)
├── engineering/ # Feasibility brief checks, input handoff, and multi-scenario diffs
├── project/ # .PRJ/.VCx parsing, subarray circuits, templates, and orientations
├── components/ # .PAN/.OND/.BTR/.GEN readers, allowlisted editors, and curve tables
├── scene/ # PVCollada (.pvc2) 3D house mesh generator, XML reader, and coordinate checks
├── energy/ # Load profiles, battery storage, loss scalars, and power factor / grid limits
├── weather/ # Open-Meteo ERA5 downloader, LegalTime alignment, and .SIT/.MET conversion
├── native/ # Subprocess wrapper for PVsystCLI.exe and Win32 GUI automation bridges
└── results.py # Result CSV/PDF parser and hourly aggregationSee architecture.md for module responsibilities and old-to-new import paths, and native-entry-map.md for the support matrix across PVsyst features.
To use the CLI wrapper directly from Python:
from pvsyst_auto import PVsystCLI, PVsystErrorDevelopment & tests
Install the package in editable mode (pip install -e .) before running tests. Contract tests live under tests/contracts/. Tests that drive real PVsyst project fixtures or PVsystCLI.exe expect local environment variables pointing to your workspace and installed binary.
License
MIT.
Available Tools
82 toolspvsyst_acquire_weatherA
[Sites & Weather] Plan or execute one Open-Meteo ERA5 year as a PVsyst standard hourly weather CSV. Give either location_id from pvsyst_resolve_location, or explicit latitude/longitude together with site_name, country_code and timezone_name; mixing both is blocked. year is an integer in 1969..2068 (native weather dates carry two-digit years; ERA5 itself starts in 1940) and the requested year must already be fully published by the provider. temperature_method=endpoint_mean is the only verified method: the unweighted mean of the two UTC instants bounding each local standard hour, disclosed as a linear approximation. dry_run=true (default) downloads nothing and writes nothing; an execution run writes the raw provider response, the standard CSV and a provenance manifest, refuses to overwrite existing files and never fills, zeroes or interpolates a null hour. Half-hour IANA offsets and standard offsets that change inside the requested year are blocked instead of being rebinned. Native MET conversion and pyranometer quality are outside this scope.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| dry_run | No | ||
| altitude | No | ||
| csv_name | No | ||
| latitude | No | ||
| longitude | No | ||
| site_name | No | ||
| location_id | No | ||
| country_code | No | ||
| timezone_name | No | ||
| temperature_method | No | endpoint_mean |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: dry_run downloads and writes nothing, execution writes raw provider response plus CSV plus provenance manifest, existing files are not overwritten, null hours are never filled or interpolated, and unsafe timezone-offset cases are blocked. It also discloses the temperature method as a linear approximation and the dependence on provider publication status.
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 dense but front-loaded: the core action and subject come first, followed by input-mode rules, year constraints, execution behavior, and exclusions. Every sentence carries operational meaning for an 11-parameter tool and nothing is merely repeated from structured fields.
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 absence of annotations, an output schema, and schema parameter descriptions, the description is largely complete on safety, file outputs, and input constraints. It still omits the meaning of altitude and csv_name and does not state what the tool returns directly for dry-run versus execution beyond describing written files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate across 11 parameters. It explains the location_id versus latitude/longitude alternatives and the required companion fields for explicit coordinates, plus year, dry_run and temperature_method semantics, but it leaves altitude and csv_name unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: planning or executing one Open-Meteo ERA5 year as a PVsyst standard hourly weather CSV. It scopes the tool to Sites & Weather and explicitly points to pvsyst_resolve_location for location_id, making it distinguishable from nearby weather 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?
It clearly defines the two valid input modes, forbids mixing them, gives the valid year range and publication requirement, and states that dry_run is the default. However, it does not explicitly compare itself with other weather-building siblings such as pvsyst_prepare_weather or pvsyst_build_monthly_weather.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_archive_componentA
[Components] Reversibly remove an unreferenced workspace component to .mcp-archive. Requires confirm=true; rejects references from workspace PRJ/VC files.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| filename | Yes | ||
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses that the operation is reversible, that an archive directory is the destination, that confirmation is gated, and that referencing projects cause rejection. It omits what error surface the reference check returns and whether the archive is workspace-scoped or global.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the bracketed category prefix and the safety requirement are front-loaded so the agent reads the constraint before the action.
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?
No annotations and no output schema, yet the description covers reversibility, destination, gating, and failure conditions, which is enough to invoke correctly. The missing component_type vocabulary is the only real gap for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies 'confirm' as a required safety gate and constrains 'filename' to unreferenced components, but 'component_type' has no enum and no explanation of accepted values, leaving one of three parameters semantically thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reversibly remove an unreferenced workspace component to a .mcp-archive location. The component scope is clear, which implicitly separates it from pvsyst_archive_project and pvsyst_restore_archived_component, though it never names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions: the component must be unreferenced by workspace PRJ/VC files, and confirm=true is required. The alternative restore path is not referenced, so an agent must infer which tool undoes this, but the when-to-use conditions are otherwise explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_archive_projectA
[Projects & Variants] Archive up to 128 PRJ/VC members after matching every hash; confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| project | Yes | ||
| expected_files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key safety behavior: hash matching before archiving and mandatory confirmation. It does not explain reversibility, permission requirements, mismatch handling, or what archive actually does to the project state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single dense sentence with no filler. Category, operation, limit, precondition, and confirmation requirement are all front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive project-level operation with no annotations, no output schema, and a nested parameter object, the description covers the core precondition and safety gate. It still leaves gaps around expected_files structure, failure behavior, and post-archive 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 0%, so the description must compensate. It explains that 'expected_files' participates in hash matching and that 'confirm=true' is required, which adds real meaning, but it does not document the nested map format, project identifier expectations, or edge cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and scope: archive up to 128 PRJ/VC members. The '[Projects & Variants]' label and member limit help distinguish it from the sibling pvsyst_archive_variant, though it does not explicitly name that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied precondition ('after matching every hash') and notes 'confirm=true', which helps an agent understand required setup. However, it does not say when to choose this over pvsyst_archive_variant or pvsyst_restore_project_archive, nor does it describe exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_archive_variantB
[Projects & Variants] Archive a VC only if another variant remains, with SHA guard; confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| project | Yes | ||
| variant | Yes | ||
| expected_sha256 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the safety constraints: do not archive the last variant, use a SHA guard, and require confirm=true. However, it omits what archiving does to the variant, whether it is reversible, permission requirements, and response 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 front-loaded sentence with no filler. It is appropriately brief, though the abbreviation 'VC' and compressed phrasing reduce immediate clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, four parameters, and 0% schema coverage, the description is too sparse. It covers the key preconditions but leaves parameter meanings, permissions, reversibility, and return behavior unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the four parameters. It only hints at confirm and expected_sha256 via 'SHA guard' and 'confirm=true', leaving project and variant undocumented and not clarifying the SHA parameter's exact role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (archive) and resource (VC/variant), plus a clear precondition that another variant must remain. The abbreviation 'VC' is slightly less clear than 'variant', but the tool name and condition make 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?
Gives an implied usage condition: archive only when at least one other variant remains, and with confirm=true. It does not explicitly compare against pvsyst_archive_project or pvsyst_restore_variant, nor does it state when not to use this tool beyond the remaining-variant constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_backup_componentC
[Components] Save a byte-identical backup under workspace/ComposPV/.mcp-backups.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the destination directory and that the copy is byte-identical, but says nothing about overwrite behavior for an existing backup, failure modes, permissions, or what is returned on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the '[Components]' grouping tag and the destination path, with no filler. It is terse but nothing is wasted; the gaps are completeness gaps rather than 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?
For a write tool with zero annotations, no output schema, and two fully undocumented parameters, this is under-specified. The agent cannot tell what values to supply for component_type or how the backup relates to the existing archive/restore family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. 'filename' is ambiguous — is it the source file to back up or the destination name? — and 'component_type' gives no hint of its allowed values or how it constrains the lookup. The description adds no parameter meaning to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('save a byte-identical backup') plus the destination path, which is more precise than a bare 'backup'. It is distinguishable from archive/restore siblings by the 'byte-identical' qualifier, though it never explicitly contrasts with pvsyst_archive_component.
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 statement of when to use this versus archive_component, copy_component, or restore_archived_component, and no prerequisites such as the component needing to exist. The agent is left to infer the trigger condition from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_build_monthly_weatherC
[Sites & Weather] Create the 14-row monthly weather CSV for create-site in workspace/Meteo.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| global_h | Yes | ||
| diffuse_h | No | ||
| temperature | Yes | ||
| wind_velocity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only discloses that a file is written at a specific path. It is silent on overwrite behavior, what happens to an existing CSV, whether the directory is created, and units (Wh/m² vs kWh/m², °C). For a write tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the artifact definition leads. The '[Sites & Weather]' category prefix is family boilerplate rather than tool-specific information, which is the only mild waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 undocumented parameters, no annotations, and no output schema, the description should at minimum pin down array length enforcement, units, and optional-field behavior. None of that is present, leaving an agent unable to construct a call correctly without guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and largely does not. It does add one useful semantic hint — '14-row' implies each array argument must supply 14 monthly values — but it never maps parameter names to meaning, states units, or explains the behavior when diffuse_h / wind_velocity are omitted (null defaults).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (create) and a concrete artifact (14-row monthly weather CSV) plus its destination path (workspace/Meteo), so the agent knows exactly what is produced. It also implicitly distinguishes itself from the acquire/convert/inspect weather siblings by being the one that authors the monthly CSV consumed by create-site. It stops short of explicitly naming those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for create-site' implies the downstream consumer, giving an implied usage context, but there is no explicit when-to-use/when-not guidance and no alternatives are named (e.g. pvsyst_convert_meteo, pvsyst_prepare_weather, pvsyst_inspect_weather_csv). The agent must infer this is the manual authoring path when no source weather file exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_build_sfiB
[Simulation] Create a NEW hourly export definition in workspace/Models. variables=grid_storage includes common PV outputs plus native load, SOC, battery/grid flows, EUnused and all three converter losses CL_Chrg, CL_InvB, CL_Over. Include CL_Over when reviewing native grid-storage energy balance; this exports PVsyst values, not a separate storage calculation. variables=soiling adds native GlobSlg/SlgLoss irradiance outputs to common PV outputs; native runs may omit these columns when soiling is disabled. variables=grid_limit adds PGridLim, EGrdLim, EUnused and EOutInv. PGridLim is the native limit, EGrdLim the grid-curtailment loss, not EUnused. EOutInv is not the bounded injection column. Disabled runs may omit limit columns. variables=shading adds GlobShd/ShdElec; native linear-mode runs may omit ShdElec, and a defined detailed layout can legitimately have zero electrical loss.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| variables | No | all_common |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the export returns native PVsyst values rather than a separate storage calculation and that some columns may legitimately be omitted depending on native run configuration. It does not state whether an existing definition is overwritten, what permissions or workspace conditions are required, or what the tool returns on success.
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 purpose is front-loaded in the first sentence, and the variable-specific details are relevant. However, the prose is dense, semicolon-heavy, and structured more like reference notes than a clean tool description; it also spends space on variable details while omitting the required filename parameter.
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?
There is no output schema and no annotations, so the description should be fairly complete. It covers variable semantics well enough to choose an export mode, and it explains native-value caveats, but it leaves the required filename and the creation/overwrite behavior undocumented. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives substantial meaning for the 'variables' choices (grid_storage, soiling, grid_limit, shading) and their caveats, but it never explains the required 'filename' parameter, nor does it mention the default 'all_common'. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a NEW hourly export definition in workspace/Models.' That is clear enough for an agent to know what the tool produces. However, it does not distinguish this tool from nearby siblings such as pvsyst_read_results, pvsyst_read_rows, or export/delivery tools, and the '[Simulation]' tag is ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains which variables to select for particular review scenarios, but it never says when to use this tool rather than alternatives such as pvsyst_read_results, pvsyst_read_rows, or pvsyst_export_engineering_delivery. The conditional guidance is parameter-level detail, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_build_sourced_componentA
[Components] Preview or create a NEW user-defined PAN/OND from a complete exact template and cited values. Reuses the source-text/numeric/unit binding and component editors. PAN accepts PNom (W), ISC/Imp (A), Voc/Vmp (V); OND accepts PNomConv/PMaxOUT (kW), VMppMin/VMPPMax/VAbsMax (V), EfficMax/EfficEuro (%). Width/Height/Depth (m or explicitly converted mm) and Weight (kg) require the verified 8.1.6 commercial form. Unspecified fields, hardware counts and efficiency/IAM/model curves stay inherited, not refitted or scaled. Temperature coefficient units are not guessed. A dry run returns citation provenance, inherited parameters and a diff without writes. Creation requires acknowledge_inherited_model=true, writes a new component and a candidate source record in Results, and never overwrites existing paths. Successful preview/creation remain needs_review, not physical certification. A failed creation removes the source record it wrote and never overwrites existing files, so the same name can be retried. Use a referencing native run to verify behavior; datasheet authenticity, page layout and source/model applicability are not certified here.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| dry_run | No | ||
| sources | Yes | ||
| new_name | Yes | ||
| declarations | Yes | ||
| manufacturer | Yes | ||
| template_name | Yes | ||
| component_type | Yes | ||
| source_library | No | workspace | |
| acknowledge_inherited_model | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses that dry_run performs no writes and returns provenance/inherited params/diff, that creation writes a new component plus a Results source record, that existing paths are never overwritten, that a failed creation rolls back the source record so retries are safe, and that outputs remain needs_review rather than certified. It even scopes what is not certified (datasheet authenticity, layout, model applicability).
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 purpose and safety-critical behavior are front-loaded, and every sentence addresses either scope, parameter semantics, or write safety. It is dense but not padded; minor redundancy like repeating 'never overwrites existing paths' twice keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, nested-object, unannotated mutation tool with no output schema, the description covers behavior well but leaves significant parameter-level gaps: the structure of sources/declarations, what template_name expects, and the meaning of source_library enums are not described anywhere. An agent could not construct nested payloads from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does partially: it explains PAN vs OND field sets with units (PNom W, ISC/Imp A, Voc/Vmp V; PNomConv kW, VMppMin/Max/V, EfficMax/Euro %), dimension/weight units, and the acknowledge_inherited_model requirement. But 10 parameters including nested sources/declarations objects and enums (source_library, component_type) are not fully addressed — template_name, new_name, manufacturer/model, and how source map keys bind to declarations.source_id remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Preview or create a NEW user-defined PAN/OND from a complete exact template and cited values.' This is clearly distinguishable from generic component creation because of the template-plus-citation framing. However, it never names the nearest siblings (e.g. pvsyst_create_component) to make the boundary explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear operating context: dry_run defaults to preview with no writes, and actual creation requires acknowledge_inherited_model=true. It also states the verification path ('Use a referencing native run to verify behavior'). It stops short of explicit when-not-to-use or naming alternative tools such as create_component.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_capabilitiesA
[Setup & License] List commands and option names actually available in the installed CLI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. The phrase 'actually available in the installed CLI' usefully signals that results reflect live installation state rather than documentation, but it says nothing about output shape, whether calling it has side effects, or how to interpret missing commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. The bracketed category prefix costs a few characters but aids grouping in a 77-tool inventory.
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 zero-parameter, no-output-schema introspection tool, the description conveys enough to call it and to know what kind of answer to expect. Slightly more detail on the return format (command names, option identifiers) would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; the empty schema leaves nothing ambiguous. The description correctly implies no input is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (list) plus a clearly bounded resource (commands and option names available in the installed CLI). It is distinguishable from siblings like pvsyst_list_projects or pvsyst_license_info because it is self-introspection rather than an operational or license query, though it doesn't explicitly say so.
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 '[Setup & License]' prefix implies this is a discovery step early in a workflow, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. An agent can infer it should call this before attempting commands it is unsure about, but that is inferred, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_clone_componentB
[Components] Create a new text component from a complete existing template. New Manufacturer and Model are required; only verified scalar fields are editable. Run a simulation with a variant referencing the new component to verify it.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | ||
| new_name | Yes | ||
| source_name | Yes | ||
| component_type | Yes | ||
| source_library | No | workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a real constraint beyond structured data — 'only verified scalar fields are editable' — which tells the agent edits are restricted. It omits whether the source template is mutated, whether a duplicate new_name errors out, which library the clone lands in, and whether the operation is reversible.
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 compact sentences, front-loaded with the action and followed by the key constraint, then the verification step. No filler, though the required-field sentence is slightly ambiguous in its naming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A five-parameter mutating tool with a nested object, no annotations, and no output schema needs more than this. The description never says what is returned (the new component identifier? the cloned field set?) nor explains source_library selection, which is the main behavioral unknown for a clone operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, including a nested 'updates' object, so the description must compensate. It hints at edit scope ('verified scalar fields') and required naming fields, but the terms 'Manufacturer' and 'Model' do not map to any actual parameter name (component_type, source_name, new_name, updates, source_library), and the source_library default of 'workspace' is never explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new text component from a complete existing template'), which makes it distinguishable from pvsyst_update_component and pvsyst_build_sourced_component. However, it never addresses the near-identical sibling pvsyst_copy_component, so an agent must infer the distinction from 'template' alone.
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 clear post-creation verification workflow ('Run a simulation with a variant referencing the new component to verify it'), which is useful implied guidance. But it provides no when-to-use/when-not criteria versus pvsyst_copy_component, pvsyst_create_component, or pvsyst_clone_subarray, leaving the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_clone_projectB
[Projects & Variants] Create a NEW project by copying an existing PRJ and all its VC variants. Embedded site/meteo snapshots and external component references are preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| new_project | Yes | ||
| source_project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It usefully states that embedded site/meteo snapshots and external component references are preserved, which is valuable context for a clone operation, but it omits key mutation behavior such as what happens if new_project already exists, whether source is modified, and any permission or failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by preservation details. Every sentence adds useful information and there is no wasted wording.
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 high-level copy scope and preservation behavior, but for a mutation tool with no annotations, no output schema, and two required parameters with zero schema coverage, it leaves important gaps around identifier formats, overwrite behavior, and result expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the parameter titles are tautological ('Source Project', 'New Project'). The description does not add format guidance, naming requirements, or constraints for either required parameter, so it only weakly implies that source_project is copied into new_project.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb, resource, and scope: create a new project by copying an existing PRJ plus all its VC variants. It implicitly differentiates from pvsyst_create_project and pvsyst_clone_variant by mentioning copying the full project and all variants, but it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the copy semantics: use this when a full project and all its variants should be duplicated. However, the description does not explicitly say when to choose this over pvsyst_create_project or pvsyst_clone_variant, nor does it 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.
pvsyst_clone_subarrayA
[Projects & Variants] Duplicate a grid subarray and all its exclusively owned inverter groups. source_subarray_id requires a strict JSON integer, not a boolean, string or float. By default keep the shared fixed-plane orientation and serialized MPPT layout. Complete exclusive MPPT branches are preserved, not switched to independent mode. Empty shading Flags=$00/$00020000/$00080000 still require geometry/table exclusion. clone_orientation=true appends an independent fixed plane and updates its NoOrientation reference/list count: requires complete grid counts, all strings in one orientation, a flat Flags=$00 non-averaged source, and sequential ordered TOrientGroup IDs. Supports ordinary branches without explicit MPPT, or verified Version=8.1.0/8.1.6 independent $0400 layouts with disabled sharing -1, exclusive direct MPPT children and complete declared input counts. It preserves mode, input/leaf multiplicities and copied loss/model fields; no MPPT pairing, shared parent construction or electrical fitting. Returns orientation_id and orientation_cloned. Independent plane copying rejects circuit-level orientation references instead of retaining stale allocation. Multiple groups require fully checked counts. Shared power, external target-ID references and shading geometry/tables are not supported. Requires the current variant hash; saves a rollback snapshot. share_inverter=true instead copies the one owned MPPT subtree under the same inverter, creating a bounded shared parent with aggregate name and owner 0. Requires Version=8.1.0/8.1.6, independent $0400, explicit disabled sharing -1, complete counts, one inverter/input (multiplicity 1), and all strings in the existing plane. New member keeps disabled sharing and its copied parameters; topology grouping is separate from enabling power sharing and hardware sizing. Do not combine with clone_orientation. Returns shared_parent_created.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes | ||
| share_inverter | No | ||
| expected_sha256 | Yes | ||
| clone_orientation | No | ||
| source_subarray_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so extensively: it states that a rollback snapshot is saved, the variant hash is required, shared power and external references are unsupported, and specific MPPT layouts are preserved or rejected. It also discloses return fields such as orientation_id, orientation_cloned, and shared_parent_created. This is unusually rich behavioral disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a dense wall of technical clauses with no bullets, headings, or paragraph breaks. Most sentences contain necessary constraints, but the lack of structure makes the definition harder to scan than it needs to be. It is adequately sized for a complex operation but not concise in presentation.
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 complex, unannotated mutation tool with six parameters and no output schema, the description covers prerequisites, supported and unsupported cases, snapshot behavior, and return fields. It gives the agent enough information to avoid common invalid invocations, including MPPT layout restrictions and version-specific requirements. The remaining omission of project and variant semantics is minor because those are standard context parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it adds meaningful semantics for source_subarray_id, expected_sha256, clone_orientation, and share_inverter. It warns that source_subarray_id must be a strict JSON integer and ties expected_sha256 to the current variant hash. It does not explain project or variant, though those are likely obvious from context, leaving a minor gap rather than a major one.
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 specific verb and resource: duplicate a grid subarray and its exclusively owned inverter groups. This clearly distinguishes the operation from broader sibling tools such as pvsyst_clone_variant and pvsyst_update_variant_components. The functional scope is immediately understandable despite the dense detail that follows.
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 substantial conditional guidance for the clone_orientation and share_inverter modes, including preconditions and the explicit warning not to combine them. It does not, however, compare this tool to sibling alternatives or state when to choose cloning versus creating or updating subarrays through other tools. Usage context is clear but lacks explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_clone_variantA
[Projects & Variants] Copy a variant as a NEW VC in project. source_project defaults to project; supply another workspace PRJ to import its variant under the target prefix. Embedded site/meteo and external references are preserved, not synchronized with the destination PRJ; inspect_project reports source differences. Optional PAN/OND edits target one SubArrayId; BTR/GEN target pvSystem only. subarray_id requires a strict JSON integer, not a boolean, string or float.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| updates | No | ||
| new_variant | Yes | ||
| subarray_id | No | ||
| source_project | No | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose non-obvious behavior: embedded site/meteo and external references are preserved rather than synchronized, inspect_project reports differences, and optional edits target specific subsystems. It still omits collision behavior, permissions, and what happens if new_variant already 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?
The purpose is front-loaded and every sentence adds some constraint or behavior. The prose is dense with jargon like 'VC' and 'PRJ', but it remains compact for a six-parameter tool with no schema descriptions.
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?
There are no annotations and no output schema, so the description must provide complete context. It covers preservation and edit-target semantics well, but it does not explain return behavior, collision handling, or required preconditions for creating a new variant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds useful meaning for source_project defaulting and subarray_id strict integer typing, and clarifies that updates keys like PAN/OND/BTR/GEN target particular subsystems, but it leaves project, source_variant, and new_variant largely defined only by their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Copy a variant as a NEW VC in project.' It distinguishes this from project-level cloning by emphasizing variant copying and cross-project import, so an agent can separate it from pvsyst_clone_project and pvsyst_clone_subarray.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the source_project default and the cross-workspace import case ('supply another workspace PRJ'), which implies usage context. However, it never names alternatives such as pvsyst_clone_project or pvsyst_create_* variant tools, so the agent must infer when this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_compare_componentsC
[Components] Compare two same-type components: bounded text diff or binary PAN hashes.
| Name | Required | Description | Default |
|---|---|---|---|
| first | Yes | ||
| second | Yes | ||
| component_type | Yes | ||
| second_library | No | workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden, yet it never says whether the operation is read-only, whether it mutates anything, what "bounded" means in practice (size limits, truncation), or what the result looks like. "Binary PAN hashes" hints at an opaque hash comparison rather than a field-level diff, but that is left for the agent to guess.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource and both modes front-loaded; nothing is redundant. It is arguably too terse for the complexity involved, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four undocumented parameters, no annotations, and no output schema, the definition leaves major open questions (parameter meaning, result shape, side effects, limits). The two-mode framing is the only substantive content; for a comparison tool with this many unknowns, more is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and description adds almost nothing: it never explains `first`/`second` (paths? names? IDs?), what values `component_type` accepts, or — most importantly — what `second_library` (default "workspace") means, which implies components can be sourced from different libraries. Only the "same-type" constraint loosely maps to `component_type`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource ("Compare two ... components") and adds the key constraint that both must be the same type, plus the two comparison modes (text diff vs binary PAN hashes). It is distinguishable from siblings like pvsyst_get_component or pvsyst_validate_component, though it never frames itself against them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus pvsyst_get_component, pvsyst_validate_component, or pvsyst_compare_engineering_scenarios (a similarly named sibling). The only implicit guidance is the "same-type" constraint. An agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_compare_engineering_scenariosA
[Engineering] Organize two or three native result scenarios around an explicit engineering question. First scenario is baseline with no declared changes. Each candidate declares its intended changed saved-input groups/paths. Completed engineering run manifests bind historical inputs to CSVs; unbound historical results retain needs_review. Compare only actual native columns with aligned timestamps/units; missing columns stay missing. Returns Chinese explanations and key-hour differences without claiming optimality or a single cause for simultaneous changes. Preview is readonly; execution writes new JSON/CSV/Markdown comparison files under Results without rerunning PVsyst.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| objective | Yes | ||
| scenarios | Yes | ||
| output_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: preview is readonly, execution writes JSON/CSV/Markdown under Results without rerunning PVsyst, unbound historical results retain needs_review, missing columns stay missing, and it explicitly avoids claiming optimality or a single cause. It omits permissions, error behavior, and rate/scale limits, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then constraints, then side effects; nearly every sentence carries distinct information. It is dense and slightly jargon-heavy, but there is little pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with nested objects, no annotations, and no output schema, and the description covers outputs (Chinese explanations, key-hour differences), side effects, and limitations. However the 9-field nested scenario schema is essentially unexplained, so an agent still has gaps before it can populate scenarios correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it only partly does: it explains the semantics of scenarios (2-3, baseline first, declared_changes) and dry_run (preview vs write), and implies objective and output_name. The nested EngineeringScenario fields (year, project, variant, csv_name, assumptions, run_manifest_name, nominal_dc_power_kw) get no explanation at all, leaving half the parameter surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (compare two or three native result scenarios around an engineering question) and scopes the comparison to actual native columns. It is jargon-dense ('native result scenarios', 'engineering run manifests') but an agent can tell this apart from sibling read/simulate tools. It stops short of explicitly naming an alternative sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies structural usage constraints (first scenario is baseline with no declared changes; two or three scenarios; each candidate declares changed input groups) and distinguishes preview vs execution via dry_run semantics. It never states when to prefer this over pvsyst_compare_components or pvsyst_read_results, so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_convert_meteoC
[Sites & Weather] Convert a staged CSV + MEF in Meteo and SIT in Sites to a NEW MET.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_name | Yes | ||
| mef_name | Yes | ||
| met_name | Yes | ||
| sit_name | Yes | ||
| log_level | No | ||
| timeshift | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and it is a single line. 'NEW MET' implies a new file is written rather than an existing one being overwritten, but nothing is said about whether the source CSV/MEF/SIT are consumed or left intact, whether existing MET files are replaced, or what errors occur if a named input is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence preceded by a bracketed domain tag, front-loaded and free of padding. Brevity is achieved partly by omitting information, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a multi-file transformation with no annotations, no output schema, and zero parameter documentation, yet the description is one line. An agent could not reliably tell what the resulting MET contains or how timeshift affects the conversion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all six parameters appear as bare titles. The description only loosely implies the roles of csv_name/mef_name/sit_name/met_name through the sentence; it says nothing about timeshift, which is a meaningful integer offset with default 0, or about log_level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: convert a staged CSV plus MEF (Meteo) and SIT (Sites) into a new MET file. That is concrete enough to distinguish the transformation from pure read tools like inspect_weather_csv. It stops short of naming which siblings to use instead, so 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus pvsyst_prepare_weather, pvsyst_acquire_weather, or pvsyst_build_monthly_weather, all of which sit in the same weather pipeline. The word 'staged' hints at a prerequisite state but the prerequisite is never spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_copy_componentB
[Components] Copy a PAN/OND/BTR/GEN into the workspace without overwrite. Legacy PAN bytes are preserved. Source library is workspace or read-only builtin.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| source_name | Yes | ||
| component_type | Yes | ||
| source_library | No | workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It usefully discloses the non-overwrite guarantee, preservation of legacy PAN bytes, and the two possible source libraries, but says nothing about what happens on a name collision (error vs rename), permission/read-only constraints on the builtin source, or what the operation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scoping constraint, with no filler. The telegraphic style and unexplained acronyms (PAN/OND/BTR/GEN) cost a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the most important behavioral facts (no overwrite, legacy bytes kept, source library options). It still leaves an agent without conflict-handling behavior, return content, or a clear reason to prefer it over clone_component.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all four parameters are undocumented in the schema. The description partially compensates by expanding the component types to PAN/OND/BTR/GEN and by describing source_library's accepted values, but source_name and new_name semantics and any naming rules for new_name remain unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (copy) and resource (component) with scope: into the workspace, no overwrite, legacy PAN bytes preserved. The bracketed [Components] tag helps group it. However, it never distinguishes itself from the sibling pvsyst_clone_component, which reads as a near-synonym in this toolset.
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 'without overwrite' constraint and the note that the source library can be workspace or the read-only builtin imply intended usage and prerequisites, but the agent is left to infer when to use copy_component versus clone_component. No explicit when-to-use, when-not-to-use, or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_ac_cabling_variantA
[Projects & Variants] Preview or create a NEW VC with native uniform per-inverter AC cables. Only recorded8.1.6 PV-only single fixed plane/subarray, complete counts and native main/circuit/system flag families; no MV/HV/load/storage/P50/horizon/active geometry. Source and actual candidate validate all coupled main, subarray and inverter cable owners. Custom resistance, mixed/partial/inconsistent source cables are blocked. length_m is positive, <=100000 and exactly0.1m representable, not rounded; adapter bounds are not measured GUI or engineering limits. Active sources inherit omitted metal/section; inactive sources use the recorded Copper/ISO60228_10 template values. PVsyst computes electrical quantities from native CableType. StringNode DC cables, hardware and every unrequested record remain unchanged; no resistance/loss formula. Getter ac_cabling exposes stored state, represented groups and physical inverter count for read/re-edit. Preview writes nothing; execution exclusively creates one new VC with existing snapshot/path/name/BOM guards. Saving is not native consumption.
| Name | Required | Description | Default |
|---|---|---|---|
| ac | Yes | ||
| dry_run | No | ||
| project | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so substantively: preview writes nothing, execution creates exactly one new VC, custom resistance and mixed source cables are blocked, length rounding is rejected, and active vs inactive source inheritance rules are disclosed. The disclosures are real behavioral context, though the run-on phrasing makes several of them hard to parse reliably.
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?
Content is mostly substantive but presented as one undifferentiated block with run-together tokens ('recorded8.1.6', 'exactly0.1m') and a bracketed tag eating the front-loaded slot. A reader must parse three or four times to extract the same facts that could be stated in clean, ordered 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?
For a 7-parameter mutation-style tool with no annotations and no output schema, the description covers version gating, blockers, and inheritance rules, but leaves the naming contract (new_variant vs variant_name), the shift/replace consequence of writing into an existing path, and what preview versus execution actually return. 'recorded8.1.6' and 'Saving is not native consumption' are opaque without internal context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: length_m constraints (positive, <=100000, exactly 0.1 m representable, not rounded), metal/section inheritance from active vs inactive sources, and the BOM flag are all explained beyond the bare schema. Gaps remain for variant_name vs new_variant and the project/source_variant fields, which are only obliquely referenced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Preview or create a NEW VC with native uniform per-inverter AC cables,' which is enough for an agent to know the outcome. However, 'VC' is unresolved jargon (presumably variant configuration) and the description never explicitly contrasts itself with the obvious sibling pvsyst_create_native_dc_cabling_variant, so sibling routing relies on inference from the tool name.
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 eligibility envelope is spelled out ('PV-only single fixed plane/subarray', no MV/HV/load/storage/P50/horizon/active geometry), which effectively defines when the tool can be used. But it never names an alternative tool or says use X instead of Y, and the one alternative mention ('Getter ac_cabling exposes stored state ... for read/re-edit') is a hint rather than an explicit directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_componentA
[Components] Create a NEW PAN/OND/BTR/GEN from complete UTF-8 PVObject_ text in the workspace without a template. Checks structure, required fields and known hazardous numeric values; only a referencing simulation verifies physics. Legacy binary PAN must be imported with pvsyst_copy_component instead.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| filename | Yes | ||
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses that the tool validates structure, required fields and 'known hazardous numeric values,' and honestly bounds the guarantee ('only a referencing simulation verifies physics'). It does not disclose what happens on filename collision, whether an existing component is overwritten, or what is returned — gaps that matter for a no-annotation mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with a front-loaded category tag and the core action first; the validation caveat and the binary-PAN exception follow logically. No filler or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no annotations and no output schema, so the description is the only documentation for a 3-parameter file-creating mutation, and it omits return value/identifier, filename handling, and failure modes. What it does cover (format, validation scope, alternative route) is solid but not sufficient on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it partially does: it names the accepted component_type values (PAN/OND/BTR/GEN) and specifies that content is full UTF-8 PVObject_ text. However, filename — the third required parameter — is never explained (path basis, extension, overwrite behavior), leaving a required input undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb + resource ('Create a NEW PAN/OND/BTR/GEN') and pins the input format precisely ('complete UTF-8 PVObject_ text in the workspace without a template'). It explicitly separates itself from pvsyst_copy_component for legacy binary PAN, though it does not distinguish itself from the similarly-scoped sibling pvsyst_build_sourced_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete precondition (content must be 'complete' UTF-8 PVObject_ text) and an explicit exclusion with an alternative: 'Legacy binary PAN must be imported with pvsyst_copy_component instead.' It stops short of saying when to prefer this over creating via template/build_sourced_component, so a small inference remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_dome_allocation_variantA
[Projects & Variants] Preview or create a NEW variant that rebalances an existing two-face Dome allocation. Supported subset is the already-allocated native 8.1.6 Dome template: one subarray sharing both faces, NStringCh=40 with NoOrientation=1 and NoOrientation2=2, plus the pinned module/inverter/series/inverter/MPPT declarations and the two paired pvDomeOrient records (main FieldType=Dome at tilt 10 / azimuth 90, back face FieldType=DomeBackfaces at tilt 10 / azimuth -90, NoPairOrient 2/1, IsMainOrient True/False, three averaging switches False, BTNoTrackers=-1,-1, both Version=8.1.6 and Flags=$00). Record Comments are kept verbatim and are never used to detect the face type; unknown, duplicated, missing or wrongly paired records stop. Only NStrOrient1 is written, plus an optional root Comment; no inverter, string, module, subarray or orientation record is created or copied, NoOrientation2 is not changed, and a source without an existing allocation is refused rather than completed. The remaining face-two strings are not written as NStrOrient2 because the native template does not store that field, so NStringCh=40 stays the only string total. first_orientation_strings is adapter-bounded to 1..39; that bound is not a measured native GUI or engineering limit, and the source record is validated against the same domain. Circuit node NElements values are inherited unchanged and their semantics are not inferred; no mismatch, string-current or allocation model is computed here. dry_run=true writes nothing; execution creates one NEW VC only and never edits the source PRJ/VC, weather, topology or hardware, reusing existing store locking, path checks, read-back verification and no-overwrite semantics. variant_name/add_utf8_bom follow the existing display-name and BOM rules. native_consumption_verified stays false: verify native hourly results and reports before treating the allocation as consumed.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes | ||
| first_orientation_strings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so thoroughly: dry_run=true writes nothing, execution creates exactly one NEW VC and never edits the source PRJ/VC, weather, topology or hardware, reusing existing locking, path checks, read-back verification and no-overwrite semantics. It also discloses write scope precisely (only NStrOrient1 plus optional root Comment; NoOrientation2 unchanged; no other record created or copied) and flags that native_consumption_verified stays false.
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 first sentence is well front-loaded, but the remainder is a dense run-on with nested parentheticals enumerating raw template internals (FieldType values, BTNoTrackers=-1,-1, Flags=$00, Version=8.1.6) that read like spec-sheet minutiae rather than decision-relevant guidance. No line breaks, bullets, or grouping, so an agent must parse ~250 words of prose to extract the actionable constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, high-complexity mutation tool with no annotations and no output schema, the coverage is unusually complete: validation rules, write scope, dry-run behavior, and the residual verification caveat are all present. The remaining gap is that three parameters (project, source_variant, new_variant) are never explicitly defined and no return-value shape is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for the non-obvious parameters: first_orientation_strings is bounded to 1..39 (explicitly an adapter bound, not a native limit), dry_run is defined as write-nothing, variant_name/add_utf8_bom are tied to display-name and BOM rules, and the Comment is called optional. project, source_variant and new_variant are only implicitly explained (source is never edited, new VC is created), which keeps this short of a 5.
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?
Opens with a specific verb and resource: 'Preview or create a NEW variant that rebalances an existing two-face Dome allocation.' That is unmistakably distinct from sibling variant creators (tracking, AC cabling, shed geometry, MV night disconnect), so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong preconditions and exclusions: the source must be an already-allocated native 8.1.6 Dome template with one subarray on both faces, and 'a source without an existing allocation is refused rather than completed'; unknown, duplicated, missing or wrongly paired records stop. What it lacks is any explicit pointer to the sibling to use instead when the source is not a Dome allocation (e.g., clone_variant or another variant creator).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_grid_storage_systemA
[Loads & Storage] Preview or create a NEW native AC-coupled storage VC from an existing PV-only Grid design. Require explicit workspace loose BTR, series/parallel counts, twelve monthly battery temperatures, cycle/static initial SOW, complete SOC fractions, charger AC-input/battery inverter AC-output kW limits and percent efficiencies. No hardware or climate defaults are inferred. Bind a prepared v1 hourly load record and both current source/normalized CSVs into an explicit MJ snapshot. Enable root self-consumption bit19 and existing native Grid/battery system bits; retain other flags and PV/component/site/weather/geometry fields. Optional allow_grid_export toggles only system no-injection bit27; omission preserves the source setting. This controls export, not grid charging or DC coupling. Creates only one new VC, never edits the source or replaces files. SelfConsumption and WeakGrid use PVAvailable/Immediate. WeakGrid requires a complete explicit availability CSV declaration matching the prepared load year and standard UTC offset, with at least one outage. Bind native pvUnavail/HourlyVal ratio snapshots; SOCDischSelf preserves reserve with grid available and allows discharge toward SOCDischDecl during outages. It is unused as a backup reserve in SelfConsumption. Backend is pvsyst_native_ac_coupled, not hybrid DC battery-port modelling, a new BMS model or a grid-charge tariff controller. Creation does not simulate or certify sizing; verify native E_User, SOC and energy in the matching year/timezone before treating configuration as consumed. Non-ASCII new load/component paths add a disclosed BOM to the NEW VC only.
| Name | Required | Description | Default |
|---|---|---|---|
| battery | Yes | ||
| dry_run | No | ||
| project | Yes | ||
| storage | Yes | ||
| new_variant | Yes | ||
| availability | No | ||
| source_variant | Yes | ||
| allow_grid_export | No | ||
| load_manifest_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden well: it states no defaults are inferred, describes binding prepared records, enabling flag bits, retaining other flags, creating only one new VC, never editing the source, not simulating, and adding a BOM for non-ASCII paths. It still does not explain dry_run behavior, failure modes, or return values.
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 purpose is front-loaded, but the description is a dense wall of technical jargon with many tightly packed clauses. Much of the content is substantive, yet it could be structured more clearly and would benefit from trimming or bullet-like separation.
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?
This is a complex nine-parameter mutation with no annotations and no output schema, so the description needs to be comprehensive. It provides rich behavioral and nested-field context, but leaves key operational details like dry_run semantics, return behavior, and several top-level parameter meanings under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates for many nested fields by naming series/parallel counts, monthly temperatures, SOW, SOC fractions, power limits, efficiencies, and availability requirements. However, top-level parameters such as project, source_variant, new_variant, dry_run, and load_manifest_name are left mostly implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: preview or create a new native AC-coupled storage VC from an existing PV-only Grid design. It also distinguishes the operation from hybrid DC battery-port modelling and grid-charge tariff control, though it does not explicitly name sibling 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 context is clear: use this for an AC-coupled native storage variant from a PV-only Grid design, with explicit requirements for WeakGrid availability. It includes some exclusions such as not being a hybrid DC model, but it does not name alternative sibling tools or state when to prefer them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_grid_storage_variantA
[Loads & Storage] Preview or create a NEW VC from an existing native AC-coupled Grid storage template. Supported variant declarations are 8.1.0/8.1.6 with one complete flat pvGridStorage, Grid pvSystem, declared active storage/battery bits, an existing BTR reference and positive pack counts. SOC fields are fractions 0..1; require min < max, initial and reserve inside those bounds. PMaxCharge limits the charger's AC input in kW, PMaxDisch the battery inverter's AC output; neither is a hybrid DC-port rating. Explicit max/Euro efficiencies are percent, with Euro <= max. Scalar-only edits also retain the source PeakShaving/PVToGridMin pair with MinMaxHour or AfterSunset unchanged; source and candidate both validate SOC/efficiency/window semantics. Explicit strategy still uses SelfConsumption or WeakGrid with PVAvailable/Immediate. Public getter exposes grid_storage for read/re-edit; absent storage is null. WeakGrid requires a fresh availability declaration: full-year UserData Date;Grid Available / ;ratio CSV, ISO interval-start hours, exact 0/1 values, fixed standard offset and at least one outage. Bind native pvUnavail/HourlyVal GrdUnav Factor/Aver day snapshots, match the load snapshot year and require the root self-consumption flag. reserve_soc is SOCDischSelf: WeakGrid preserves it with grid available and permits discharge toward SOCDischDecl during outages. It is unused as backup in SelfConsumption; never a standalone generator voltage threshold. Preview writes nothing. Execution creates a NEW VC, retains source PRJ/VC, battery filename/counts, PV/load/site/temperature/SOW/topology. Optional allow_grid_export toggles only native system bit27: false prevents grid injection, true allows it subject to existing limits, omitted preserves it. This is not a charge-from-grid switch and not a hybrid DC-port setting. This does not construct hybrid ports, add battery hardware, schedule grid charging, infer efficiencies or certify physical sizing. Verify native SOC and energy flows before treating saved fields as consumed.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| updates | Yes | ||
| new_variant | Yes | ||
| availability | No | ||
| source_variant | Yes | ||
| allow_grid_export | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavior: dry-run writes nothing, execution creates a new variant while retaining source PRJ/VC, battery filename/counts and topology, and allow_grid_export maps only to native bit27. It also explicitly negates likely misreadings ('not a charge-from-grid switch,' 'does not construct hybrid ports'). It omits permission requirements and failure modes, and the dense prose makes the disclosure hard to extract.
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 first sentence is well front-loaded and most sentences carry distinct constraints, but the whole is a ~300-word run-on with redundant negative statements ('not a charge-from-grid switch and not a hybrid DC-port setting. This does not construct hybrid ports...') and no visual structure, which slows an agent trying to extract call requirements.
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 annotations, no output schema, 0% schema coverage and nested objects, the description is unusually complete: validation semantics, strategy constraints, retention behavior, and the getter/null rule are all covered. It still does not describe what this tool's own response contains on preview versus creation, which matters for a 7-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: SOC fractions bounded 0..1 with min<max, PMaxCharge/PMaxDisch defined as AC-side limits rather than hybrid DC ratings, efficiencies as percent with Euro<=max, and full availability-profile semantics (ISO interval-start hours, fixed standard offset, at least one outage). The mapping from prose terms like 'PMaxCharge' to the actual parameter names (max_charge_ac_kw) is left implicit, and some parameters (e.g., dry_run, new_variant) get only indirect treatment.
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 opening sentence states a specific verb and resource: 'Preview or create a NEW VC from an existing native AC-coupled Grid storage template,' which separates it from pvsyst_create_grid_storage_system and pvsyst_clone_variant by scope. It never names those siblings explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys that 'Preview writes nothing' while execution creates a new VC, and it enumerates preconditions for the WeakGrid strategy and for supported 8.1.0/8.1.6 declarations. It does not state when an agent should choose this over create_grid_storage_system or clone_variant, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_house_pv_sceneA
[Projects & Variants] Write a complete AI-authored house/PV scene in one call; prefer house.kind='mesh'. AI supplies all named architectural meshes (vertices in metres, explicit zero-based triangle indices): walls, multiple roof faces, eaves, chimney, window/door geometry, porch and other parts of the same house. The serializer does not reconstruct the house from flat/gable templates, invent dimensions, or require a rectangular footprint. Each name is unique ignoring case; total ceilings are 128 parts, 50000 vertices and 100000 triangles (adapter ceilings, not PVsyst limits). No external assets or code run. For a mesh house use layout.origin_m=[x,y,z] for the PV table's low local corner and layout.roof_mesh for its named planar, upward-facing support surface. That surface's normal must match the source fixed PV plane. Checks cover four corner projections, not full solid topology, holes, panel intersections or architectural certification. Alternatively layout={tables:[{name,...placed-layout fields},...]} defines 1..64 named PV regions on the same source orientation, with independent rows/columns and origins. Their SUM of module_rows*module_columns must equal the source module total. All use the same source PAN. Table names must be unique ignoring case. Coplanar overlapping PV rectangles stop; no automatic packing or physical shading approximation is used. Candidate-only dual-plane authoring accepts exactly two ordinary fixed-plane source subarrays with complete exclusive8.1.0/8.1.6 branches, the same PAN/OND and distinct orientations1/2. Use exactly two named tables with strict orientation_id=1/2, one region per source plane, and each region's count must equal that source subarray. House vertices and every origin_m stay in orientation1's local frame; only each PV node gets its source-relative standard Z rotation. Roof normal/corner checks use that frame. Grouped XY bounding footprints must be disjoint (adapter restriction, not a collision/engineering limit). Writes version2 metadata; native auto-import remains needs_context until per-table identity/geometric verification is bridged. Structured diagnostics locate invalid parts, vertices, triangles or table entries with repair hints. Fix those inputs and preview again; authored geometry is not patched. module_rows/columns, orientation and row/column_spacing_m remain explicit. Legacy house={length_m,width_m,eave_height_m,roof} plus the original margin/clearance layout stays compatible; do not mix its layout with mesh mode. House parts share the source anchor azimuth rotation. The tool only serializes official COLLADA1.5/PVCollada2.0 geometry and PV semantics; native project, variant and PAN bytes are never modified. Except for the explicit dual-plane candidate above, source requirements stay one Grid pvSystem/subarray/ordinary fixed plane; all modes exclude shading scene/module layout, load, storage, P50/P90 or saved horizon, complete grid counts and a northern-hemisphere site record. Module width and height come from a readable loose PAN in metres when available; matching Commercial/root aliases must agree and only XML pv:module uses millimetres. For a built-in database reference without a readable loose PAN, provide module_geometry explicitly; its provenance is caller-provided, awaiting PVsyst's import consistency check. A square module is allowed. geometry_depth_m is explicit geometric metadata, not an inferred vendor specification. All provided metadata must agree with a readable source PAN; no PAN, project or variant is generated or rewritten. Total table modules must equal the source module count (NModSerie x NStringCh), so the scene cannot be drawn smaller than the array. Tilt and azimuth are inherited from the source orientation record and only disclosed in the response, so the caller cannot pick engineering angles. The COLLADA azimuth uses north = 0 clockwise, converted as (180 + FieldAzim) % 360; that mapping is only verified for a northern-hemisphere site, so a non-positive latitude stops. House/table translation uses the same local frame; only vertex, face and transform data are generated. No physical, irradiance, shading or optimizer model is computed. AI-authored parts and legacy roofs use the same serializer. PVC2 support is still beta, so creating a file does not prove that PVsyst imports it as a shading scene or consumes it. dry_run=true writes nothing and creates no directory. Execution writes only UserData/<output_name>.pvc2 with no-overwrite semantics and re-checks both the source variant and PAN bytes. native_consumption_verified and imported stay false.
| Name | Required | Description | Default |
|---|---|---|---|
| house | Yes | ||
| layout | Yes | ||
| dry_run | No | ||
| project | Yes | ||
| variant | Yes | ||
| output_name | Yes | ||
| module_geometry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses extensive behavior: execution writes only UserData/<output_name>.pvc2 with no-overwrite semantics, dry_run=true writes nothing, source variant and PAN bytes are re-checked, native project/variant/PAN bytes are never modified, and native_consumption_verified/imported stay false. It also documents ceilings, validation limits, and beta caveats, making the write operation's scope and side effects unusually clear.
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 an extremely long, dense paragraph with many interleaved constraints, repeated ideas, and no bulleted structure. Although the purpose is front-loaded, the volume and lack of organization make it hard to scan and retain.
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, absence of annotations, and lack of an output schema, the description is quite complete: it covers source prerequisites, mesh versus table modes, dual-plane restrictions, write behavior, and validation limits. It does not fully describe the response shape beyond mentioning structured diagnostics and disclosed tilt/azimuth, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0%, so the description must compensate. It explains house.kind='mesh' versus legacy house, layout.origin_m and layout.roof_mesh, named tables with orientation_id, module_geometry fallback, and dry_run semantics, adding substantial meaning beyond the schema; project, variant, and output_name remain self-explanatory but are not explicitly described.
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 specific verb and resource: "Write a complete AI-authored house/PV scene in one call," and immediately recommends house.kind='mesh'. It distinguishes mesh authoring from legacy template authoring and hints at import status, though it does not explicitly name sibling tools like pvsyst_import_house_pv_scene.
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 mode-selection guidance (prefer mesh, use layout.origin_m and layout.roof_mesh for mesh houses, alternatively layout={tables...}, and "do not mix" legacy layout with mesh mode). However, it never says when to use this tool versus the many sibling tools, so an agent must infer tool routing from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_load_variantA
[Loads & Storage] Preview or create a NEW variant with an explicit embedded hourly load snapshot. Bind one prepared v1 load manifest in Results to current raw UserData CSV and normalized UserHourlyParams CSV; check full year/time basis/units and paired powers, never open a historical absolute path from the record. Replace the owning pvLoad with Energy/MJ signed-base62 DDMM hours, including leap day; return encoding precision. No annual renormalization, filling or DST shift. The source VC, PRJ, CSVs and other system/strategy/site/topology fields remain unchanged. A later CSV edit requires a new binding; reading-progress logs do not prove native consumption. This sets loads, not battery dispatch or hybrid ports. dry_run=true writes nothing; execution creates a new VC only, never overwrites. Verify E_User in a native run of matching year/timezone before treating configuration as consumed. Legacy binary/ambiguous VCs stop; non-ASCII load paths add a disclosed UTF-8 BOM to the NEW VC.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| new_variant | Yes | ||
| source_variant | Yes | ||
| load_manifest_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: dry_run writes nothing, execution only creates a new VC (never overwrites), source VC/PRJ/CSVs untouched, no renormalization/filling/DST shift, leap-day handling, base62 DDMM encoding with returned precision, BOM disclosure for non-ASCII paths, and hard stops on legacy/ambiguous VCs. This is unusually rich disclosure of side effects and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is a dense run-on packing multiple distinct constraints per sentence, plus some lower-value assertions ("reading-progress logs do not prove native consumption"). No structure or grouping to help an agent scan for the rules that matter.
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 complex mutation tool with no annotations and no output schema, the description covers side effects, failure modes, and even a partial return detail (encoding precision). The main gap is per-parameter semantics and any statement of the returned VC/variant shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and no property has a description, so the description must compensate for all five parameters. It explains dry_run and gives meaningful context for load_manifest_name (a prepared manifest in Results, not an absolute path), but says nothing about project, source_variant, or new_variant — three of four required params remain undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: preview/create a NEW variant with an explicit embedded hourly load snapshot, and explicitly scopes it against alternatives ("This sets loads, not battery dispatch or hybrid ports"). It doesn't name the nearest siblings (pvsyst_create_native_load_variant, pvsyst_prepare_load_profile), but the operation is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for when to call it (bind a prepared v1 load manifest in Results to current CSVs) and when not to (don't treat config as consumed until E_User is verified in a native run; a later CSV edit needs a new binding). Lacks explicit routing to a named alternative tool for the overlapping load-variant use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_mv_night_disconnect_variantA
[Projects & Variants] Preview or exclusively create a NEW VC changing a recorded MV night switch. Source and candidate both require native8.1.6 PV-only single fixed plane/subarray, valid circuit counts and the recorded single-MV20kV profile. Native field ownership, MVNbTransfos=1 and NightDisconnect/main-array bit29 consistency are checked first. Only that bool and dependent bit change (plus optional name/BOM). Reference power, iron/copper losses, AC/DC cables and all unrelated inputs remain inherited; no transformer formula or loss conversion. HV/multiple transformers, custom loss tables, loads/storage/P50/horizon/active geometry and unknown flag families are blocked. Configuration never claims native consumption; verify separate native outputs. Preview writes nothing; execution retains source/snapshot/no-overwrite protections.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes | ||
| night_disconnect | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: preview writes nothing, execution retains source/snapshot/no-overwrite protections, only the night-disconnect bool and dependent bit change, and all unrelated inputs are inherited. It also discloses blocked cases and clarifies that configuration never claims native consumption.
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 dense but front-loads the core purpose and then layers constraints and safety behavior. Given the complexity, most sentences carry necessary technical information, though the jargon-heavy phrasing and run-on constraint list reduce readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with no annotations and no output schema, the description is quite complete on preconditions, blocked configurations, inheritance behavior, and preview/write protections. It stops short of explaining what a successful execution or preview returns, which is a remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful hints for key parameters, such as night_disconnect, source/candidate variants, preview/dry-run behavior, and optional name/BOM, but it does not explicitly define all seven parameters or their accepted values, leaving interpretation partly to the schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: creating a new VC that changes the recorded MV night switch. It clearly distinguishes this specialized variant from other create-variant siblings through the MV night-disconnect scope and the preview/exclusive-create behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives substantial usage context: native8.1.6, PV-only single fixed plane/subarray, valid circuit counts, and the recorded single-MV20kV profile are required. It also lists blocked configurations such as HV/multiple transformers, custom loss tables, loads/storage/P50/horizon/active geometry, but it does not name alternative tools or explicitly compare when to use them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_native_dc_cabling_variantA
[Projects & Variants] Set native DC resistance(mOhm) or STC loss(%) through the ALREADY OPEN GUI. Chinese PVsyst8.1.6rev49278/DPI96 and recorded window metrics only; one ordinary fixed-plane/subarray PV-only Grid, complete counts, no AC/MV/HV/load/storage/ geometry/horizon/P50. Both native DC mode flag families are explicit source gates; all other editors retain their existing domains. value is finite, nonnegative, exact0.01 precision, <=20 characters; percent<=100. These are adapter constraints, not manufacturer limits. PVsyst computes the coupled subarray and StringNode values. dry_run only reads source/GUI state and does NOT activate/select/type/click. Actual input requires dry_run=false AND confirm=true; leave the desktop alone. The operator must have the matching project open and DataPath equal to the MCP workspace. No application start/exit, INI edit, clipboard, external DC formula or private VC patch. Native SaveAs chooses the new VC id; variant_name is its display title. Saved candidate owners/precision and all non-DC physical records are verified, sources preserved; BOM/display comments may normalize. Failure can leave a new file/current modal for inspection, and its path is disclosed. Saving is NOT simulation consumption proof.
| Name | Required | Description | Default |
|---|---|---|---|
| dc | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| project | Yes | ||
| variant_name | Yes | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses many behavioral traits: dry_run reads state without activating/typing, failure can leave a new file/current modal with path disclosed, saving is not simulation consumption proof, native SaveAs chooses the new VC id, variant_name is a display title, and BOM/display comments may normalize. It also lists prohibited actions (no application start/exit, INI edit, clipboard, external DC formula, private VC patch).
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 content is dense and front-loaded with the core action, but it reads as a single wall of text with non-standard abbreviations and nested clauses. While many sentences earn their place by conveying constraints, the lack of structure (bullet points, separate paragraphs) makes parsing harder than necessary.
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 (6 parameters, no output schema, no annotations, 0% schema coverage), the description is remarkably complete. It covers prerequisites, mode semantics, failure modes, file handling, prohibited operations, and scope exclusions. Nothing an agent needs to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines value constraints for dc.value (finite, nonnegative, exact 0.01 precision, <=20 characters; percent<=100) and clarifies that variant_name is a display title while 'Native SaveAs chooses the new VC id'. It also explains dry_run and confirm behavior. However, the 'project' and 'source_variant' parameters are only indirectly addressed through the alignment requirement, leaving slight ambiguity.
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 opening sentence states a specific verb and resource: 'Set native DC resistance(mOhm) or STC loss(%)'. It distinguishes itself from sibling variant-creation tools by listing what it does not handle (AC/MV/HV/load/storage/geometry/horizon/P50), which effectively scopes its domain. However, the dense parenthetical constraints and jargon slightly obscure the core action.
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 preconditions ('operator must have the matching project open and DataPath equal to the MCP workspace'), mode selection ('dry_run only reads... Actual input requires dry_run=false AND confirm=true'), and exclusions ('No application start/exit, INI edit, clipboard...'). It clearly tells the agent when to use dry-run versus actual input and what not to do.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_native_load_variantA
[Loads & Storage] Preview or create a NEW variant with one native flat load block (constant, monthly or daily). Supported subset is a native 8.1.6 PV-only single-subarray Grid variant with exactly one ordinary fixed plane, free horizon, no shading scene or module layout, no P50/P90, and a pvSystem declaring only Flags=$06000000 and SystemType=Grid; main array Flags=$01900400/Flags2=$082A and subarray Flags=$019E1002 stay unchanged. mode is the explicit discriminator: constant{constant_kw} writes ConstantLoad with Energy Units=kW; monthly{monthly_energy_kwh} writes the declared twelve kWh values as ValMonth plus the observed three trailing 0.000 slots; daily{daily_power_kw} writes 24 hourly powers and a trailing slot equal to their sum, which reproduces the observed native layout only and is not a load or dispatch model. Numbers must be strict finite nonnegative 0.001-step values; constant_kw must be positive and profiles need at least one positive entry. The 1e6 cap is an adapter bound, not a native or engineering limit. Booleans, strings, empty or wrongly sized arrays, NaN/Inf and unknown fields are rejected, never silently dropped. Only root pvVCalcul bit19, the directly owned pvLoad block and an optional root Comment are written; root Flags must already be 0 or 0x80000 and agree with the presence of an existing pvLoad. An existing constant/monthly/daily block is replaced in place before the unique SimulPlots=Start anchor; the owning pvLoad Comment is normalized to a fixed MCP label inside this declared subset. HourlyFile, Probability, HouseHold, nested, duplicated-owner or unknown-field blocks stop. dry_run=true writes nothing. Execution creates one NEW VC and never edits the source PRJ/VC, inputs, weather, topology or other loads; existing store locking, path checks, read-back verification and no-overwrite semantics apply. add_utf8_bom follows the existing explicit marker habit: false keeps the source marker and a non-ASCII variant_name then needs an existing BOM, true writes a UTF-8 BOM to the NEW VC and is also accepted without a name; bom_added reports it. native_consumption_verified stays false: verify native E_User and the PDF for the matching year/timezone before treating a saved block as consumed.
| Name | Required | Description | Default |
|---|---|---|---|
| load | Yes | ||
| dry_run | No | ||
| project | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses exactly what is written (bit19, pvLoad, optional Comment), what gets replaced in place, locking/path/read-back/no-overwrite semantics, and the honest caveat that native_consumption_verified stays false pending manual E_User/PDF verification.
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?
Purpose is front-loaded, but the body is a dense wall of run-on clauses that is hard to scan. Most sentences carry real information, yet the volume and lack of paragraph breaks make it heavier than necessary for the 7-parameter surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers modes, validation, side effects, failure modes, BOM handling and verification caveats comprehensively. Nothing an agent needs to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: it explains mode as the discriminator, constant_kw units and positive constraint, monthly twelve-kWh semantics, daily 24 hourly powers plus trailing sum slot, dry_run, add_utf8_bom interaction with variant_name, and strict numeric validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (preview or create) and resource (a NEW variant with one native flat load block) and enumerates the three modes and the exact supported structural subset. An agent can distinguish it from generic load-profile siblings by the 'native flat block' / constant|monthly|daily framing.
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?
Clearly indicates dry_run=true writes nothing and execution creates a NEW VC without touching the source, and names failure conditions (HourlyFile, Probability, HouseHold, duplicated-owner blocks stop). It does not explicitly compare against pvsyst_create_load_variant or pvsyst_prepare_load_profile, leaving some sibling routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_peak_shaving_variantA
[Loads & Storage] Preview or create a NEW variant that switches the native PeakShaving discharge strategy. Supported subset is the already-active native 8.1.6 PeakShaving profile: root Flags=$00080000 with no pvLoad, pvSystem Flags=$17000040/Grid plus the pinned battery hardware and temperature profile, and one directly owned pvGridStorage record holding Strategy=PeakShaving and ChargingStrategy=PVToGridMin. Stored SOC, AC power limits and efficiencies use the shared storage semantic validator, so valid scalar edits remain editable here instead of requiring the original sample's numeric constants. Pinned hardware/system limits remain unchanged; no sizing or dispatch model is offered. mode is the explicit discriminator: after_sunset writes DischStrategy=AfterSunset and drops HourBegDisch/HourEndDisch; hour_window writes DischStrategy=MinMaxHour and exactly two bare-integer hour endpoints that differ. Hour values are adapter-bounded to 0..23 and are not measured native GUI limits; the source record is checked against the same domain, so a saved NaN, fractional or unknown value stops instead of being overwritten. Only those three fields change: strategy, charging strategy, SOC, power limits, efficiencies, grid limit, root/system flags, battery hardware, geometry, loads and the orientation records stay at their verified values, and every other owning field set is compared exactly so unknown, nested or duplicated fields stop. A source with a load, P50/P90, saved horizon, explicit 3D scene or module layout is blocked. dry_run=true writes nothing; execution creates one NEW VC only and never edits the source PRJ/VC or its inputs, reusing existing store locking, path checks, read-back verification and no-overwrite semantics. variant_name/add_utf8_bom follow the existing display-name and BOM rules. native_consumption_verified stays false: hours are native hour slots only, endpoint inclusivity is not inferred, AfterSunset does not mean discharging solely in hours without irradiance, and creating this variant does not prove that this run consumes it. This tool never changes the grid power limitation or power factor; the pinned PLimGrid/PGridLim 200 belongs to this native profile only, and the profile's grid power limitation is apparent power in the native report, not an active-power edit.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| discharge | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so extensively: dry_run writes nothing, execution creates exactly one NEW VC and never edits the source PRJ/VC, store locking/path checks/read-back verification/no-overwrite semantics are reused, and unsupported sources stop rather than being overwritten. It also explicitly discloses many non-goals, including that it does not change grid power limitation or power factor and does not prove consumption of the created variant.
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 purpose is front-loaded, but the description is extremely dense and runs to several hundred words in long paragraphs, mixing actionable rules with deep native-profile details such as root Flags values and exact strategy strings. Much of this may be necessary safety context, but the lack of structure and the volume make it hard to scan for an agent that mainly needs the mode discriminator, dry-run behavior, and parameter meanings.
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 complex mutation tool with no annotations and no output schema, the description is rich on safety, eligibility, and non-goals, but it omits what the preview or creation returns and does not fully define all seven inputs. It is more complete than average, yet still leaves gaps that matter to correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for seven parameters. It gives useful semantics for discharge.mode, after_sunset vs hour_window, start_hour/end_hour bounds (0..23), and dry_run, but project, source_variant, new_variant, and add_utf8_bom are only implied or discussed vaguely as 'existing display-name and BOM rules'. It partially compensates but leaves several required string parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: preview or create a NEW variant that switches the native PeakShaving discharge strategy. It clearly identifies the niche (PeakShaving discharge strategy variant), which effectively distinguishes it from generic variant-creation or update tools in the sibling list, though it does not explicitly name an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the supported subset and blocking conditions (e.g. no load, P50/P90, saved horizon, explicit 3D scene, or module layout), which implies when the tool is applicable. However, it never says when to use this tool instead of alternatives such as pvsyst_update_variant_parameters or pvsyst_create_grid_storage_variant, leaving the choice mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_projectA
[Projects & Variants] Create a NEW PRJ/VC set from complete UTF-8 text without an existing project. variants maps VC identifiers to their full text; 1..127 variants. Preserves supplied BOM/newlines and references, rejects existing same-prefix members and duplicate normalized IDs; handled write errors remove only created files. Checks envelopes and subarray sections, not full schema or physical validity. Site/meteo/components remain external; inspect, validate and simulate the new project. No invented blank design/defaults. Returns the member hash map.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variants | Yes | ||
| project_content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does: content-preservation guarantees (BOM/newlines/references), rejection rules (existing same-prefix members, duplicate normalized IDs), partial-failure semantics ('handled write errors remove only created files'), and validation scope limits ('checks envelopes and subarray sections, not full schema or physical validity'). This is exactly the mutation-risk disclosure an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints and guarantees in descending priority. Dense and largely waste-free, though a few clauses are telegraphic ('Site/meteo/components remain external') and would read better split out.
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?
No output schema exists, and the description usefully closes that gap with 'Returns the member hash map.' It also bounds scope and names next steps. Minor gaps remain: the meaning of the 'project' argument and where the created files land are not stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does well for two of three: 'variants maps VC identifiers to their full text; 1..127 variants' and project_content as complete UTF-8 text. The 'project' parameter is only obliquely characterized through 'same-prefix,' leaving its role (name/prefix) partly inferential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a NEW PRJ/VC set from complete UTF-8 text without an existing project.' The precondition ('without an existing project') plus the bracketed domain tag distinguishes it from pvsyst_open_native_project, pvsyst_clone_project, and pvsyst_prepare_design_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear applicability condition (no existing project; caller supplies full text) and names the follow-up path: 'inspect, validate and simulate the new project.' It does not explicitly name a sibling alternative for the contrasting case (e.g., clone/open when a project already exists), so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_shed_geometry_variantA
[Projects & Variants] Preview or exclusively create a NEW native Sheds/SunShields variant. Use an existing recorded type with one orientation/subarray and complete grid counts, native8.1.6 root/system/main/subarray flags, no load/storage/P50/horizon or active geometry/layout. Shared tracking-template scope gates apply; no type conversion. Declare one or more type-owned geometry fields. Angles use0.1 degrees (tilt0..90, azimuth-180..180); lengths/factor use0.001. Pitch/collector/cell width must be positive, inactive bands nonnegative and their sum below collector width, factor0..1; counts strict positive32-bit and booleans strict. These are adapter domains, not measured GUI or manufacturer limits. Source and candidate share exact validation, with no rounding of unsupported precision or invention of unknown native fields. Preserve all unrequested data, hardware, topology and source bytes; getter exposes stored fields for create/read/create closure. Native alone computes shading and electrical grouping. Saving never sets native_consumption_verified to true. Preview creates nothing. Optional name/BOM rules and snapshot/no-overwrite guards are inherited; failures disclose partial artifacts without automatic cleanup.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| geometry | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real behavioral context: preview creates nothing, saving never sets native_consumption_verified to true, unrequested data/hardware/topology are preserved, native alone computes shading and electrical grouping, and failures disclose partial artifacts without automatic cleanup. Gaps remain on permissions/auth requirements and on what a successful call returns, which matters since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, and almost every clause carries information, so there is little filler. But the delivery is a dense semicolon chain of run-on technical fragments that is hard to scan and forces repeated re-parsing to extract the validation rules.
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 complex, guarded mutation tool with no annotations and no output schema, the description covers creation semantics, validation domains, inheritance/preservation rules, snapshot and no-overwrite guards, and partial-failure behavior. Missing pieces are the authorization preconditions and the shape of a successful response (it only hints that a getter exposes stored fields for create/read/create closure).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it gives domains for angles (0..90 tilt, -180..180 azimuth), lengths/factor scaling, positivity rules for pitch/collector/cell width, inactive-band nonnegativity and sum-below-collector-width, 0..1 factor, and strict positive 32-bit counts and booleans. It also touches the top-level params ('Preview', 'Optional name/BOM rules'), but it does not map units field-by-field and the phrase 'Angles use 0.1 degrees' is ambiguous as to whether it means unit scale or precision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource up front: 'Preview or exclusively create a NEW native Sheds/SunShields variant,' which separates it from the tracking, dome-allocation, and clone siblings by resource type. It adds scope detail (one orientation/subarray, complete grid counts, no type conversion) but never names an alternative sibling, leaving the disambiguation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Preconditions are stated densely ('Use an existing recorded type with one orientation/subarray and complete grid counts... no load/storage/P50/horizon or active geometry/layout'), which implies when the tool is applicable. However, there is no explicit routing guidance such as when to prefer pvsyst_create_tracking_variant, pvsyst_clone_variant, or pvsyst_update_variant_components, and no stated when-not-to-use condition beyond the constraint list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_siteB
[Sites & Weather] Use CLI create-site to create a NEW SIT in workspace/Sites (8.1+). Stage or generate monthly weather CSV in workspace/Meteo. If altitude, timezone or country are omitted, the CLI may query an external service.
| Name | Required | Description | Default |
|---|---|---|---|
| albedo | No | ||
| region | No | ||
| source | No | ||
| altitude | No | ||
| latitude | Yes | ||
| sit_name | Yes | ||
| timezone | No | ||
| log_level | No | ||
| longitude | Yes | ||
| site_name | Yes | ||
| country_code | No | ||
| weather_csv_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does partially deliver: it discloses required PVsyst version (8.1+), the two filesystem locations written to, and the external-service network lookup that may occur. It omits overwrite/collision behavior for an existing .sit, permission or license prerequisites, and whether the operation is reversible — significant gaps for a file-creating 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?
Three short sentences, front-loaded with the action and the artifact path, and the conditional network behavior is placed last where it belongs. The bracketed category tag and 'CLI create-site' phrasing add minor noise but no real bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, 5-required mutation with no annotations, no output schema, and zero schema descriptions, the definition covers the environment and side effects but leaves the argument contract essentially undocumented. An agent cannot reliably populate weather_csv_name, sit_name vs site_name, or the optional locale fields from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, so the description must compensate and largely doesn't. It explains only the omission behavior of altitude, timezone and country; it says nothing about albedo, region, source, log_level, weather_csv_name format, or the critical and confusing distinction between the required site_name and sit_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a NEW SIT via CLI create-site) and names the exact output location (workspace/Sites, PVsyst 8.1+), plus the side effect of staging a weather CSV in workspace/Meteo. It's clear what the tool does, but it never distinguishes itself from the weather/data siblings such as pvsyst_acquire_weather or pvsyst_build_monthly_weather that also populate workspace/Meteo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (create a site when it does not yet exist) and one useful conditional is given: omitting altitude/timezone/country triggers a possible external lookup. However, there is no explicit guidance on when to prefer this over resolving a location or acquiring weather first, nor any warning about creating a site that already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_create_tracking_variantA
[Projects & Variants] Preview or create a NEW variant editing the source native tracking record only. Supported 8.1.6 FieldTypes are UnlimTracking, TrackHorizNSAxis, TrackTiltedAxis, TrackVertAxis, TrackSunShield, TrackHorizAxis, TrackTwoAxis, TrackFrameNS and TrackFrameEW. No conversion: each source must already have its exact recorded field shape, one counted orientation1, one PV-only Grid subarray and complete consistent circuit counts. Root/system/main/subarray flags and geometry/layout/load/storage/P50/horizon gates remain in force. Only controls that belong to that FieldType are accepted. Supply one or more controls; unspecified values stay inherited. Existing five-control Unlim calls remain valid. All present min/max pairs use source values for the side not changed, and both source and candidate must keep their order. AxisAzim/MinPhi/MaxPhi retain adapter domains -20..20/-60..-45/45..60. Other numeric controls have finite 0.1 adapter precision, not measured GUI bounds. Lengths are meters, angles degrees and WindStowSpeed is meters/second. Booleans are strict. electrical_effect is writable only in an existing UnlimTracking record owning that field. Unlim geometry, BTNoTrackers, averaging and every other unrequested field stay inherited; no tracking, backtracking, irradiance or shading model is computed. Default preview creates nothing; execution exclusively creates one NEW VC, preserves the source, and reuses lock/path/snapshot/candidate readback. Optional variant_name and add_utf8_bom follow existing display-name rules. Public getter exposes the stored controls for read/edit closure. Native consumption is never inferred from saving: native_consumption_verified stays false until a separate native run is reviewed.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| tracking | Yes | ||
| new_variant | Yes | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: preview creates nothing, execution creates exactly one new VC, the source is preserved, lock/path/snapshot/readback behavior is reused, and native_consumption_verified remains false until a separate native run is reviewed. It also discloses that no tracking, backtracking, irradiance, or shading model is computed and explains inherited versus explicitly set 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 purpose is front-loaded, but the description is a dense wall of domain-specific constraints with many clauses packed into long sentences. Most content is useful, but readability and conciseness suffer; it would benefit from tighter grouping or bullets.
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 complex mutation tool with no annotations and no output schema, the description covers prerequisites, side effects, preview behavior, inheritance rules, units, domains, verification caveats, and readback behavior. It is nearly complete, though it does not describe error behavior or a concrete return/response shape beyond mentioning readback and a public getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it adds substantial meaning: control units are meters, degrees, and m/s; booleans are strict; min/max pairs preserve source values on the unchanged side; AxisAzim/MinPhi/MaxPhi retain adapter domains; and other numerics have 0.1 adapter precision. It does not individually document every nested TrackingControls field or fully specify variant_name/add_utf8_bom behavior beyond referencing existing display-name rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: preview or create a NEW variant editing only the source native tracking record. It clearly distinguishes this specialized tracking-variant operation from broader variant tools such as pvsyst_update_variant_parameters and pvsyst_clone_variant.
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 strong preconditions: the source must already have a supported native tracking FieldType, exact recorded field shape, one counted orientation1, one PV-only Grid subarray, and complete circuit counts. It also says controls must belong to that FieldType and unspecified values remain inherited. It does not explicitly name alternative tools to use when those conditions fail, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_export_engineering_deliveryA
[Engineering] Package a completed engineering run as a NEW local Results ZIP. Reads one workspace run manifest and checks its input/output binding. Includes the selected native PRJ/VC, original CSV/PDF, Chinese summary and input handoff. Optional house runs additionally include their genuine task manifest, authored PVC2 and SFI. comparison_name includes its bound scenarios and Chinese comparison report. Commercial component/weather files remain external dependencies. Export does not certify the design or upgrade a review status. Preview writes nothing; existing ZIPs stop.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| output_name | Yes | ||
| manifest_name | Yes | ||
| comparison_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly meets it: it discloses that a NEW ZIP is created, what is bundled versus left as external dependencies, that no certification or review-status change occurs, and that existing ZIPs block the operation rather than being overwritten. It omits where the ZIP lands and what permission or environment constraints apply.
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?
Content is front-loaded with the core action in the first sentence and every clause carries information about ZIP contents or constraints. The middle sentences are long and list-like, but there is little pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-producing mutation tool with no annotations, no output schema, and 0% parameter coverage, the description covers contents and non-overwrite behavior well but leaves the caller without the returned artifact path or the exact semantics of output_name. An agent would still have to guess part of the call contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It effectively explains manifest_name (one workspace run manifest), comparison_name (bound scenarios plus Chinese comparison report), and dry_run ('Preview writes nothing'), but output_name is never explained (naming rules, overwrite behavior of the new name) and no default or format guidance is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: package a completed engineering run as a new local Results ZIP, and enumerates what the ZIP contains. It distinguishes itself from review-type siblings by stating 'Export does not certify the design or upgrade a review status', but it never names the closest alternatives (pvsyst_project_handoff, pvsyst_review_engineering_brief, pvsyst_export_logs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the input must be a 'completed' run manifest with a valid input/output binding. The 'Preview writes nothing; existing ZIPs stop' clause hints at a preview-then-commit workflow, but there is no explicit when-to-use or when-not-to-use guidance versus the other export/handoff tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_export_logsA
[Setup & License] Export CLI diagnostic logs to a ZIP under workspace/Results. The archive may contain private data; only its path is returned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: it discloses that a ZIP file is written to a specific directory, warns the archive may contain private data, and clarifies that only the path is returned rather than the contents. It does not mention permissions or whether an existing archive is overwritten, keeping it just below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first covers action and destination, the second covers the privacy caveat and return shape. Front-loaded with the action and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, non-destructive export with no output schema, the description covers destination, artifact type, privacy risk, and return value. Only the overwrite/conflict behavior and any size or permission constraints are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing further for the description to disambiguate beyond noting the fixed output location, which it does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (export) and resource (CLI diagnostic logs) plus the exact output artifact and destination (ZIP under workspace/Results). No sibling tool exports logs, so the agent can identify it immediately from name plus description.
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 '[Setup & License]' tag implies a diagnostic/troubleshooting context, but the description never says when to reach for this versus other setup tools like pvsyst_capabilities or pvsyst_license_info. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_get_componentC
[Components] Read paged UTF-8 text, scalar allowlist, SHA and OND/BTR curve paths/ active points, plus commercial field types/units and remarks. Curves report mode or CLI tag recognition, supported edits and their preconditions; static inspection does not verify simulation behavior. include_curve_csv adds a path-to-CSV-text map for OND main/BTR capacity curves with explicit-unit headers, plus curve_csv_errors for omissions. CSV export does not expand edit support. PAN scalar_aliases lists supported ISC/Isc and MuISC/muISC spellings. PAN/OND electrical exposes owning-object reference-point values/units and missing/ambiguous/invalid declarations; serialized temperature coefficients and per-MPPT limits remain unverified. IDCMax=0 is not a positive declared ceiling. Legacy PAN is metadata only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| library | No | workspace | |
| filename | Yes | ||
| component_type | Yes | ||
| include_curve_csv | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden itself and does a substantial job: it discloses paging, returned data categories, curve CSV behavior, error reporting for omissions, and several important caveats about unverified coefficients, per-MPPT limits, and IDCMax=0. It does not discuss permissions or side effects, but the read-oriented framing and data caveats are unusually detailed.
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 dense, jargon-heavy block with eight sentence-like clauses and poor front-loading. Some details are useful, but the lack of structure makes it hard to scan and the opening does not orient the agent before diving into specialized return semantics.
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?
There is no output schema and no annotations, and while the description explains many return-side caveats, it omits essential caller information such as accepted component_type values, filename conventions, and why to use this tool rather than list_components or validate_component. The result is incomplete for a six-parameter tool with 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for six parameters, so the description needs to compensate, but it only explains include_curve_csv and vaguely implies paging. It never clarifies component_type allowed values, filename expectations, library semantics, or offset/limit behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description makes clear that this tool reads component-file internals, including text, allowlists, SHA, curve paths, field units, and remarks. The verb-and-resource combination is specific enough to separate it from a generic list or simulation tool, though it does not explicitly contrast itself with siblings like pvsyst_list_components, pvsyst_validate_component, or pvsyst_compare_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives caveats such as 'static inspection does not verify simulation behavior' and 'CSV export does not expand edit support,' but these are limitations rather than when-to-use guidance. It never says when an agent should choose this over list_components, validate_component, compare_components, or project_components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_get_variant_componentsB
[Projects & Variants] Read component references in a variant and its current SHA-256 for guarded edits.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden; it does disclose the read nature and that the payload includes a SHA-256 for optimistic concurrency, which is genuinely useful. It omits failure behavior (e.g., what happens if the variant is missing or the hash is stale) and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a category tag and no filler; the purpose lands immediately. Slightly terse given the schema gaps, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read with no output schema and no annotations, the description covers what is returned at a high level (component refs plus hash) but leaves parameter semantics and error behavior unaddressed. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description says nothing about the two parameters. 'project' and 'variant' are self-explanatory identifiers, but there is no indication of accepted formats, whether names or IDs are expected, or whether project must already be open.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (component references in a variant) plus a concrete return element (current SHA-256). This is distinguishable from pvsyst_get_variant_parameters and pvsyst_update_variant_components, though the description never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for guarded edits' implies the usage context — fetch the hash before mutating so an edit can be validated — but the description never states when to call it versus alternatives or what the guard precondition is. Usage is inferred rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_get_variant_parametersC
[Projects & Variants] Inspect orientations, including native SummerTilt/WinterTilt (degrees), WinterMonths (raw month bitmask) and UsesTiltAver. Seasonal FieldTilt=0 is not the effective seasonal angle; these fields are read-only here, not a mode editor. Inspect owning subarray LIDLoss/PMismMPP percent, raw PQualityModU/I/P and Flags, variant_name from the header only (null if absent/duplicate there; late-root name ambiguity is not validated), utf8_bom (raw UTF-8 names do not prove BOM-less native decoding), main_array UFactor (W/m2/K)/Flags/Flags2, main_array.soiling, native grid_limit, auxiliaries, horizon, inverter_temperature and power_factor state, power_controls (verified PF/grid combinations), p50_p90 (existing native result-template parameters), and standalone generator settings/thresholds. Unsupported system forms report an issue; system_parameters exposes unique owning SystemType/Flags/TempShift/TempFixed/ TanPhi/PLimGrid/LimGrSeparLoss as raw text; missing or duplicate fields are omitted. Native temperature fields use degC; TanPhi is not a computed PF, and PLimGrid units depend on the native mode (kW or kVA). Nested owning object fields are excluded; this does not widen write support. Read-only transformers, system_unavailability, peak_shaving and shading_scene expose stored native layers, outage periods, strategy and scene declarations. Active shading_scene.pv_bindings additionally exposes one/two native8.1.6 PVCollada PV-table declarations: raw automatic labels/creation counters, stored orientation IDs, module counts and native DOrigine metres (NOT house/PVCollada coordinates). Cross-checks ordinary fixed-plane references, three angle fields and per-plane saved module totals. stored_consistent means these declarations agree, not source geometry/identity, circuit topology or native consumption verified. Unsupported/malformed records retain the scene's active declaration and report an issue, never an empty/verified scene. Generic meshes are not decoded. These are not computed electrical quantities or dispatch. Ageing reports its stored template fields; IAM includes native FresnelSmooth/UserProfile point tables without evaluating them. A broader readable P50 root state does not widen writing.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so extensively: it clarifies read-only status, raw vs computed fields, omitted/malformed fields, unsupported system forms, units such as degC and W/m2/K, and that stored_consistent does not imply verified geometry. It lacks prerequisites and auth needs, but exposes substantial operational caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, semicolon-heavy block with no front-loaded summary and long tangential field enumerations. It is information-rich but poorly structured and likely to obscure the main 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?
With no output schema, the description usefully enumerates many returned fields and caveats, which is valuable for a complex inspection tool. However, it omits input parameter semantics and lacks a concise high-level orientation, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both required parameters (project and variant) are completely undocumented in the description. The description adds no meaning about identifier formats, expected values, or selection rules for these inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Inspect orientations...' and then enumerates many variant parameter fields, so the resource is identifiable, but there is no single concise statement of overall purpose. It distinguishes from write tools only obliquely with 'read-only here, not a mode editor' and 'does not widen write support'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no sibling tool is named as an alternative. The mention of read-only behavior implies inspection rather than editing, but an agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_import_house_pv_sceneA
[Projects & Variants] Import a generated house/PV scene using the already open native PVsyst GUI. This bounded Windows path targets Chinese PVsyst 8.1.6 rev49278 with native logical DPI96 and the recorded physical window metrics, with the matching workspace and recipe project already open on its project page. Supports one or two PV regions; creation/standard export retains its 64-region limit. Unknown GUI metrics, dialogs, source/PAN mismatches and unsupported scene dialects stop rather than patching private VC data or guessing control positions. dry_run reads state only: no activation, key/mouse input or clipboard access. Execute with dry_run=false AND confirm=true, then leave the native desktop alone: selects the clean source variant, imports PVC2 and assigns its regions to the declared source orientation(s). The bounded two-orientation path explicitly places each table and verifies native SHD/saved VC geometry and a real GUI reload. It then runs PVsyst's scene-validity check and shading table, and saves a NEW native variant with the explicit display title variant_name (1..80 printable UTF-8 bytes). Native warnings beyond the expected beta notice stop; invalid geometry is returned as the software's own text. Any failure leaves the current window for inspection; an already-created variant path is disclosed even if postchecks fail. No automatic retry, source overwrite, application start/exit or INI modification is performed. Native validity text replaces the clipboard only after this confirmed operation; only the newly copied native text is read, never the earlier clipboard. imported/native_geometry_verified become true only after native persistence checks; native_consumption_verified stays false until a separate native simulation. shading_mode=module_layout additionally uses native placement and automatic string allocation, then selects detailed electrical shading. This opt-in requires two fixed source groups, one landscape zero-spacing table and one independent string (1..100 modules, one inverter/MPPT) per source array1/2. The saved module cells and native table/array links are checked; the selected mode is checked after GUI reload. Use pvsyst_run_simulation on the returned variant for energy/shading consumption. method="native" (opt-in) builds a NEW native input variant from the same supported recipe without any GUI, INI, clipboard, licence or engine action. It supports only two fixed orientations, two landscape zero-spacing tables, source arrays 1/2 with one independent string/inverter/MPPT each and the same PAN/OND; unsupported recipes stop before writing. dry_run builds and verifies the native records in memory only. Execution requires dry_run=false AND confirm=true and writes one new variant; the status is native_variant_created; stored_geometry_verified/stored_module_layout_verified reflect the STORED record only, while native_geometry_verified/native_module_layout_verified, native_consumption_verified and imported stay false because PVsyst has not loaded or consumed it; run an explicit simulation to verify consumption. dry_run writes nothing and keeps both stored flags false but still reports the passed precheck. The source variant/PAN are never modified.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | gui | |
| confirm | No | ||
| dry_run | No | ||
| scene_name | Yes | ||
| shading_mode | No | linear | |
| variant_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly: dry_run reads state only, execute requires dry_run=false and confirm=true, no automatic retry/source overwrite/app start/exit/INI modification occurs, failures leave the window for inspection, and clipboard use is tightly scoped. It also discloses native-method behavior, verification flags, and the fact that native consumption remains unverified until a separate 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?
The description is dense and largely front-loaded, but it is a single long paragraph with repeated dry_run/flag explanations across GUI and native modes. Much of the length is justified by tool complexity, but the structure could be clearer and less repetitive.
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 complex tool with no annotations and no output schema, the description covers prerequisites, failure modes, side effects, verification flags, and the next simulation step. It does not fully enumerate the return shape, but it provides enough context for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all six parameters. It explains method, dry_run, confirm, shading_mode, and variant_name constraints well, and gives enough context for scene_name indirectly, though some parameter-level format details remain implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: importing a generated house/PV scene, with both GUI and native method modes. It clearly distinguishes import behavior from variant creation, but it does not explicitly name a sibling such as pvsyst_create_house_pv_scene to route the agent between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong usage context: an already open native PVsyst GUI, matching workspace and recipe project, bounded Windows/version assumptions, one- or two-region support, and opt-in method='native' limitations. It also directs post-import simulation to pvsyst_run_simulation, though it lacks a direct comparison with create_house_pv_scene.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_inspect_projectB
[Projects & Variants] List PRJ/VC hashes and embedded SIT/MET references; flag missing workspace files and differences between project and variant sources. project_name reads only the UTF-8 root header (null if absent/duplicate there), not effective native decoding of a BOM-less non-ASCII file. utf8_bom reports the PRJ marker.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses caveats around project_name UTF-8 root-header reading and utf8_bom PRJ marker reporting, but it does not explicitly state read-only safety, permissions, or return format.
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 compact and front-loads the main inspection purpose. The technical caveat about UTF-8 BOM handling is relevant but slightly cryptic, and the bracketed category tag is incidental.
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 annotations and no output schema, the description should fully explain both input and output. It names several output artifacts (hashes, references, missing-file flags, differences) but leaves the 'project' input undefined and does not describe the overall return shape.
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 sole input parameter 'project' has 0% schema description coverage, and the description does not define what value it expects (path, name, hash, etc.). The mention of 'project_name' appears to describe output or header behavior rather than the input 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 that the tool lists PRJ/VC hashes and embedded SIT/MET references, flags missing workspace files, and compares project vs. variant sources. This is a specific inspection action, though it does not explicitly distinguish the tool from similar diagnostic siblings such as pvsyst_review_project_inputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it state prerequisites or exclusions. It only implies diagnostic inspection through phrases like 'flag missing workspace files' and 'differences'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_inspect_weather_csvA
[Sites & Weather] Check a PVsyst standard hourly CSV in Meteo before preparing a full-year run. Read-only: reports metadata/units, gaps, duplicates, bad numbers and observed monthly irradiation/temperature with input SHA-256. GHI/Tamb required; optional DHI/DNI and weather columns supported. Raw timestamps must cover one whole year at 00:00..23:00 (including leap day); no silent filling or time conversion. Nonzero shifts, explicit time references and POA need separate review. valid covers this CSV profile only, not MEF/SIT matching or native MET correctness.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_name | Yes | ||
| expected_year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so well: it declares read-only behavior, enumerates exactly what is reported (metadata/units, gaps, duplicates, bad numbers, monthly irradiation/temperature, SHA-256), and states hard input constraints (GHI/Tamb required, whole-year 00:00..23:00 including leap day, no silent filling or time conversion). It does not say how a non-conforming CSV surfaces (error vs. findings payload), which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and read-only nature are front-loaded, then constraints, then validity scope; nearly every sentence carries information. It is dense but not padded, with only minor redundancy between the whole-year timestamp rule and the 'valid covers this CSV profile only' caveat.
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?
Behaviorally rich for a no-annotation, no-output-schema tool, but an agent still cannot determine what the two arguments mean or how results/failures are returned. Adequate to decide whether to call it, incomplete for calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters and the description never mentions them. 'csv_name' is left ambiguous (bare filename vs. path/location) and 'expected_year' is never explained at all, despite the whole-year requirement implying its role. With zero schema documentation, this is a material gap the description needed to close.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a PVsyst standard hourly CSV in Meteo') plus the moment of use ('before preparing a full-year run'). It also draws an explicit scope boundary against sibling concerns ('not MEF/SIT matching or native MET correctness'), so an agent can separate it from review_weather/prepare_weather without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use ('before preparing a full-year run') and when-not ('valid covers this CSV profile only, not MEF/SIT matching or native MET correctness'), plus a routing hint that POA/time-reference cases 'need separate review'. What it lacks is naming the actual alternative tools an agent should call instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_license_activateA
[Setup & License] Activate a CLI license using a supplied key. Requires confirm=true; MCP clients may retain tool arguments, so handle license keys accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the confirm=true requirement and a genuine operational risk (MCP clients may retain arguments containing license keys), but says nothing about whether activation is reversible, whether the key is consumed, error/failure behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste: the action and its gating requirement come first, with the security caveat trailing as supporting context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description should also indicate what happens on success or failure and how the license state changes. It covers the safe-invocation essentials (key, confirm, key-handling caution) but leaves the outcome side unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema does not even mark 'confirm' as required, so the description adds real value by stating that confirm=true is mandatory. 'Key' is identified as the license key, covering the second parameter's meaning; only format details are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Activate a CLI license') plus the input it consumes ('using a supplied key'). The 'CLI license' scope cleanly separates it from the license_info, license_deactivate, and license_sync siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The activation intent implies when to use it, but there is no explicit guidance on prerequisites or alternatives — e.g., whether to check pvsyst_license_info first, or what to do if a license is already active. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_license_deactivateB
[Setup & License] Deactivate this computer's CLI license. Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the confirm guard, which is genuine behavioral context, but says nothing about irreversibility, what happens to an in-use license or running simulations, or whether the license can be reclaimed afterwards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the bracketed category and action, with zero filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no parameter documentation in the schema, the description needs to do more: it omits customer_id, the return/result of deactivation, and the consequences of the operation. An agent has enough to attempt the call but not enough to do so safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It explains that `confirm` must be true, but the required `customer_id` parameter is never mentioned or explained, leaving the most important input undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Deactivate') and resource ('this computer's CLI license'), and the scoping to the local machine implicitly distinguishes it from the sibling pvsyst_license_activate. It stops short of naming that sibling or explaining the lifecycle relationship, so it is clear but not fully differentiated.
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?
'Requires confirm=true' gives one concrete prerequisite for invocation, which is useful. However, there is no statement of when to deactivate versus re-activating (pvsyst_license_activate) or syncing (pvsyst_license_sync), nor any warning about 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.
pvsyst_license_infoA
[Setup & License] Read CLI license state and quota without returning keys or Host ID.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add one genuinely useful disclosure: keys and Host ID are intentionally withheld from the response. However, it says nothing about whether the CLI must be running, whether the call requires authentication, or what happens if no license is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the scope caveat front-loaded; nothing is wasted. The '[Setup & License]' prefix is mild redundancy against the tool name, which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must hint at return contents, and it only names 'state and quota' without any shape or field detail. For a zero-parameter, no-annotation tool this is serviceable but leaves the agent guessing what it will get back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read CLI license state and quota.' The sibling set (license_activate, license_deactivate, license_sync) makes the read-only variant distinguishable, though the description never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'Read' and the bracketed '[Setup & License]' tag. The description gives no explicit when-to-use guidance, no prerequisites (e.g., does the license need to be activated first?), and no reference to the sibling license_* tools that an agent must choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_license_syncB
[Setup & License] Synchronize CLI license information with its server. Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose that the operation contacts a server (a network-touching action) and that a confirm flag gates it. However, it does not say what state changes locally, whether the sync is idempotent, what happens on server unreachability, or what permission is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose first and the gating requirement second — no filler. It could front-load the confirm requirement alongside the action, but it is efficiently sized.
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 state-changing license operation with no annotations and no output schema, the description omits the effects, error/confirmation behavior, and post-conditions an agent needs before invoking it. The single boolean parameter makes the schema simple, but the behavioral picture remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the schema alone only shows 'confirm' as a boolean defaulting to false. The description adds the crucial semantic that it must be set to true, but does not say what occurs when it is false (error, no-op, or dry run).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Synchronize) and resource (CLI license information with its server), and the bracketed category separates it from project/variant tools. It is distinguishable from the license siblings (info/activate/deactivate), though it never explicitly says how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires confirm=true' is a prerequisite, not usage guidance. There is no statement of when to call this versus pvsyst_license_info, pvsyst_license_activate, or pvsyst_license_deactivate, and no exclusions or preconditions (e.g. license must already be activated, network available).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_list_componentsB
[Components] List PAN, OND, BTR or GEN loose files in workspace or installed DataRO. The encrypted built-in component database is not enumerable.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No | ||
| library | No | workspace | |
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the encrypted built-in component database cannot be enumerated, which prevents a wasted call. It omits pagination behavior (limit/offset defaults), result format, and any permission constraints a mutating-adjacent tool might have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler, and the scope/limitation is front-loaded. It is efficient, though it could trade one clause for the missing parameter guidance.
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 5-parameter list tool with zero schema descriptions, no annotations, and no output schema, the description is too thin. An agent cannot tell how query filters, how limit/offset paginate, or what the returned records look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must define all five params. It only clarifies component_type values (PAN/OND/BTR/GEN) and the workspace-vs-DataRO source choice (library). The required component_type is unexplained as to case/format, and query, limit, and offset are entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and the exact resource domain (PAN, OND, BTR or GEN loose component files) in workspace or DataRO. This clearly distinguishes it from get_component, create_component, and list_projects siblings, though the name alone ('list_components') would not have conveyed the file-type specifics.
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?
Implicitly scopes usage to workspace or installed DataRO and rules out the built-in database ('not enumerable'), which is useful when-not guidance. However, it never names alternatives (e.g., get_component for a single component) or explains when to prefer one source over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_list_projectsA
[Projects & Variants] List PRJ filenames in the configured workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the key constraint that results are limited to the configured workspace. It says nothing about what happens when no workspace is configured, whether paths are absolute or bare filenames, ordering, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a category tag, verb, and scoped resource, with zero filler. It is perhaps terse to the point of leaving gaps, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and a zero-param lister is inherently simple. Still missing is the operational context an agent would want: what happens if no workspace is configured, and how this relates to listing or inspecting variants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. The workspace scoping implied by "configured workspace" is the only free variable and is mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ("List") and resource ("PRJ filenames") scoped to "the configured workspace", so an agent knows exactly what comes back. It does not explicitly distinguish itself from the nearby pvsyst_list_variants or pvsyst_inspect_project, relying on the reader to infer projects vs. variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: listing projects is obviously a discovery/entry step, and "configured workspace" hints at the prerequisite state. There is no explicit when-to-use, when-not-to-use, or pointer to pvsyst_list_variants or pvsyst_inspect_project as follow-ups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_list_variantsC
[Projects & Variants] List variant IDs belonging to an existing project.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read, but it does not disclose whether archived variants appear, whether results are paginated or capped, or what identifiers the returned IDs are usable with.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the category tag front-loaded. Nothing extraneous, though brevity here comes at the cost of missing detail rather than being efficiently dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, relieving the description of that duty. However, for a tool whose only parameter format is unknown and whose filtering behavior (archived or not, ordering) is unspecified, the description leaves material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required 'project' parameter is undocumented. The description says 'existing project' but doesn't clarify whether the value is a project name, ID, or path — the key ambiguity for correctly invoking this 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?
States a specific verb (list) and resource (variant IDs) scoped to an existing project, which an agent can distinguish from pvsyst_list_projects and the various create_variant tools. It could be sharper about whether archived variants are included, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus pvsyst_inspect_project, pvsyst_get_variant_parameters, or pvsyst_list_projects. A reader infers it's the entry point for enumerating a project's variants, but nothing is stated about prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_open_native_projectA
[Projects & Variants] Open a workspace PRJ through the recorded Chinese8.1.6rev49278/DPI96 native GUI. Requires native INI DataPath already equal to this MCP workspace. Reads/validates the requested project and native process inventory, including instances without a visible form. Preview never starts/activates/selects/types; a cold launch requires dry_run=false AND confirm=true. Only a newly launched process receives native Grid/ Load/filter/confirm actions; the final project basename and unchanged PRJ are checked. A preexisting matching ready project is returned already_open with owned=false and existing_session_read_only=true: no activation, variant selection, reload or close. Any other/ambiguous/busy existing session stops untouched, preserving unobservable unsaved work. This is not a native dirty-state detector or consent to edit an existing window. No INI, clipboard or VC patch; no application is closed/force-terminated. A failed cold launch discloses its owned PID/current stage for inspection. Successful opened state is not house import, geometry validity or simulation certification.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| dry_run | No | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses that preview never starts/activates/selects/types, that only a newly launched process receives GUI actions, that a preexisting matching session returns already_open with owned=false and existing_session_read_only=true, that ambiguous/busy sessions are left untouched to preserve unsaved work, and that no INI/clipboard/VC patching or force-termination occurs. It even states a failed cold launch discloses its owned PID/stage for inspection.
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 purpose is front-loaded in sentence one, but the body is a semicolon-chained block with jargon like 'Chinese8.1.6rev49278/DPI96' that adds little for an agent. Several clauses (house import, geometry validity, simulation certification disclaimers) could be compressed without losing selection signal.
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 complex native-GUI mutation tool with no annotations and no output schema, the description covers side effects, session states, error disclosure, and even names returned fields (already_open, owned, existing_session_read_only). Remaining gap is the unspecified 'project' argument format and the exact opened/failed return shapes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it only partly does: dry_run is explained as the preview/cold-launch switch and confirm as the second gate alongside dry_run=false. The required 'project' parameter is left ambiguous—'the final project basename ... is checked' hints at name vs. path but never clarifies the accepted format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource: open a workspace PRJ via the native GUI, and it is scoped to the 'Projects & Variants' area. It does not name a sibling it is an alternative to (e.g. pvsyst_prepare_design_project or pvsyst_inspect_project), though 'This is not a native dirty-state detector' rules out one misreading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage conditions are explicit: a prerequisite INI DataPath must already equal the MCP workspace, preview never mutates, and a cold launch requires dry_run=false AND confirm=true. What is missing is routing to alternatives—it never says when to use inspect_project or prepare_design_project instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_prepare_block_projectB
[Engineering] Prepare one NEW project from explicit counts of fully defined native block types. Each block names a unique source_subarray_id and count INCLUDING the original. Cover every source subarray exactly once, at most 100 blocks in total. Copy whole exclusive inverter/MPPT/string branches with their source equipment, counts and ordinary fixed-plane orientation. Do not infer internal wiring, resize hardware, choose models or change angles. Only the selected source VC and PRJ are published. Preview builds in memory without writes; execution never overwrites or backs up an existing project. No native run, GUI, INI, weather acquisition or certification. Unsupported shading, sharing and common load/storage/transformer/limit/auxiliary systems stop; inherited weather/losses/electrical suitability require review. Prepared mapping and serialized counts do not prove native consumption.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | Yes | ||
| dry_run | No | ||
| new_project | Yes | ||
| source_project | Yes | ||
| source_variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose important behavior: 'Preview builds in memory without writes; execution never overwrites or backs up an existing project.' It also warns that unsupported shading, sharing, and common load/storage/transformer systems 'stop' and that inherited weather/losses/electrical suitability 'require review.' That is strong disclosure of side effects and failure modes, though it does not cover permissions, exact return contents, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and most clauses carry real constraints. But the description is a dense wall of semicolon-separated jargon that would be easier to use if split into structured sections for preconditions, side effects, and exclusions. It is appropriately sized for a complex engineering tool but poorly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description covers behavioral constraints and failure modes reasonably well. It is incomplete for a preparation tool because it never explains what a preview or execution returns, and it leaves several parameter names undefined. An agent could attempt a call but would be guessing about the result shape and identifier formats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only partially does. It explains block semantics ('Each block names a unique source_subarray_id and count INCLUDING the original') and implies dry_run behavior via preview vs. execution. It says nothing about what source_project, source_variant, or new_project strings should contain, leaving most parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Prepare one NEW project from explicit counts of fully defined native block types.' It also sets scope by excluding native runs, GUI, INI, weather acquisition, and certification. However, it does not explicitly differentiate itself from close siblings like pvsyst_prepare_design_project or pvsyst_prepare_sourced_design, and jargon such as 'source VC and PRJ' leaves the exact nature of the preparation somewhat opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives constraints on use ('Cover every source subarray exactly once, at most 100 blocks in total', 'Copy whole exclusive inverter/MPPT/string branches'), which imply when the tool applies. But it never names an alternative tool or states the condition that would route an agent to pvsyst_prepare_design_project or pvsyst_create_project instead. Usage guidance is present but only implicit through exclusions and preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_prepare_design_projectA
[Projects & Variants] Prepare one new design project without GUI or annual simulation, using existing flow gates. Same strict SingleDesignRequest/source/weather/fixed_unshaded_grid boundaries as pvsyst_simulate_design: exact PAN/OND and template, explicit counts or sourced design envelope, declared angles/losses and bound existing/csv/open_meteo weather. Missing design evidence stops with concrete issues; no manufacturer/site value is guessed. dry_run writes nothing. Future weather/seed inputs return ready_for_weather, never a falsely completed native preflight. Execution reuses guarded clone/source/component/ capacity/parameter edits and structural readback, then stops BEFORE SFI/CSV/PDF/run. A zero remaining simulation quota does not itself block non-simulation preparation; required weather commands/version/licence are still queried, not bypassed. status=prepared or needs_review with prepared=true means configured files exist; simulated/native_consumption_verified stay false and metrics stays null. Review flags are preserved, including provider/weather review, never upgraded to energy acceptance. Results/prepare.json retains declared request/envelope/selected sources, inherited configuration and existing guarded recovery transactions. Existing files are not overwritten, original template/component/weather assets remain protected. prepared_project gives exact project/variant/year/SIT/MET for a subsequent house task or explicit native run; report_pages is validated but no report is generated here. The old simulation entry still runs its annual path by default. No new sizing/PV model.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that dry_run writes nothing, that execution stops before SFI/CSV/PDF/run, that existing files are not overwritten and templates/assets are protected, that quota exhaustion doesn't block preparation, and the meaning of status/prepared flags. The gaps are around exact return shape and error payloads, which are only sketched.
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 purpose is front-loaded, but the remainder is a dense ten-sentence wall of jargon ('using existing flow gates', 'exact PAN/OND', 'sourced design envelope') that is hard to parse and mixes several distinct concerns (boundaries, idempotency, quota, status flags, file naming) without grouping. Readable but not economical.
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 complex nested-request tool with no annotations and no output schema, the description covers the important behavioral surface: what it does and doesn't do, safety/protection guarantees, status semantics, result-file naming, and the handoff artifact for downstream tasks. Missing only the concrete return/issue format, which an agent would need to interpret failures fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is 0%, so the description must compensate; it does map the spec contents (exact PAN/OND and template, explicit counts or design envelope, declared angles/losses, bound existing/csv/open_meteo weather) and explains dry_run's no-write behavior and report_pages validation. But it gives no per-field syntax or defaults, and much of the nested field meaning is left to the $defs that the coverage metric doesn't credit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb+resource ('Prepare one new design project') and explicitly scopes it as without GUI or annual simulation, which separates it from pvsyst_simulate_design by name. It could be sharper against prepare_sourced_design / prepare_block_project, whose boundaries it never mentions, but the core operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use it ('prepared_project gives exact project/variant/year/SIT/MET for a subsequent house task or explicit native run') and when not to simulate ('stops BEFORE SFI/CSV/PDF/run'). However, it never explicitly contrasts the three prepare_* siblings or says 'use this instead of X when Y', leaving the routing decision partly inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_prepare_load_profileA
[Loads & Storage] Inspect or prepare a NEW native hourly load CSV from workspace/UserData. Require exactly the declared date/load columns plus explicit W or kW units, all 8760/8784 increasing interval-start hours of the requested year and an explicit fixed whole-hour standard UTC offset (no DST). iso dates mean YYYY-MM-DD HH:MM; pvsyst_dot/slash mean DD.MM.YYYY/DD/MM/YYYY HH:MM. dry_run=true writes nothing. Execution preserves the source, writes an ASCII Date;P Load / ;kW CSV to UserHourlyParams and an import record to Results. Missing/duplicate/non-hourly/negative/nonfinite rows stop; no gap filling, resampling, yearly renormalization, net-meter interpretation or time shift. Existing names are preserved. Write failure retains disclosed partial outputs. ready/prepared concern this CSV only, not native consumption: bind the CSV to a variant and verify hourly output. Native calendar lookup ignores year; the importer explicitly checks the requested year's leap day and time basis. input-param-file is an advanced parameters DAT, not a load CSV channel.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| dry_run | No | ||
| csv_name | Yes | ||
| time_basis | Yes | ||
| date_column | No | Date | |
| date_format | No | iso | |
| load_column | No | P Load | |
| output_name | Yes | ||
| utc_offset_hours | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does so: dry_run=true writes nothing, the source is preserved, an ASCII Date;P Load / ;kW CSV is written to UserHourlyParams plus an import record to Results, existing names are preserved, and write failure retains partial outputs. Failure semantics are enumerated precisely (missing/duplicate/non-hourly/negative/nonfinite rows stop) along with what is deliberately NOT done (no gap filling, resampling, renormalization, net-meter interpretation, or time shift).
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?
Purpose is front-loaded in the first clause and nearly every sentence adds distinct information. Density is high and some sentences stack multiple constraints, but there is little true filler — the main cost is a slight kitchen-sink feel that makes skimming harder.
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 9-parameter, 0%-schema-coverage, unannotated mutation tool with no output schema, this covers inputs, validation rules, side effects, output locations, failure behavior, and the downstream step required to actually use the produced CSV. An agent has enough to invoke it correctly and to know what it must do next.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate and largely does: it explains the date column and load column expectations, accepted date formats (iso, pvsyst_dot, pvsyst_slash) with literal examples, the whole-hour UTC offset with no DST, the 8760/8784 interval-start hour basis, and dry_run behavior. The output_name parameter is never explained, which is the main remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Inspect or prepare a NEW native hourly load CSV from workspace/UserData.' It then explicitly separates this from native consumption ('ready/prepared concern this CSV only... bind the CSV to a variant') and distinguishes it from the input-param-file DAT channel, so an agent can tell it apart from siblings like create_load_variant or create_native_load_variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use context (inspect or prepare), the preconditions that must hold, and an explicit exclusion ('input-param-file is an advanced parameters DAT, not a load CSV channel') plus a required follow-up step. It stops short of naming an alternative sibling tool by name, so routing is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_prepare_sourced_designA
[Simulation] Bind caller-declared excerpts to source text and build the design-envelope request. pan_name and ond_name are exact loose component filenames (workspace first, then the installed library): a manufacturer-only search is never substituted and no model is inferred. The identity label is composed from the owning objects as "PAN manufacturer PAN model / OND manufacturer OND model" and cannot be overridden by the caller. A root-only text component and an 8.1.6 GUI component are both accepted: the root object is required, a PVObject_Commercial block is optional and its identity wins, while a disagreement between the two, a repeated declared field or a legacy binary or non-UTF-8 file returns blocked with the concrete field. sources maps short ids to declared source text whose kind is manufacturer, site or assumption; declarations claims one value per field, each tied to a source id, an excerpt and the exact value/unit tokens it must agree with, and the declared source text itself is never returned. design carries explicit engineering goals only, so no envelope, coefficient or limit can be injected without a citation. status is ready, needs_review or blocked; the assembled electrical_design draft, the reused envelope result and the citation provenance come back, and the declared excerpts are a source-consistency check between the claimed value and the quoted loose component identity, not a manufacturer certification.
| Name | Required | Description | Default |
|---|---|---|---|
| design | No | ||
| sources | Yes | ||
| ond_name | Yes | ||
| pan_name | Yes | ||
| declarations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that source text is never returned, that the identity label cannot be overridden, that conflicts return blocked with the concrete field, and that no envelope/coefficient/limit can be injected without a citation. It omits permission/auth needs and any rate or size limits, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and nearly every clause carries substantive information, but the text is delivered as long run-on sentences with parenthetical asides that are hard to parse on first read. It is dense rather than padded, yet a bulleted or segmented form would convey the same content more reliably.
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 5-parameter nested tool with no annotations and no output schema, the description covers inputs, validation behavior, status semantics, and return contents (electrical_design draft, reused envelope result, citation provenance). Remaining gaps are minor: no ordering relative to sibling preparation tools and no detail on individual design-goal fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: pan_name/ond_name are exact loose component filenames resolved workspace-first, sources maps short ids to declared text of kind manufacturer/site/assumption, and each declaration ties a value to a source id, excerpt, and exact value/unit tokens. The nested design goals are only labeled 'explicit engineering goals', leaving individual goal fields undescribed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound action: bind caller-declared excerpts to source text and build the design-envelope request, plus the identity composition rule. It is clear what the tool does, but it never names or contrasts the obvious siblings (pvsyst_prepare_design_project, pvsyst_simulate_design, pvsyst_build_sourced_component), so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the status outcomes (ready/needs_review/blocked) and the rejection conditions (identity disagreement, repeated field, legacy binary/non-UTF-8), which tells an agent when the call will succeed. However, there is no explicit when-to-use versus pvsyst_prepare_design_project or pvsyst_build_sourced_component, and no stated prerequisites or ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_prepare_weatherA
[Sites & Weather] Prepare NEW native SIT/MET and a provenance manifest from one full hourly CSV. GHI, DHI, Tamb only; explicit uppercase ISO country code and time_basis local_standard_interval_start are required (fixed winter timezone, no DST). Coordinates, altitude, timezone, site and source come from verified CSV metadata. dry_run=true writes nothing. Execution preserves raw bytes, normalizes only columns/units, creates monthly CSV/MEF, runs create-site and convert-meteo. Conversion warnings are retained as needs_review; prepared is not native MET certification. Pass artifacts.manifest filename as weather_manifest_name to simulate_template for explicit SIT/MET loading and hourly weather comparison. No UTC/DST shifts, missing-data filling, ignored columns or binary parsing. Existing outputs are never overwritten; failure artifacts/manifest are retained.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| dry_run | No | ||
| csv_name | No | ||
| met_name | No | ||
| sit_name | No | ||
| time_basis | No | ||
| country_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: dry_run writes nothing, raw bytes are preserved, only columns/units are normalized, monthly CSV/MEF are created, warnings become needs_review, existing outputs are never overwritten, and failure artifacts are retained. It also correctly cautions that a prepared file is not native MET certification.
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 dense but front-loaded with purpose and required constraints, then behavior and downstream usage. Almost every clause adds operational value, though the long semicolon-heavy structure makes it harder to scan than it could be.
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 complex orchestration tool with no output schema and no annotations, the description does well on behavior and constraints. However, it does not fully document the seven inputs or the returned artifact structure, and the requiredness mismatch with the schema leaves an invocation ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain seven parameters. It adds useful meaning for country_code, time_basis, and dry_run, but leaves year, csv_name, met_name, and sit_name largely unexplained, and its statement that country_code/time_basis are required conflicts with the schema showing zero required parameters and empty-string defaults.
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 starts with a specific verb and resource: preparing NEW native SIT/MET plus a provenance manifest from one hourly CSV. It clearly scopes the operation to GHI/DHI/Tamb and distinguishes it from lower-level weather tools by describing the orchestration of create-site and convert-meteo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope: preparing new native weather files from a CSV, not inspecting, acquiring, or reviewing one. It also names a downstream handoff to simulate_template, but it does not explicitly compare this tool against siblings such as inspect_weather_csv, acquire_weather, build_monthly_weather, or review_weather.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_project_componentsC
[Components] Inspect PRJ/VC references to PAN, OND, BTR and GEN. Unresolved loose files may still exist inside the encrypted built-in database.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one caveat ('Unresolved loose files may still exist inside the encrypted built-in database'), but does not explicitly state that the operation is read-only, what permissions are needed, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the inspection purpose front-loaded and the caveat second. There is little waste, though the bracketed '[Components]' tag adds no meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read/inspect tool with two required undocumented parameters and no output schema, the description should clarify the return shape (e.g., resolved vs unresolved references) and the meaning of the inputs. It provides only a cryptic database caveat, leaving the agent unsure what calling it actually yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the required 'project' and 'variant' parameters. It does not say whether these are names, file paths, or IDs. The mention of 'PRJ/VC references' only weakly implies they identify project and variant files.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb ('Inspect') and a resource (PRJ/VC references to PAN, OND, BTR, GEN), which is specific to a domain expert but opaque to an agent that doesn't know these acronyms. It does not distinguish this tool from close siblings like pvsyst_get_variant_components, pvsyst_inspect_project, or pvsyst_list_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The sibling set contains several overlapping inspection/component tools, and the description never names one as an alternative or states a selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_project_handoffB
[Engineering] Read saved equipment, counts, orientation/circuit relationships and input dependencies. Includes explicit caller declarations, inherited values, missing inputs and engineering review items. Fixed/tracking and existing AC storage use the native saved records. Readonly: no GUI, license query, simulation, repairs or writes. ready/needs_review describe the handoff only; native_consumption_verified remains false.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes | ||
| declarations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explicitly states readonly behavior, excludes GUI, license query, simulation, repairs, and writes, and clarifies that ready/needs_review only describe the handoff while native_consumption_verified remains false. It still does not describe failure behavior or rate limits, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the read scope, and avoids filler. It is dense and somewhat run-on, especially the parenthetical engineering clauses, but every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys the conceptual handoff contents and readonly constraints, which is useful given no output schema. However, it does not fill the parameter documentation gap or explain the response shape, and it lacks explicit routing against similar project/variant inspection tools, leaving material gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It only gestures at the declarations parameter via 'explicit caller declarations' and provides no meaning, format, or expected values for project, variant, or declarations. This leaves the agent largely dependent on naming alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific read operation and enumerates the saved engineering data it returns: equipment, counts, orientation/circuit relationships, input dependencies, declarations, inherited values, missing inputs, and review items. It is clear what the tool does, but it does not explicitly distinguish it from nearby siblings such as pvsyst_review_project_inputs or pvsyst_inspect_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the engineering handoff framing and the readonly constraints, but there is no explicit statement of when to use this tool instead of pvsyst_review_project_inputs, pvsyst_inspect_project, or pvsyst_get_variant_parameters. The agent must infer the intended handoff scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_read_batch_resultsC
[Results] Read SIM_* scenario values from a UserBatch/*Results.CSV summary.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | No | E_Grid,PR | |
| summary_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read of a CSV file but does not say whether it is read-only, what happens if summary_name is missing or invalid, how columns affect output, or what shape the returned values take.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a useful [Results] tag and no filler. It is concise, though brevity comes at the cost of missing guidance.
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 two parameters, zero schema descriptions, no annotations, and no output schema, the description is too thin. An agent cannot confidently construct a correct call or interpret the returned values from this text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only indirectly references summary_name (the '*Results.CSV summary') and never explains the columns parameter or its default of E_Grid,PR.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (SIM_* scenario values in a UserBatch/*Results.CSV summary), which is more than a tautology. However, it relies on PVsyst-specific jargon and does not distinguish itself from sibling readers like pvsyst_read_results or pvsyst_read_rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives no indication of when this batch-summary reader should be used instead of pvsyst_read_results or pvsyst_read_rows. No prerequisites, alternatives, or exclusion criteria are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_read_house_pv_sceneA
[Projects & Variants] Read a generated UserData/*.pvc2 back into complete house/PV create arguments. Parses actual XML mesh vertices/triangles and module dimensions, then rebuilds the supported dialect and compares canonical XML so unknown content is never dropped. Named tables, single placed tables and legacy parametric inputs emitted with the versioned standard asset metadata round-trip. Use returned create_arguments, change the intended parts/layout, supply a NEW output_name and preview/create with the existing pvsyst_create_house_pv_scene tool; the original file is never overwritten. required_inputs always includes output_name. Old R44 AI scenes without provenance return needs_context with project/variant/roof association missing, never guessed. Source declarations are file metadata, not proof the native project still matches; creation checks the current project/PAN again. No project or native scene is edited, imported/native_consumption_verified stay false, and no geometry is auto-repaired. Reads only bounded UTF-8 XML; DTD/entity declarations and unsupported extensions stop. This is not a general COLLADA converter or a native VC scene exporter.
| Name | Required | Description | Default |
|---|---|---|---|
| scene_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so richly: original file never overwritten, no project/native scene edited, import/native_consumption_verified stay false, no geometry auto-repaired, bounded UTF-8 XML reads with DTD/entity declarations stopping execution, and needs_context for missing provenance. These are exactly the safety and side-effect disclosures an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every sentence is substantive, but the block is dense and crams security/XML-parsing caveats alongside the workflow, making it harder to scan. Slightly long for a one-parameter reader, though little is genuinely wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must carry return semantics; it names key returned artifacts (create_arguments, needs_context, required_inputs) and constraints. It stops short of describing the full shape of create_arguments or the success return, leaving some gaps for an agent composing the downstream create call.
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 sole parameter scene_name has 0% schema coverage and the description only hints at it via 'UserData/*.pvc2' — it never clarifies whether scene_name is a bare name, a relative path, or a full path. The description does add value about a related field (required_inputs always includes output_name), but the actual input parameter remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a generated UserData/*.pvc2 back into complete house/PV create arguments') and clarifies the transformation (parse XML mesh vertices/triangles and module dimensions, rebuild dialect). It also explicitly excludes siblings/alternatives ('not a general COLLADA converter or a native VC scene exporter') and points to pvsyst_create_house_pv_scene, so an agent can distinguish it from import/create 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?
Gives an explicit workflow: take returned create_arguments, modify parts/layout, supply a NEW output_name, then preview/create with pvsyst_create_house_pv_scene. It also states a when-not ('not a general COLLADA converter or native VC scene exporter') and notes the old-R44/no-provenance case returns needs_context rather than guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_read_resultsA
[Results] Summarize hourly or subhour SFI rows in Results or UserHourly. Complete energy requires finite samples and regular cadence; observed energy excludes missing samples. With compare_to, return target (csv_name) minus baseline (compare_to), using 1..64 distinct columns, identical explicit units and identical increasing timestamps. compare_folder defaults to folder. No resampling/conversion. Statistics use finite pairs only; missing pairs and coverage are explicit. Power differences in W/kW integrate to kWh only at a regular cadence. Comparison verifies both file hashes before/after reading; it runs no simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Results | |
| columns | No | E_Grid,PR | |
| csv_name | Yes | ||
| compare_to | No | ||
| compare_folder | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses important behavior: missing samples are excluded from observed energy, no resampling or conversion occurs, statistics use finite pairs only, missing pairs and coverage are explicit, power integration requires regular cadence, and comparisons verify both file hashes before and after reading without running a 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?
The description is dense and front-loaded, starting with the core summarize action and then adding comparison and data-quality constraints. It is telegraphic and slightly hard to parse, but most sentences carry useful operational detail and little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations and no output schema, and the description is strong on behavioral constraints and comparison semantics. It is weaker on the actual return structure, since it does not describe output fields or shape beyond saying statistics and explicit missing-pair coverage are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains compare_to as the baseline, compare_folder as defaulting to folder, columns as 1..64 distinct columns requiring identical explicit units and increasing timestamps, and csv_name as the target in comparison mode; remaining gaps are minor defaults and allowed folder values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Summarize hourly or subhour SFI rows in Results or UserHourly," and adds that compare_to returns target minus baseline. It is clear what the tool does, though it does not explicitly distinguish itself from siblings like pvsyst_read_rows or pvsyst_read_batch_results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains comparison mode via compare_to and notes constraints for complete energy and regular cadence. However, it does not explicitly say when to choose this tool over sibling read tools or when comparison is inappropriate, leaving usage routing mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_read_rowsC
[Results] Read a bounded page from Results or batch UserHourly CSVs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| folder | No | Results | |
| offset | No | ||
| columns | No | E_Grid,PR | |
| csv_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It hints at paging ('bounded page') and at the existence of a batch/UserHourly folder, but says nothing about what 'bounded' enforces, default page size, whether reads are side-effect free, or how missing CSVs or unknown columns are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the scope tag front-loaded and no filler. It is efficient, though the brevity is partly achieved by omitting information that this parameter-heavy tool actually needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters with zero schema descriptions, no annotations, and no output schema leave the description far too thin: the required csv_name and the columns selector are wholly unexplained, and the return shape is undocumented. 'Bounded page' gestures at pagination but does not make the tool safely callable without guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, so the description must compensate and does not. It never mentions csv_name (required), folder, limit, offset, or the columns parameter whose default 'E_Grid,PR' is a non-obvious, domain-specific column list that an agent would benefit from having explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (a bounded page of rows from Results or batch UserHourly CSVs), which is more concrete than a bare name restatement. It does not, however, differentiate itself from close siblings such as pvsyst_read_results, pvsyst_read_batch_results, or pvsyst_inspect_weather_csv, so an agent must guess which reader to pick.
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 names the two source folders as scope but gives no explicit when-to-use rule, no condition for choosing this over pvsyst_read_results or pvsyst_read_batch_results, and no prerequisites. Usage must be inferred entirely from the bracketed '[Results]' tag and the phrase 'batch UserHourly CSVs'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_remove_subarrayA
[Projects & Variants] Remove a grid subarray and all its exclusively owned inverter groups. subarray_id requires a strict JSON integer, not a boolean, string or float. By default another subarray must retain the orientation. remove_orientation=true also removes its now-unused fixed plane in a sequential TOrientGroup list, leaving another orientation. Non-final removal renumbers higher plane IDs and all owning NoOrientation references; requires all planes flat Flags=$00 and non-averaged, single-orientation subarrays with completely owned branches, ordinary NInvMPPT=1 without explicit MPPT or verified Version=8.1.0/8.1.6 independent $0400/direct-MPPT allocations with disabled sharing -1 and consistent counts. Every orientation reference must be an owned plane/root field; external or circuit-level references stop before writes. Returns removed_orientation_id (null by default) and orientation_id_map for changed surviving IDs. This opt-in and multiple groups require complete consistent grid counts. Shared power and shading geometry/tables are not supported. Requires the current hash and creates a rollback snapshot. shared_member=true instead deletes one member/owned MPPT subtree from a complete disabled two-member parent with explicit owner 0, one inverter/input per member and a common unshaded fixed plane. Preserves other member fields, restores its exclusive parent owner/name and reports remaining_member_id. All power sharing must be disabled; do not combine with remove_orientation. This is a bounded construction inverse, not general merge/split, active-group reallocation or hardware refitting. An active bounded group uses an explicit prior power_sharing_enabled=false parameter transaction; direct active deletion still stops. Restore deletion then the toggle snapshot to recover the active parent. These are separate guarded transactions, not an atomic implicit-disable operation.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes | ||
| subarray_id | Yes | ||
| shared_member | No | ||
| expected_sha256 | Yes | ||
| remove_orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and mostly does: it discloses optimistic concurrency via expected_sha256, rollback snapshot creation, the two deletion modes, pre-write stops on external references, survivor renumbering, and return fields. The dense internal jargon and field-name shorthand reduce confidence, but the substantive side effects are disclosed.
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 purpose is front-loaded, but the body is a single dense run-on packed with internal identifiers (TOrientGroup, Flags=$00, NInvMPPT=1), making it hard for an agent to parse and act on. The information is largely relevant, so it is not padding, but the structure and jargon prevent it from being genuinely 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?
For a complex, unannotated mutation tool with no output schema and zero schema descriptions, the definition covers the critical prerequisites, side effects, failure stops, and return fields. It is not fully complete on project/variant semantics or error behavior, but it does enough to prevent the most dangerous misinvocations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for the non-obvious parameters: subarray_id requires a strict integer, shared_member triggers the member-deletion mode, remove_orientation controls plane removal, and expected_sha256 is the current hash. It does not explain 'project' or 'variant' beyond their names, but those are comparatively self-evident.
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 opening sentence gives a specific verb, resource, and cascade scope: 'Remove a grid subarray and all its exclusively owned inverter groups.' It also clearly distinguishes the second mode via shared_member=true, so an agent can tell what each invocation does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit preconditions and exclusions: all planes flat Flags=$00, non-averaged single-orientation subarrays, all power sharing disabled, do not combine with remove_orientation, and 'This is a bounded construction inverse, not general merge/split, active-group reallocation or hardware refitting.' It does not name an alternative sibling tool for general removal, but the when/when-not context is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_resolve_locationA
[Sites & Weather] Resolve a place name into provider geocoding candidates without selecting one. Read-only geocoding lookup: returns every candidate with its integer location_id, coordinates, ISO country code and IANA zone, and sets selection_required unless exactly one candidate matched. query must be 2..100 characters of a place name; country_code, when given, must be an uppercase ISO alpha-2 code. No candidate is chosen automatically, nothing is inferred from a single hit and no weather is downloaded or written.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| country_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it declares the operation read-only, explains that no candidate is auto-selected, notes the selection_required flag behavior, and confirms nothing is written or downloaded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and dense with useful constraints, but it slightly repeats the non-selection behavior in the first and last sentences. It remains efficient overall.
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?
No output schema or annotations exist, yet the description covers return fields (location_id, coordinates, ISO country code, IANA zone, selection_required), validation rules, and side-effect boundaries. That is enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for both parameters. It constrains query to 2..100 characters of a place name and country_code to an uppercase ISO alpha-2 code when supplied.
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?
It states a specific verb and resource: resolve a place name into provider geocoding candidates without selecting one. The explicit 'without selecting one' and 'no weather is downloaded or written' distinguish it from sibling weather and site-creation 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 clearly frames this as a candidate-lookup step that does not commit a location, which helps an agent know when to use it before a selection step. It does not explicitly name alternative tools or state when not to use it, so it falls short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_restore_archived_componentB
[Components] Restore an archived component as a NEW file, preserving the archived snapshot; requires confirm=true and never overwrites existing files. Verify new snapshot metadata; return model diagnostics separately from recovery.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| filename | Yes | ||
| archive_name | Yes | ||
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the operation is non-destructive to the archive (snapshot preserved), that it creates a new file rather than mutating in place, that existing files are never overwritten, and that a confirm flag gates execution. Missing is anything about permissions, error behavior, or what happens if the archive name is invalid.
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 first sentence is tight and front-loaded with the destructive-safety constraint. The second sentence ("Verify new snapshot metadata; return model diagnostics separately from recovery") is jargon-heavy and vague — it reads as internal guidance rather than an instruction an agent can act on, so it does not fully earn 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 restore/mutation tool with no annotations and no output schema, the description covers the safety profile well, but three of four parameters are entirely undocumented and the return value is only gestured at ("return model diagnostics separately" — with no output schema, the agent has no way to interpret the response shape).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, so the description must compensate. It adds real meaning for only one parameter (confirm must be true), leaving filename, archive_name, and component_type completely undocumented in both schema and description — an agent cannot tell what format archive_name takes or what values component_type accepts.
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?
"Restore an archived component as a NEW file, preserving the archived snapshot" gives a specific verb + resource plus the key differentiator from a plain restore. It is distinguishable from pvsyst_restore_component, though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'as a NEW file / preserving the archived snapshot' clause implies when to choose this over pvsyst_restore_component or pvsyst_restore_project_archive, and 'requires confirm=true' gives a precondition. However, no alternative tool is named and no exclusion is stated, so the routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_restore_componentB
[Components] Restore a matching backup to a workspace component; confirm=true required. Back up current bytes, verify new snapshot metadata, and restore original bytes. Model diagnostics are returned separately; legacy snapshots have unverified integrity.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| filename | Yes | ||
| backup_name | Yes | ||
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It usefully states that current bytes are backed up, snapshot metadata is verified, and legacy snapshots have unverified integrity, which reveals process and risk. But it does not state whether the restore overwrites the component permanently, what permissions are required, or what happens on failure.
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 compact sentences, front-loads the action and confirm requirement, and adds process detail without excessive padding. The semicolon-separated clauses are dense but readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description should do more. It explains the restore process and confirm requirement but leaves key parameter valid values and sibling distinction to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all four parameters. It only clarifies 'confirm=true required' and vaguely implies that backup_name and component identification are involved. It says nothing about valid component_type values, filename semantics, or how backup_name matching works.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: restore a matching backup to a workspace component. It clearly distinguishes itself from backup_component but does not explicitly differentiate from the very similar sibling pvsyst_restore_archived_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a key prerequisite, 'confirm=true required', which is useful usage guidance. However, it gives no guidance on when to use this versus restore_archived_component, restore_variant, or restore_project_archive, all of which sound closely related.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_restore_project_archiveC
[Projects & Variants] Restore a complete archived project or one archived variant; confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| project | Yes | ||
| archive_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the confirm gate, but says nothing about whether the restore overwrites existing project/variant state, whether it is reversible, what permissions are needed, or what a success response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource scope front-loaded and the confirm requirement appended. Efficient, though the category tag adds little and the sentence is arguably too compressed to be self-sufficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and three entirely undocumented parameters, the description is under-specified — an agent still has to guess at archive naming and the consequences of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must compensate. It explains only `confirm`; it gives no meaning for `project` (name vs. ID) or `archive_name` (format, whether it must match an existing archive entry).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Restore) and resource (archived project or one archived variant), which is far more informative than the bare name. It does not, however, distinguish itself from the sibling `pvsyst_restore_variant` or `pvsyst_restore_project_sources`, so the agent cannot tell which restore entry point to pick.
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 the `confirm=true` invocation requirement but never says when this tool should be chosen over `pvsyst_restore_variant`, `pvsyst_restore_component`, or `pvsyst_archive_project`. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_restore_project_sourcesB
[Projects & Variants] Restore every PRJ/VC file from one source/name project transaction, after matching current hashes, a complete transaction manifest and backup hashes. Requires confirm=true and backs up current bytes; legacy sets need manual recovery.
| Name | Required | Description | Default |
|---|---|---|---|
| backups | Yes | ||
| confirm | No | ||
| project | Yes | ||
| expected_files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does well: it discloses that this is a destructive/mutating operation that backs up current bytes first, that confirm=true is mandatory, and that legacy sets will need manual recovery. Missing is what happens on a hash mismatch (abort vs partial restore) and whether the backups are retained afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences after a bracketed category tag; the destructive precondition and the confirm requirement are front-loaded before the legacy-set caveat. No filler, though density borders on cryptic for the object parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested, 4-parameter, mutation-only tool with no annotations and no output schema, the description covers preconditions and safety but omits parameter structure and failure/return behavior. An agent knows the guardrails but not how to construct backups or expected_files correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and two of the four parameters (backups, expected_files) are nested string-map objects whose contents are entirely undocumented. The description mentions confirm=true and gestures at 'hashes' and 'transaction', but never explains the shape or meaning of backups and expected_files, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it restores every PRJ/VC file from a single source/name project transaction, with the matching and manifest preconditions named inline. It is distinguishable from restore_project_archive and restore_variant, though it does not call out those siblings by name.
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 clear preconditions (matching current hashes, a complete transaction manifest, backup hashes) and the confirm=true requirement, which implies when the call is valid. However, it never states when to prefer this over pvsyst_restore_project_archive or pvsyst_restore_variant, nor what to do when the hash check fails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_restore_variantA
[Projects & Variants] Restore a variant snapshot after verifying its current hash; backs up the pre-restore state and requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| project | Yes | ||
| variant | Yes | ||
| backup_name | Yes | ||
| expected_sha256 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well: it discloses that the operation is destructive-but-reversible (pre-restore state is backed up), that a safety gate (confirm=true) exists, and that a hash check guards against restoring the wrong snapshot. It omits what happens on hash mismatch, what permissions are needed, and what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the category tag, the action, and the two safety conditions; nothing is wasted or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations, no output schema, and zero schema descriptions, the safety story is covered but the identification story is not: an agent still cannot confidently populate backup_name or know the failure mode on hash mismatch. Adequate, with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all five parameters, but it only touches expected_sha256 ('verifying its current hash') and confirm ('requires confirm=true'). backup_name is genuinely ambiguous -- is it the snapshot to restore from or the name of the new safety backup? -- and project/variant go unmentioned entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (restore) and resource (a variant snapshot) and adds the mechanism (hash verification), so it is clearly distinguishable from siblings like pvsyst_restore_project_archive or pvsyst_restore_component via the variant scope and the [Projects & Variants] prefix. It stops just short of naming an alternative outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states two real preconditions -- the current hash must be verified and confirm=true is required -- which tells an agent how to invoke it safely. It never says when to choose this over restoring a project archive or how to react if the hash does not match, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_review_engineering_briefA
[Engineering] Review caller-structured cited engineering facts before a native project exists. Aggregate same-scope conflicts, whole-string and block quantities, declared DC/AC arithmetic, nameplate Pmax versus Vmp*Imp and missing exact PAN/OND/hourly weather. Use explicit count/W/kW/kWh/V/A/deg/m units and PDF physical page citations; no automatic unit conversion, chapter selection, equipment or topology inference. Readonly with no files, PDF, native executable, license, network, GUI or INI access. Source quotes remain caller declarations. Returns blocked or needs_review only; even consistent facts do not certify equipment, physics or engineering readiness.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares readonly status, enumerates absent capabilities (no files, PDF, executable, license, network, GUI, INI), and discloses that only blocked or needs_review results are returned and that facts are never certified. This is strong side-effect and result-contract disclosure; only idempotency/rate behavior is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and each subsequent sentence adds substantive constraint (checks performed, unit/citation rules, access limits, return contract). It is dense and multi-clause but justified by the tool's complexity, with little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, annotation-free, output-schema-less review tool, the definition covers the essential ground: what it checks, unit/citation conventions, access constraints, and that it returns only blocked/needs_review without certifying readiness. What remains thin is the precise meaning/schema of the blocked vs needs_review outcomes, but overall it is sufficient to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the schema itself is structurally rich (enums for field, unit/scope/pdf_page definitions). The description adds meaning beyond it: it mandates explicit count/W/kW/kWh/V/A/deg/m units and physical PDF page citations, and clarifies that no automatic unit conversion or inference is done — guidance a caller needs to populate the brief correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Review) and resource (caller-structured cited engineering facts) and scopes it clearly with 'before a native project exists,' which distinguishes it from post-project review siblings like pvsyst_review_project_inputs. The named checks (same-scope conflicts, DC/AC arithmetic, Pmax vs Vmp*Imp, missing PAN/OND/weather) make the intended job unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before a native project exists' gives a real timing/context cue for when to reach for this tool. However, it never names an alternative (e.g., pvsyst_review_project_inputs) or states an explicit when-not-to-use condition, so the agent must infer selection among the many review/validation siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_review_project_inputsA
[Projects & Variants] Compare producer-declared source inputs with saved project/variant fields, read-only. preparation_manifest_name is a completed Results/prepare.json from pvsyst_prepare_design_project, optionally carrying cited-source provenance. It is a selected declaration baseline, not authenticated engineering evidence or a job resume. Reads existing project/parameter/reference APIs; one Grid subarray and assigned fixed non-seasonal orientation only. Compare PAN/OND and project/variant SIT/MET filenames, tilt/azimuth at existing editor three-decimal serialization, accepted-plan string/ inverter counts, and explicitly requested loss scalar fields. ModuleQualityLoss is compared to owning PQualityModU/I exactly as the existing editor writes it. Only stored values are compared, not actual runtime effectiveness. Raw default/manual flags are disclosed but not interpreted here, so requested losses retain needs_review. Electrical envelope temperatures/coefficients/current limits and project saved design temperatures are shown separately, not equated by name/unit; year is an execution option, target capacity is a goal rather than an exact field. Source review remains. status=reviewed means no difference in compared saved fields, not design certification; needs_review includes differences, unassessed requested-loss modes or source concerns; blocked means incomplete/ambiguous/out-of-scope baseline or target. All calls report readonly=true/native_consumption_verified=false/runtime_state_observed=false. Never writes records/files, activates GUI, repairs/invalidates geometry, queries a licence, runs annual simulation or reads arbitrary baseline-supplied filesystem paths. Existing production input snapshots reject mixed-state reads. Unsaved user work and native effective solar/weather/physics are not inspected or approved.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes | ||
| preparation_manifest_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral disclosure burden and does so extensively: it states read-only behavior, no writes, no GUI activation, no licence query, no annual simulation, no geometry repair, and no arbitrary filesystem reads. It also explains status semantics and the readonly/native_consumption_verified/runtime_state_observed flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and every sentence appears relevant to the tool's scope, limitations, or status meanings. It is still a dense wall of prose, which makes it harder to scan than a more structured presentation would be.
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 complex tool with no annotations or output schema, the description supplies substantial missing context: compared fields, status meanings, scope exclusions, and read-only guarantees. It is not fully complete because return values are only partially described and the project/variant parameters remain semantically opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives strong semantics for preparation_manifest_name, including its expected path pattern, provenance, and limits, but it does not explain whether project and variant are names, IDs, or another identifier format.
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 opening sentence gives a specific verb and resource: compare producer-declared source inputs with saved project/variant fields, read-only. It also distinguishes this review from the sibling preparation step by naming pvsyst_prepare_design_project and clarifying that the manifest is a baseline rather than authenticated evidence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the prerequisite source of preparation_manifest_name and the read-only review context, including scope limits such as one Grid subarray and fixed non-seasonal orientation. However, it does not explicitly route the agent between this tool and alternatives such as pvsyst_inspect_project or pvsyst_get_variant_parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_review_weatherA
[Sites & Weather] Review one prepared weather CSV against one native result, read-only. csv_name names the prepared standard CSV in workspace/Meteo and native_csv_name the exported hourly result in workspace/Results; year is the strict integer year under review. The CSV is re-inspected with the hash-free value checker, so a historical manifest report is never trusted; the optional acquisition_manifest_name and weather_manifest_name add the stored acquisition provenance and the declared time basis. Provider coverage and native hourly values are compared as measured quantities, and native .MET/.SIT declared fields are read from their file headers only. This review does not certify the effective sun-position time shift inside the native run, does not claim that the endpoint_mean ambient temperature is a measured hourly mean, and does not certify climate extremes. Nothing is written, hashed or simulated. status is blocked or needs_review: review items are listed in the result instead of being dropped, and blocked means the evidence could not be read at all.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| csv_name | Yes | ||
| native_csv_name | Yes | ||
| weather_manifest_name | No | ||
| acquisition_manifest_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden, and it does: nothing is written, hashed, or simulated; the CSV is re-inspected with the hash-free value checker rather than trusting a stored manifest; native .MET/.SIT fields are read from headers only. It also discloses the status vocabulary (blocked vs needs_review) and precisely enumerates what the review does not certify.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, and every sentence carries substantive information. It is dense and runs long, but the length is largely justified by the absence of annotations and an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description covers safety, provenance handling, limitations, and status outcomes. It stops short of describing the review-item structure returned and leaves the successful status value unstated, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it names all five parameters with meaning beyond their titles: which workspace directory each CSV lives in, that year is a strict integer under review, and that the two manifests are optional and supply acquisition provenance and declared time basis.
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 specific verb-plus-resource: review a prepared weather CSV against a native result, read-only. That scope distinguishes it implicitly from the single-file sibling pvsyst_inspect_weather_csv, though it never names the sibling to route the agent explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It makes clear the preconditions (one prepared CSV in workspace/Meteo, one exported hourly result in workspace/Results, an integer year) and repeatedly frames the operation as a review that does not certify specific quantities. It gives no explicit 'use X instead when Y' statement against the nearby weather siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_run_engineering_taskA
[Engineering] Preview or execute an isolated revision of a fixed/UnlimTracking or existing AC-storage project. State the engineering objective, nameplate kWp/source and explicit supported changes. Existing equipment/counts/weather stay inherited; no model fitting or sizing inference. Existing AC storage accepts storage scalar updates and a prepared load_manifest_name; WeakGrid additionally requires the complete availability declaration. The stored load must match its prepared snapshot and site standard UTC offset. Native annual results verify actual load/SOC/AC limits; storage never uses the PV-only E_Grid PR formula. Preview writes nothing. Execution creates a NEW project/VC, reloads via native CLI, runs one complete hourly year, produces native CSV/PDF and records the actual run inputs for comparison and delivery. Existing names stop; failure retains evidence without automatic retry/rollback. Inspect stage and native_consumption_verified as well as status: needs_review can mean a completed run still requiring engineering review.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly: preview writes nothing, execution creates a new project/variant, reloads via native CLI, runs a full hourly year, emits CSV/PDF, records actual run inputs, and retains failure evidence without automatic retry or rollback. It also explains status semantics such as needs_review and native_consumption_verified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and dense with useful constraints, with no obvious filler. It is long and uses compressed semicolon-heavy sentences, but the length is largely justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity, lack of annotations, and lack of an output schema, the description is complete enough for an agent to understand side effects, execution flow, output artifacts, failure behavior, and key status fields. The remaining field-level details are handled by 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?
The schema has low top-level description coverage, but the description adds important semantics for the spec payload: objective, nameplate kWp/source, supported changes, inherited equipment, storage scalar updates, load_manifest_name matching, and the WeakGrid availability declaration. It does not document every nested field, but it compensates for the biggest ambiguities.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: preview or execute an isolated engineering revision of a fixed/tracking or AC-storage project. It makes the scope clear enough to distinguish this from generic simulation tools, though it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when this tool applies, including supported project types, inherited equipment, and the prohibition on model fitting or sizing inference. It stops short of naming specific alternative tools to use for adjacent tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_run_house_taskB
[Simulation] Deliver one AI-authored residential project through existing native entries. Source must be the existing bounded fixed PV-only northern-site template, with identical bound workspace SIT/MET in PRJ/VC. Hardware/counts/angles/losses, source engineering defaults and weather remain inherited and disclosed, never sized or guessed. AI supplies a complete mesh house and one/two placed PV regions in spec; all module counts/source-PAN metadata and native8.1.6CN/DPI96 boundaries remain. Two source orientations require one explicitly named region per orientation1/2, the same PAN/OND, anchor azimuth zero and distinct source planes. Native table properties assign each plane and place its declared coordinates; SHD exports, saved VC and actual GUI reload verify every mesh/region before the annual run. Optional spec.shading_mode=module_layout invokes the native detailed electrical layout path for two landscape zero-spacing, single-string groups and exports ShdElec. Omitting it preserves the original request/checkpoint representation. Optional spec.scene_import_method="native" routes the SAME supported two-fixed-table recipe through the existing headless native importer (no GUI/INI/clipboard) and records the new variant as STORED-only: stored_geometry_verified (and stored_module_layout_verified for module_layout) may be true, while imported/native_geometry_verified/native_reload_verified and native_consumption_verified stay false until the normal CLI simulation consumes that VC. Omitting it keeps the original GUI import route and request/checkpoint shape; unsupported recipes stop with a concrete issue before writing and there is no silent GUI fallback. Preview writes nothing/does not activate or launch GUI; cold execution requires dry_run=false and confirm=true, configured DataPath and NO preexisting native GUI. It exclusively creates a working PRJ/VC0, PVC2 and SFI, opens one owned GUI, imports/ associates/checks/shading-tables/SavesAs one NEW native variant, then normally closes only its actual Popen. Unknown dialogs/unsaved-work questions are not dismissed. A NEW CLI process reloads the saved variant, recomputes native shading and generates the explicit full-year CSV/PDF. Completeness/context/finite columns/GlobShd and source preservation are checked using existing result validators; no replacement PV model. File creation, native save and simulation-consumption remain distinct checkpoints. Results/_house_task.json records the exact request and guarded files; existing artifacts are never overwritten/deleted. Resume requires the IDENTICAL spec and explicit resume=true; no checkpoint PID grants ownership. Partial unverified native saves need inspection, not blind reimport. A failed run keeps its outputs: explicit retry_simulation=true chooses NEW attempt names, without rebuilding the saved scene. A completed retry-free resume revalidates artifacts and runs no new GUI/simulation. Status/phase/issues matter, not just MCP is_error; any unexpected stop retains evidence. Process coordination is one server/workspace RLock, not a global desktop/task service.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| resume | No | ||
| confirm | No | ||
| dry_run | No | ||
| retry_simulation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does substantial work: it enumerates the artifacts created (working PRJ/VC0, PVC2, SFI, one new native variant), the GUI lifecycle (opens one owned GUI, closes only its actual Popen), non-overwrite semantics for existing artifacts, the file/native-save/simulation-consumption checkpoint separation, and the stored_geometry_verified vs. native_consumption_verified flag semantics. Verbosity and unexplained internal jargon ('native8.1.6CN/DPI96 boundaries') keep it from being fully transparent despite the breadth of disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph crammed with domain jargon and capitalized internal steps; the most actionable constraints (preview, confirm, resume) sit in the back half behind opaque setup prose. Bullets or a short front-loaded summary would help an agent parse this substantially faster.
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 a destructive, multi-checkpoint GUI/simulation orchestrator with no annotations and no output schema, the description covers side effects, resumption and retry well, but never states the return value/status shape beyond a JSON checkpoint file path, gives no cost/timing expectation, and offers no sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning; it does explain dry_run, confirm, resume, retry_simulation, spec.shading_mode=module_layout and spec.scene_import_method="native" with real behavioral consequences. But spec.year, spec.report_pages, spec.module_geometry and the NamedPVTablesLayout vs. PlacedPVTableLayout choice are only glancingly covered, leaving several parameters documented nowhere.
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 opening sentence ('Deliver one AI-authored residential project through existing native entries') is vague — 'deliver' and 'entries' don't identify the operation, and the actual action (create a new project/variant from a bounded source template, build a mesh house + placed PV regions, run the annual simulation) only emerges scattered through later clauses. The constraint 'Source must be the existing bounded fixed PV-only northern-site template' partially scopes it, but there is no explicit differentiation from close siblings like pvsyst_run_sourced_house_task or pvsyst_create_house_pv_scene.
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?
Strong conditional guidance: preview writes nothing, cold execution requires dry_run=false and confirm=true with a configured DataPath and no preexisting native GUI; resume requires the IDENTICAL spec plus resume=true; a failed run needs retry_simulation=true, which selects new attempt names. What it lacks is routing against the similar sibling tools, so the agent knows this vs. a sourced house task is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_run_simulationB
[Simulation] Run an existing project/variant. Regular CSV/PDF go to Results. For a single run, csv_name accepts a bare filename (e.g. run01) or a .csv filename (run01.csv); both create Results/run01.csv. Existing outputs are never overwritten. For batch_params_name, leave csv_name/pdf_name empty: the CLI generates UserBatch/UserHourly outputs automatically. Optional inputs live in Models (SFI,RVT), Meteo (MET), UserData (DAT), UserBatch (batch CSV/RVT), or Sites (SIT). Unsupported options fail early. Each run can consume a license execution.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes | ||
| csv_name | No | ||
| end_date | No | ||
| met_name | No | ||
| pdf_name | No | ||
| rvt_name | No | ||
| sfi_name | No | ||
| log_level | No | ||
| site_name | No | ||
| time_step | No | ||
| start_date | No | ||
| params_name | No | ||
| report_pages | No | ||
| batch_rvt_name | No | ||
| report_language | No | ||
| batch_params_name | No | ||
| recompute_shading | No | ||
| synthetic_weather | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries real weight: it discloses write targets (Results, UserBatch/UserHourly), a non-destructive guarantee ("Existing outputs are never overwritten"), fail-early behavior on unsupported options, and critically that each run consumes a license execution. Remaining gaps are the return payload and what partial failure looks like, but the operational profile is well covered.
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 simulation mode and output-destination behavior are front-loaded, and most sentences carry operational information (overwrite policy, batch mode, license cost). It loses a point for hard-wrapped lines that split sentences mid-clause and for a trailing sentence ("Unsupported options fail early") that is light on specifics.
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 19-parameter, no-annotation, no-output-schema mutation-like tool, the description does a credible job on mode selection and side effects but is not complete: several date/report/weather parameters are never explained and there is no statement of what a successful run returns or where the agent should look next (e.g., pvsyst_read_results, pvsyst_read_batch_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 0% across 19 params, so the description must compensate and only partly does: it maps the Sources naming conventions (Models SFI/RVT, Meteo MET, UserData DAT, UserBatch, Sites SIT) and explains csv_name filename-or-bare-name behavior plus the batch_params_name interaction. Entirely unaddressed are start_date, end_date, time_step, report_pages, report_language, recompute_shading, synthetic_weather, and log_level — over a third of the surface is left for the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Run an existing project/variant") and tags itself [Simulation], which is far clearer than a tautology. However, it never differentiates itself from the three sibling simulation entry points (pvsyst_simulate_template, pvsyst_simulate_design, pvsyst_run_house_task), so an agent cannot tell from the description alone which of those to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete when-clause tied to mode: for batch runs use batch_params_name and leave csv_name/pdf_name empty, otherwise single-run semantics apply. But it provides no guidance on when this tool is the right choice versus simulate_template/simulate_design/run_house_task, which is the dominant ambiguity for an agent given the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_run_sourced_house_taskA
[Simulation] Bind cited inputs, prepare a source project without an annual run, then deliver one house. design reuses SingleDesignRequest, but module/inverter require exact loose file_name and capacity/electrical_design must be absent: the existing cited-source helper builds the electrical draft. sources/declarations/goals reuse pvsyst_prepare_sourced_design semantics; an explicit design.target_dc_kw is also an engineering goal, never a guessed rating. Missing/mismatched citations return needs_context and the concrete draft without writes. design.new_project is the NEW source; spec.new_project is a DISTINCT final house project. Complete house/layout/module geometry reuse the existing native house input contract. Dry-run on a fresh source is ready_for_preparation or ready_for_weather, not full house preflight; it writes nothing and launches no GUI. Execution requires dry_run=false AND confirm=true. Source review additionally requires accept_source_review=true, and remains needs_review in the final result; confirmation never certifies source authenticity. Prepared source and house manifests own recovery: resume rechecks request/provenance, canonical inputs and prepared files, then resumes the existing child checkpoint without another preparation/annual baseline. Partial source preparation remains inspectable via its existing recovery transactions, not automatically repeated or silently overwritten. Final annual execution is only the existing native house task. GUI/version/DPI/topology bounds are unchanged. Existing user windows are not taken over, INI is not edited here. Weather assets/source review are checked; the house path does not add hourly comparison against the source weather CSV. It reports weather_native_comparison_performed=false. Raw source text is not persisted or echoed; accepted citation provenance is preserved. No new PV/sizing/dispatch model or general job framework.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| resume | No | ||
| confirm | No | ||
| dry_run | No | ||
| retry_simulation | No | ||
| accept_source_review | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so unusually well: it covers dry-run writes, confirm/accept_source_review requirements, needs_context returns, resume/recovery behavior, no GUI takeover, no INI edits, and raw source text not being persisted or echoed. These are substantive side-effect and safety disclosures beyond what the schema states.
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 purpose is front-loaded, and most sentences contain relevant behavioral or constraint information. However, the body is a dense, clause-heavy paragraph with little structure, making it harder to parse than necessary for an agent.
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 complex orchestration tool with no annotations and no output schema, the description supplies many important statuses, gates, and non-actions. It still omits explicit sibling routing and leaves one top-level parameter (retry_simulation) undocumented, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds important cross-field meaning: module/inverter require exact loose file_name, capacity/electrical_design must be absent, design.new_project differs from spec.new_project, and target_dc_kw is an engineering goal. But with 0% schema description coverage, it still leaves retry_simulation completely unexplained and gives only by-reference semantics for sources/declarations/goals.
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 opening sentence states specific actions: bind cited inputs, prepare a source project without an annual run, then deliver one house. Later text clarifies that final annual execution is the existing native house task, distinguishing this from pure preparation. However, 'deliver one house' and the overloading of new_project remain somewhat jargon-heavy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives prerequisites and execution gates, but never explicitly says when to choose this tool over pvsyst_run_house_task or pvsyst_prepare_sourced_design. It implies sourced/cited input usage but provides no clear alternatives, exclusions, or routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_simulate_designA
[Simulation] Preflight or execute one bounded design flow from declared inputs without the GUI. spec.new_project names the NEW working project and is required. scope is fixed to fixed_unshaded_grid: one subarray, one ordinary fixed plane, a Grid system, PRCorrTemp=False and no active geometry, layout or shading scene. The flow locates exact loose PAN/OND components and an eligible workspace template. If no template or variant is pinned and no candidate is eligible, it can derive a NEW template from the installed 8.1 residential seed, preserving its source fields and declaring the target MPPT counts. It builds the linear design envelope from declared inputs, plans integer capacity, configures the working project and, with dry_run=false, runs the full year. The verified 8.1 workspace root must be named PVsyst8.1_Data. Read-only preflight reports missing standard folders and blocks file conflicts or escaping paths; execution fills missing empty folders without renaming the root or replacing files. weather.mode=existing uses the named workspace SIT/MET pair, weather.mode=csv names a staged standard hourly CSV, and weather.mode=open_meteo acquires one public ERA5 year. Dry-run with open_meteo or a not-yet-created standard template returns ready_for_weather with execution_preflight_complete=false: this is an input/template plan, not a runnable native design. electrical_design requires declared coefficients with units and sources, and source-declared current limits. Voltage/current field names imply V/A when units are omitted; explicitly contradictory units are blocked. Missing required data returns concrete issues; an empty object never becomes ready. losses overrides LIDLoss, PMismMPP and ModuleQualityLoss on the subarray and UFactor on the main array. Every field of spec that is not supplied keeps the template value; no loss, coefficient, temperature or azimuth is fitted, inferred or defaulted, and no design is certified here. status is blocked/ready/ready_for_weather/completed/ needs_review/failed; inspect it, not just MCP is_error. Year is 1969..2068. The returned issues, warnings, transactions and recovery steps state exactly what was and was not changed. Optional spec.report_pages selects native PDF page names; omitted means the complete default report, and invalid lists stop before discovery/weather.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses that no loss, coefficient, temperature or azimuth is fitted or defaulted, that no design is certified, that missing data returns concrete issues rather than a ready state, that preflight blocks file conflicts and escaping paths while execution fills empty folders without replacing files, the year range 1969..2068, and the full status enumeration. It also warns that MCP is_error alone is insufficient and that the returned issues/transactions state exactly what changed.
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 first sentence front-loads purpose well, but the body is a dense wall of clauses with no grouping, repeated hedging phrases ('exactly what was and was not changed', 'not an input/template plan, not a runnable native design'), and several sentences that could be compressed. Given the genuine complexity, most content earns its place, but the structure makes it hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, no annotations, and a deeply nested 2-parameter schema, the description supplies an unusually complete operational picture: preflight vs execution behavior, template derivation fallback, weather sourcing, status enumeration, and return-content guarantees. It stops short of covering the full nested surface (capacity, temperatures, effective irradiance, template_project/variant pinning) that an agent would need to populate spec 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?
Top-level schema coverage is effectively absent, so the description must compensate, and it does for the highest-risk fields: spec.new_project is named as required, weather.mode values are defined, losses overrides are mapped to subarray vs main array targets, electrical_design is described as requiring coefficients with units and sources plus source-declared current limits, unit inference and contradiction rules are stated, and report_pages semantics are spelled out. Gaps remain for template_project, tilt/azimuth, capacity vs electrical_design precedence, and dry_run's default of true is never stated outright.
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 opening sentence gives a specific verb pair (preflight or execute) and resource (one bounded design flow), and pins scope to fixed_unshaded_grid with a concrete description of what that scope excludes (one subarray, no shading/geometry). It never names a distinguishing sibling such as pvsyst_simulate_template or pvsyst_run_simulation, so the agent must infer the boundary from prose alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage conditions are implied richly (dry_run=true for preflight, dry_run=false to run the full year; weather.mode=existing/csv/open_meteo select different sources), but there is no explicit statement about when to choose this tool over the numerous sibling design/simulation tools. The agent gets conditions for how to call it, not when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_simulate_templateA
[Simulation] Preflight or execute one template-to-full-year grid simulation without GUI. Supply an existing valid PRJ/VC, loose text PAN/OND, workspace SIT/MET, tilt, year and a NEW project filename. Missing inputs return field-specific issues. Native MET root date declarations are checked before creating the working project; generic-1990, absent or unreadable dates remain disclosed, not inferred from filenames. Scope: completely checked single subarray/fixed plane, no active shading/layout, PRCorrTemp=False; retain template counts unless capacity is explicitly supplied. capacity plans integer series/strings/inverters against declared design voltages, currents, temperatures, IEC/UL module voltage rating and maximum DC:AC ratio. Require independent unshared 8.1.0/8.1.6, one repeatable inverter/MPPT/string branch, full hardware MPPT population and crystalline PAN at STC; mode/topology stays intact. Design envelope/source are required, not guessed from raw temperature coefficients. No native temperature-model reproduction, hardware selection or design certification. Optional weather_manifest_name binds prepare_weather provenance to the requested year/SIT/MET, explicitly loads native weather, and compares hourly GHI/DHI/Tamb; changed files stop before writes. Conversion/rounding concerns remain needs_review. dry_run=true (default) writes nothing and consumes no simulation execution. dry_run=false copies/configures the project, runs Jan 1 through Dec 31 hourly, validates native context/complete year, and returns energy, standard PR, IL_Pmax, warnings, CSV/PDF/SFI and a persisted JSON manifest with reverse recovery steps. Existing project/output files are never overwritten. Failure retains the original template and working files/backups/manifest; no automatic retry or destructive cleanup. status is blocked/ready/completed/needs_review/failed; inspect it, not just MCP is_error. Extreme IL_Pmax versus STC reference energy triggers a disclosed review heuristic, not a claim of native physical validation or an automatic model repair. Year is 1969..2068 due to two-digit native CSV dates. Restart host for this tool. azimuth overrides the template plane azimuth in -180..180 degrees (zero south, west positive); losses accepts only LIDLoss, PMismMPP and ModuleQualityLoss on the subarray plus UFactor on the whole main array. Template fields left unspecified keep their saved values, and the returned configuration_summary discloses the requested angles and losses; no loss is fitted, inferred or defaulted. Optional report_pages is a nonempty list of native page names (for example ["summary", "losses"]); omit it for the default complete report. Invalid pages stop in preflight, and the request/manifest records the selection. Explicit tracking + tracking_variant selects an existing verified native8.1.6 UnlimTracking template flow instead: omit tilt/azimuth/capacity/losses; exact source PAN/OND database references and equipment counts stay inherited. This branch requires explicit positive nominal_dc_power_kw and printable tracking_power_source; these are declarations cross-checked against native PR, not guessed from names/cached sizing. Loose workspace/builtin model shadows stop; database internals are not inspected or snapshotted. Only CLI8.1.6rev49278, and completed consumption retains needs_review. Reuses create_tracking_variant to create a NEW VC in the isolated clone, then the same yearly native load/report/ context/integrity checks plus finite actual columns and GlobShd. No type conversion, arbitrary geometry or other tracker families. native_consumption_verified becomes true only after validated completion, not engineering certification. Its recovery is review/manual archive of the entire new clone/VC/outputs; no stale per-file undo, automatic retry/resume, deletion or repeat on an existing project/output.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | ||
| year | No | ||
| losses | No | ||
| azimuth | No | ||
| dry_run | No | ||
| variant | No | ||
| capacity | No | ||
| met_name | No | ||
| ond_name | No | ||
| pan_name | No | ||
| tracking | No | ||
| site_name | No | ||
| new_project | No | ||
| report_pages | No | ||
| template_project | No | ||
| tracking_variant | No | ||
| nominal_dc_power_kw | No | ||
| tracking_power_source | No | ||
| weather_manifest_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does most of it: dry_run writes nothing, execution copies/configures the project, runs Jan 1–Dec 31 hourly, validates native context, returns energy/PR/IL_Pmax/warnings/CSV/PDF/SFI plus a persisted manifest, never overwrites existing files, and retains originals on failure. It omits some operational detail an agent might want, such as expected runtime or concurrency limits, and a few preflight checks are only implied by 'field-specific issues.'
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 purpose is front-loaded, but the body is a dense multi-hundred-word block of run-on semicolon sentences mixing scope, prerequisites, parameter semantics, failure behavior, and recovery in no clear hierarchy. Almost every clause carries real information, yet the lack of structure makes it hard to scan; a short bulleted or sectioned layout would preserve content with far better readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter, no-output-schema, no-annotation simulation tool, the description supplies what's missing: status semantics (blocked/ready/completed/needs_review/failed, inspect status not is_error), failure and recovery behavior, overwrite policy, host-restart requirement, and the tracking-branch variant of the flow. Nothing essential to calling it safely appears absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it explains azimuth (-180..180, zero south, west positive), accepted loss keys and their array targets, report_pages semantics and default, tracking branch requirements (nominal_dc_power_kw, tracking_power_source, omit tilt/azimuth/capacity/losses), weather_manifest_name provenance binding, and the year range 1969..2068. It leaves several string parameters (site_name, met_name, pan_name, ond_name, variant, template_project) unexplained beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Preflight or execute one template-to-full-year grid simulation without GUI,' and the scope sentences (single subarray/fixed plane, no shading/layout, PRCorrTemp=False) sharpen what kind of simulation. It does not name a sibling to distinguish from pvsyst_run_simulation or pvsyst_simulate_design, so differentiation is inferred from the template-based flow rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to preflight (dry_run=true, the default) versus execute (dry_run=false), with detailed prerequisites: independent unshared 8.1.0/8.1.6, repeatable inverter/MPPT/string branch, full MPPT population, crystalline PAN at STC, required design envelope. Exclusions are equally explicit: no native temperature-model reproduction, no hardware selection, no design certification, no active shading/layout, no automatic retry or destructive cleanup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_update_componentA
[Components] Edit allowlisted text fields in one workspace component with automatic backup. dry_run returns a diff and candidate SHA without writes. Pass the inspected expected_sha256 to reject stale edits. PAN ISC/Isc and MuISC/muISC are aliases for root physical fields; edits retain the file's spelling and reject duplicate aliases. curve_updates accepts OND Version=8.1.6 single-voltage Converter/ProfilPIO Mode=1 points in watts, or BTR Version=8.1.6 AGM/Gel CapaCourant/Capa_DischRate Mode=1 points as [discharge hours, capacity relative to C10]. BTR requires positive points, increasing X, nondecreasing Y, coverage of 100h and C100/C10 in [1.15,1.45]. Supply the complete table of 4..256 points; X >= 1e-9 and X gaps >= 1e-8. Count changes require point_count_editable from inspection and synchronize NPtsMax/NPtsEff/Point_N rows. Curves require expected_sha256; pass updates={} for curve-only edits. Automatic curves require explicit use_file_curve=true alongside points to clear the root automatic-profile bit. For BTR, this opt-in renames the supplied Capa_DischRate block to CLI's CapaCourant; all other tags and Flags are preserved. Use the current path from inspection. Three-voltage OND, other BTR curves and legacy PAN are read-only. commercial_updates edits/adds the Version=8.1.6 commercial form fields returned by inspection, including dimensions in metres and weight in kg. PAN Width/Height also update LargApp/LongApp when present; absent legacy root dimensions are not added to GUI-format files. Identity changes synchronize a tab-separated root Comment. remarks replaces up to five lines ([] clears); PAN's fifth line may encode functional options. These operations require expected_sha256 and share the preview/backup. Seller prices, flags and model fitting are separate from this form. curve_csv alternatively accepts one path-to-CSV-text entry; never combine it with curve_updates. Header: input_watts,output_watts for OND or discharge_hours,relative_capacity for BTR. Use comma-separated decimal numbers with decimal dots, 4..256 point rows and at most 64 KiB of UTF-8 text. The same curve guards, preview and backup apply. No file is read from a caller-supplied path; supply the CSV contents. Physical behavior requires simulation; derived scalars are not refitted. A no-op returns changed=false without creating a backup.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| remarks | No | ||
| updates | Yes | ||
| filename | Yes | ||
| curve_csv | No | ||
| curve_updates | No | ||
| component_type | Yes | ||
| use_file_curve | No | ||
| expected_sha256 | No | ||
| commercial_updates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly: it discloses backup behavior, dry-run previewing, stale-edit rejection, alias handling, curve validation rules, read-only exclusions, and no-op behavior. It also clarifies that no caller-supplied file path is read for CSV mode.
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 front-loads the main purpose, but it is a dense wall of technical text with no headings or bullets, making it hard to scan. Much of the detail is justified by the complex tool, but the structure could be clearer.
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 10-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is largely complete on behavior and validation. The main omissions are component_type valid values and fuller success-return semantics beyond dry_run and no-op cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does extensively for dry_run, curve_updates, curve_csv, commercial_updates, remarks, use_file_curve, and expected_sha256. However, it does not define allowed component_type values and only partially enumerates the allowlisted keys for the central updates object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: editing allowlisted text fields in one workspace component, with automatic backup. It distinguishes this from adjacent operations such as seller prices, flags, and model fitting, and it identifies read-only component classes.
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 substantial when-to-use guidance: dry_run for diffs without writes, expected_sha256 to reject stale edits, curve_updates versus curve_csv, updates={} for curve-only edits, and when use_file_curve is required. It also marks several cases as read-only, though it does not explicitly name sibling tools to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_update_project_parametersA
[Projects & Variants] Edit an existing project's display title only, preserving its PRJ/VC filenames. project_name requires a strict string of 1..80 printable UTF-8 bytes without controls/surrounding whitespace. Requires one existing owning header Comment, complete recognized PRJ object syntax and the full hash map from inspect_project. No blank name field/default is invented. dry_run returns the full candidate file map and diff without backups/writes; repeated names are no-ops. Non-ASCII names require UTF-8 BOM: existing BOM is preserved, adding one needs explicit add_utf8_bom=true. This changes UTF-8 decoding for the whole PRJ, not merely the title; bom_added is explicit even in a BOM-only transaction. Only changed PRJ bytes are replaced; unchanged VC bytes/timestamps/file IDs stay intact. Full-project snapshots and final file-set guards are reused. Restore using restore_project_sources with the returned backups/files map. Does not rename IDs, change sources, nested names, physical settings or VC names. This is the GUI project-name field, not its filename-based window caption. Close a loaded GUI project before editing its file; inspect again after GUI saves. The 1..80-byte limit is the verified adapter contract, not a native GUI limit. BOM-less UTF-8 inspection reads raw text, not effective GUI/CLI decoding. This is optimistic conflict checking, not cross-process locking/crash atomicity.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| add_utf8_bom | No | ||
| project_name | Yes | ||
| expected_files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does it well: dry_run returns the candidate file map and diff without writes, repeated names are no-ops, only changed PRJ bytes are replaced while VC bytes/timestamps/file IDs stay intact, BOM changes affect whole-file decoding, and it is explicitly optimistic conflict checking rather than locking.
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?
Dense but front-loaded, opening with the scope and the filename-preservation invariant before constraints. Nearly every sentence adds operational value (BOM, dry_run, restore, no-ops); it is long but justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, annotation-free, no-output-schema mutation tool, the description covers preconditions, side effects, reversibility (backups map), and edge cases. It stops short of describing the dry_run diff output shape in detail, but gives enough for an agent to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate: it explains project_name's 1..80 printable UTF-8 byte constraint, dry_run's return behavior, and add_utf8_bom semantics. expected_files is only implied via 'the full hash map from inspect_project' and the project param's identity is lightly covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: editing an existing project's display title only, preserving PRJ/VC filenames. It explicitly distinguishes itself from filename-based naming and from sibling mutation tools (update_project_sources, update_variant_parameters) by listing what it does not touch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong preconditions: requires an existing owning header Comment, complete recognized PRJ syntax, and the full hash map from inspect_project; close a loaded GUI project before editing and re-inspect after GUI saves; restore via restore_project_sources. It doesn't explicitly enumerate alternative siblings for related edits, but the workflow context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_update_project_sourcesB
[Projects & Variants] Persist a workspace SIT/MET pair across PRJ and all VC snapshots with full-project SHA preconditions and byte-identical backups. Existing MET origin metadata in each variant remains historical; verify via CLI output.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| met_name | Yes | ||
| site_name | Yes | ||
| expected_files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose important behavior: full-project SHA preconditions and byte-identical backups. It also notes that existing MET origin metadata in variants remains historical, though it omits permission requirements and failure-mode 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, front-loaded with the main action and followed by important behavioral caveats. There is no filler; every sentence contributes to understanding the operation.
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 complex mutation tool with four required parameters, a nested object, no annotations, 0% schema description coverage, and no output schema, the description is not complete enough. It explains some behavior but leaves the most important parameter semantics unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate, but it only indirectly references SIT/MET concepts. It does not explain the project parameter, the expected_files object, required SHA format, or how site_name and met_name are interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific mutation: persist a workspace SIT/MET pair across the PRJ and all VC snapshots. It is clear to a domain user, though it relies on jargon and does not explicitly contrast itself with the sibling restore_project_sources tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does not say when to use this tool versus restore_project_sources, update_project_parameters, or other source-related operations. The intended use is only implied by the purpose statement, with no prerequisites, exclusions, or alternative-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_update_variant_componentsA
[Projects & Variants] Replace existing PAN/OND/BTR/GEN references only, with backup and SHA guard. Use pvsyst_get_variant_components to obtain the current expected_sha256. subarray_id requires a strict JSON integer, not a boolean, string or float.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| updates | Yes | ||
| variant | Yes | ||
| subarray_id | No | ||
| expected_sha256 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description still discloses key mutation behavior: it replaces existing references only, performs a backup, and enforces a SHA guard. It does not cover permissions, atomicity, or return behavior, but the core safety semantics are unusually well surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no wasted text. The scope and prerequisite are stated before the type caveat, which is appropriate for an agent scanning the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and zero schema description coverage, the description covers the critical SHA prerequisite and backup behavior. However, it is not complete enough about the nested updates payload or the project/variant parameters, leaving meaningful invocation gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains expected_sha256's source and the strict integer requirement for subarray_id, but it leaves project, variant, and especially the nested updates object unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: replace existing PAN/OND/BTR/GEN component references in a variant. The word 'only' clarifies that it does not update other variant parameters, and it names the sibling used to obtain the required SHA value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly directs the agent to call pvsyst_get_variant_components first to obtain expected_sha256, which is a clear prerequisite. It also implies that this tool is only for component references rather than general variant parameters, though it does not spell out 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.
pvsyst_update_variant_parametersA
[Projects & Variants] Edit existing validated parameters or display name with SHA guard and rollback backup. variant_name changes only one owning header Comment, not the VC identifier, filename, project or nested names. Requires printable single-line text of 1..80 UTF-8 bytes, no surrounding whitespace; bool/numeric values stop at SDK. Missing/duplicate/late root names stop rather than inventing a field. Returns name_change before/after. Existing preview/no-op/restore apply; display-only names need no shading remapping and may accompany ordinary scalar updates. Mode/sharing toggles stay separate. This is not file/variant-ID renaming. Non-ASCII names require an existing UTF-8 BOM or explicit add_utf8_bom=true; that option requires variant_name and changes decoding of the entire VC. bom_added is returned for name transactions, including a marker-only change with unchanged name/text diff. Existing BOM/newline style and formal recovery are retained; no implicit marker insertion or ANSI transcoding. Strict JSON booleans only, not strings/numbers. Raw inspected names do not prove correct native decoding of a BOM-less file. Ordinary non-name edits preserve encoding. dry_run returns a candidate hash/diff without writing. Subarray/orientation/ main-array dictionaries require strict numbers, not booleans or numeric strings. main_array_updates supports existing owning UFactor (constant Uc, W/m2/K) in adapter range [15,100]. Requires one Grid main array with Flags=$00100400, Flags2=$082A, all subarrays declared 8.1.0/8.1.6, no active geometry/layout. This changes the whole main array, not the selected subarray. Flags, wind terms, absorptance and efficiency fields are preserved; no fitting, inferred defaults or transient/wind model edits. Low-value behavior is unverified. Target subarray_id/orientation_id require strict JSON integers, not booleans, strings or floats; numeric dictionary values retain their separate rules. subarray_updates also supports existing root LIDLoss in percent [0,100], text 8.1.0/8.1.6 Grid subarrays without active geometry/layout. It does not infer module technology, change flags, recompute defaults or fit losses. Existing root PMismMPP in percent [0,100] is supported for declared 8.1.0/8.1.6 Grid subarrays without active geometry/layout and with one hexadecimal owning Flags. Setting PMismMPP also clears only default-mismatch bit 0x00040000 so the saved value is consumed; other flags/losses stay intact. Returns mismatch default_before/default_after. Restore the snapshot to recover default mode; this does not fit losses or recalculate the native default. ModuleQualityLoss is a semantic subarray_updates key in adapter percent range [-5,20], negative means gain. Requires verified declared 8.1.0/8.1.6 Grid, no active geometry/layout, unique existing owning PQualityModU/I and hexadecimal Flags. It synchronizes both U/I saved values and clears only quality default bit 0x00100000; PQualityModP, other flags/losses/fields remain unchanged. Raw U/I/P are read-only inspection fields, not independent quality setters. Returns module_quality default_before/default_after; restore recovers default mode. No native-default calculation, tolerance inference or model fitting; this bounded paired mapping is verified on an unshaded generic mono grid case. generator_updates supports text 8.1.0/8.1.6 SystemType=Battery: enabled (only system Flags bit 0x20), filename (existing GEN), operating_power_kw (>0), and thresholds mapping string subarray IDs to VBkUpEncl_syst/VBkUpDecl_syst values in [0,1]. These are native normalized voltage thresholds, not SOC. Missing generator fields can be added. Enabling requires a valid GEN, positive power and both thresholds in every subarray. Disabling preserves its saved configuration. Nominal power/fuel consumption remain component fields. NModSerie edits integer series-module count directly, preserving parallel strings, input grouping and mode. Native model derives module count/operating voltage; hardware voltage/current sizing, shading remapping and loss fitting are not performed. Series edits, angle edits and structural/count/mode edits stop before writes for active scenes/tables or any module-layout block; cached module/string mapping is not remapped. Angle edits additionally require a flat non-averaged FixedPlane, explicit Flags=$00 if present, and absent/unique False UsesTiltAver/UsesAzimAver/UsesSlopeAver. Legacy angle scalars may omit Flags; topology edits still require explicit Flags=$00. subarray_updates NInverter (integer 1..10000) scales ordinary grid inverter groups; NStringCh (positive 32-bit integer) proportionally scales parallel StringNode counts. They may be combined. NInverter alone preserves strings per inverter; NStringCh alone preserves inverter count. All group/leaf allocations must remain integral; declarations and NElements are synchronized together. Requires consistent unshaded fixed-plane counts, NInvMPPT=1 without the independent $0400 subarray flag, no shared power and no explicit MPPT branches. NInvMPPT (integer 1..10000) separately scales existing explicit MPPT groups for verified Version=8.1.0/8.1.6 independent $0400 subarrays with PowerSharingInverterId=-1 and complete exclusive allocation. It preserves inverter/leaf counts and mode, synchronizes total input/string declarations, and requires integral groups and explicit edited NElements. NInverter alone also scales verified Version=8.1.0/8.1.6 independent exclusive inverter groups, synchronizing NInverter, total NInvMPPT and strings while preserving MPPT/leaf multiplicities and mode. Changed inverter NElements must be explicit; all resulting group/input/string counts must be integral. Do not combine this independent-mode operation with NInvMPPT/NStringCh; shared parents stay closed. NStringCh alone also scales explicit parallel leaves in verified Version=8.1.0/8.1.6 unshared independent mode while preserving MPPT/inverter multiplicities; integral explicit leaf counts are required. NStringCh alone also supports a member of one bounded Version=8.1.0/8.1.6 shared parent (matching member versions, common fixed plane, complete allocation, group 0/-1); only its owned leaves/root strings change, not peer members, inputs, sharing or nominal tags. Group 0 must have no outside references. Returns capacity.shared_parent_line; native automatic budgets may change. Do not combine NInvMPPT with NInverter/NStringCh/NoOrientation. No hardware limits or loss/nominal-power refitting is performed. Other system bits and field type are preserved. NoOrientation (positive integer) reassigns the selected subarray to an existing ordinary fixed plane: sequential counted TOrientGroup IDs, flat Flags=$00 non-averaged source/target, fully checked exclusive ordinary branches without explicit MPPT, or verified Version=8.1.0/8.1.6 independent $0400/direct-MPPT branches with disabled sharing -1 and complete declared input counts, and all strings in one orientation are required. Circuit-level orientation references remain unsupported. Every defined plane must retain an assigned subarray. Leaves planes/list counts and circuit quantities unchanged; no automatic pruning or shading remap. Returns orientation_assignment before/after. power_sharing_enabled separately toggles all members of the existing bounded shared parent containing subarray_id. Requires complete counts, Version=8.1.0/8.1.6 independent $0400 members with matching declared versions, the same inverter and fixed plane, all member strings in that plane, and exclusive use of group 0. Synchronizes member PowerSharingInverterId=0/-1 and only Flags bit $0100; preserves topology, quantities, mode, nominal tags and loss parameters. No topology creation, arbitrary group IDs or manual allocation. Do not combine with other parameter updates. Returns power_sharing before/after. independent_mppt_enabled separately switches verified Version=8.1.0/8.1.6 exclusive explicit MPPT layouts with PowerSharingInverterId=-1, complete unshaded fixed-plane counts and all strings in one orientation. It changes only $0400 and NInvMPPT (explicit input total when enabled, 1 when disabled). Requires all owned inverter children explicit MPPT; preserves circuit and other flags/counts, components/nominal/loss tags. Model power interpretation changes; hardware allocations are not redesigned. Returns mppt_mode. soiling_updates configures the native whole-array Soiling block in a separate transaction (variant_name may accompany it). mode=none removes that block; constant requires yearly_loss_pct; monthly requires twelve monthly_loss_pct. Percent values are 0..100 in 0.1 percentage-point increments, matching GUI save precision. Verified scope: 8.1.6 PV-only Grid, one unshaded fixed plane/subarray, main Flags=$00100400/$01900400, Flags2=$082A. Flags and unrelated fields stay unchanged; no irradiance/yield calculation, legacy or file-based soiling edits. grid_limit_updates is a separate transaction (variant_name may accompany it). mode=constant requires positive limit_kw in 0.1 kW increments: native active power at the injection point, with separate grid-curtailment loss. mode=none clears the active-limit bit and removes its scalars, preserving the inactive location bit. Verified 8.1.6 PV-only single-subarray/fixed-plane/unshaded scope; PF, loads/storage, file-based limits and other system modes stop before writes. This is not bit27 export permission, kVA, storage peak shaving or external output clipping. Original native calculations and existing rollback apply. auxiliary_updates is separate (variant_name may accompany it). constant requires explicit operating_kw and night_kw >=0 in 0.01 kW increments for the whole system; native operating power applies above the verified zero inverter-output threshold, not a clock schedule. none clears native bit18 and removes auxiliary powers. Verified 8.1.6 PV-only fixed/unshaded scope; PF, grid limits, loads/storage, proportional/threshold fields stop before writes. Native negative E_Grid is retained, not clipped; no external auxiliary load or energy calculation. seasonal_updates is separate and configures native SeasonalTilt from a verified FixedPlane or SeasonalTilt: explicit summer_tilt/winter_tilt in 0..90 degrees, 0.1-degree steps, and 1..11 distinct winter_months integers in 1..12. Optional orientation_name changes the owning plane label; azimuth is preserved. Require one 8.1.6 PV-only Grid subarray/plane, complete circuit allocation, no geometry/layout, free horizon and plain system Flags. Averaged planes, trackers, loads/storage and coupled system modes stop before writes. Zero fixed BaseSlope is removed as native GUI does. This is not a fixed-mode switch; restore the snapshot to recover the source. No angle or season model is implemented outside PVsyst. horizon_updates is separate: none removes the native far-horizon block; profile requires profile_name and 4..100 increasing [azimuth, elevation] points in native degrees, 0.1-degree steps, x=-180..180, y=0..90. All-zero profiles use none. Fixed-plane plain PV-only Grid scope; no trackers, seasonal modes, loads/storage, PF/aux/grid-limit coupling or near-shading/layout edits. Native FracAlbedo=1 stays inherited. New or changed points use the GUI profile template without stale derived factors; name-only updates preserve them. PVsyst computes interpolation, diffuse and losses. inverter_temperature_updates is separate and requires an ordinary single free-horizon PV-only Grid plane, with no load/storage/PF/aux/grid-limit coupling or geometry. mode ambient removes both native temperature fields; offset/fixed require both offset_c and fixed_c explicitly, including the inactive saved value, with no default. Both values are degC in adapter range [-100,100], 0.1-degree steps: this is an adapter support envelope, not a native GUI or manufacturer limit. Only system temperature mode bits and TempShift/TempFixed change; module Uc and OND curves stay unchanged. PVsyst alone calculates inverter temperature and derating. power_factor_updates is separate (variant_name may accompany it), for native 8.1.6 PV-only single fixed-plane/free-horizon Grid systems without geometry, loads/storage, temperature, auxiliary or grid-limit coupling. mode none removes PF fields; constant requires tan_phi, monthly requires twelve monthly_tan_phi in January-to-December order. Require explicit pnom_limit native/active/apparent; only none requires native; constant/monthly accept all three. Values are signed dimensionless native tangent values in adapter range [-1,1], 0.001 steps, not cosine values or manufacturer limits. GUI leading uses negative, lagging positive; native PVsyst alone computes power and derating. Legacy active/apparent select inverter PNom interpretation, not injection limits, and do not change OND hardware data. p50_p90_updates edits an existing GUI-produced P50 result template, separately from physical changes (variant_name may accompany it). Supply all fourteen native keys: SpecYear/TMY kind, two ordered integer percentiles 51..99, report booleans, PlotKind=1, explicit year deviation and six variability percentages, and a custom ASCII label. YearDevFromAver is percent in [-100,100], variability fields percent in [0,100], all using 0.001 steps; these are adapter domains, not scientific bounds. CustomVarLabel requires 1..80 printable trimmed ASCII bytes. Require native 8.1.6 plain PV-only single fixed/free-horizon Grid, root Flags=$01800001 and one existing flat P50_P90=TP50_P90 block; no creation/deletion, unknown ClimateChange, cumulative plot or coupled physical changes. Native root flags and cached results stay unchanged. Unchecked GUI boxes retain manual values; checked boxes restore native defaults, not include/exclude terms. Native PVsyst alone computes probabilities and reports. power_controls_updates is a separate combined PF/grid transaction (variant_name may accompany it); old power_factor_updates/grid_limit_updates stay separate. Supply power_factor using its existing shape and grid_limit with explicit mode, quantity active/apparent and point injection/inverter. Constant also requires positive limit in 0.1 native units (kW active, kVA apparent), separate_loss bool; none supplies neither. No conversion from tangent or independent power model. Only observed native flag families are accepted: monthly/Legacy with an enabled limit require injection/separate loss. Monthly plus Legacy with an enabled limit supports active quantity only. An enabled inverter-point limit requires constant/native PNom/separate loss; combined loss requires constant/native PNom/injection. Enabled NoPF requires active injection/separate loss. Monthly PNom without a grid limit uses explicit active quantity/inverter point. No temperature, P50, storage/load or geometry coupling. Inactive type/location bits are explicit, not silently reset. The shared 8.1.6 PV-only single fixed/free-horizon/count gates remain in force. string_mismatch_updates is separate (variant_name may accompany it), for native 8.1.6 PV-only single fixed-plane/free-horizon Grid subarrays: mode default clears the manual value and sets the native default bit, constant writes one manual loss_percent (adapter envelope 0.01..100, 0.01 steps; zero is mode default). auxiliary_updates profile has two verified families -- constant power with its threshold, or proportional W/kW with its threshold -- and requires all five values explicitly with night_kw = 0; the old constant/none shapes are unchanged. ageing_updates is separate (variant_name may accompany it) and applies only to an existing activated ageing template: it writes simulation_year and annual_module_degradation_percent, optional keep_mc_values and a paired modules_rms_year_isc_percent/modules_rms_year_voc_percent (adapter 0..100 percent, 0.01 steps). Stored factors and warranty lists are preserved; no degradation or stochastic sampling is computed. The retention flag is a native input; sample-array persistence is not verified. ageing_enabled is a separate strict boolean transaction for an existing fully validated template, toggling only main-array Flags2 bit20; it never creates a block or activates an unsupported template. Disabled templates remain readable but must be enabled before model editing. Zero rate is a value, not the disabled state. iam_updates is separate too and covers only the component IAM bit or the ASHRAE model with an optional b0; PAN files and curve data are never written. system_unavailability_updates={"mode":"none"} separately removes one existing native Periods SystemUnavail child and its owning system tag. It is limited to the verified 8.1.6 PV-only single fixed/free-horizon template, with no P50, loads or storage. It does not generate periods or edit grid availability. Restore the returned transaction backup to recover the original native schedule; clearing a flag alone is not sufficient. No-op edits create no backup.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project | Yes | ||
| variant | Yes | ||
| iam_updates | No | ||
| subarray_id | No | ||
| add_utf8_bom | No | ||
| variant_name | No | ||
| ageing_enabled | No | ||
| ageing_updates | No | ||
| orientation_id | No | ||
| expected_sha256 | Yes | ||
| horizon_updates | No | ||
| p50_p90_updates | No | ||
| soiling_updates | No | ||
| seasonal_updates | No | ||
| subarray_updates | No | ||
| auxiliary_updates | No | ||
| generator_updates | No | ||
| grid_limit_updates | No | ||
| main_array_updates | No | ||
| orientation_updates | No | ||
| power_factor_updates | No | ||
| power_sharing_enabled | No | ||
| power_controls_updates | No | ||
| string_mismatch_updates | No | ||
| independent_mppt_enabled | No | ||
| inverter_temperature_updates | No | ||
| system_unavailability_updates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses critical behavior: SHA guarding, rollback backup, dry-run candidate hashes, no-op backup behavior, strict typing requirements, BOM handling, preservation rules, and many returned before/after fields. It also states what is not performed, such as fitting, inferred defaults, or native recalculation.
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 purpose is front-loaded, but the description becomes an extremely dense wall of text with long run-on sentences and little structural separation between update families. Much of the detail is relevant for this complex tool, but readability and scanability suffer significantly.
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 28-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is remarkably complete about preconditions, verified scopes, transaction separation, return fields, and unsupported cases. An agent has enough context to understand behavior and constraints, even if the presentation is hard to parse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates heavily by explaining variant_name semantics, add_utf8_bom behavior, subarray/orientation ID typing, and the meaning and constraints of many nested update families. It adds substantial meaning beyond the bare schema for most complex parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: editing existing validated variant parameters or a display name, with SHA guard and rollback backup. It distinguishes some boundaries, such as not being file/variant-ID renaming, but does not explicitly route to sibling tools like pvsyst_update_variant_components.
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 extensive when/when-not conditions for each update family, including scope gates, separate transaction requirements, and combination restrictions. However, it rarely names alternative sibling tools, so routing between tools is left mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pvsyst_validate_componentC
[Components] Check format and known fields; only a simulation verifies PVsyst model behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| library | No | workspace | |
| filename | Yes | ||
| component_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden. It does add genuine value by scoping what validation means (format and known fields only, not model behavior) — that's a real limitation an agent should know. However, it says nothing about side effects (is it read-only?), what a failure looks like, or whether it can touch or mutate the library.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the bracket tag and the core claim, followed by the limitation — no filler. It is terse to the point of being slightly under-informative, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with zero schema documentation and no output schema, the description should explain the library/workspace scoping and what a successful validation returns (a pass/fail verdict? a list of unknown fields?). Neither is covered, so an agent cannot confidently construct the call or interpret the result from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters, so the description must compensate and it largely does not. It only hints that the target is a component with "known fields," giving no meaning for filename, component_type values, or the library parameter's "workspace" default and its alternatives — the single most confusing parameter is left completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it will "check format and known fields" of a component, which is a real verb+resource claim, but it never states what kind of file or which artifact is being validated (the reader must infer from the tool name that it is a PVsyst component file). It also doesn't distinguish itself from the sibling pvsyst_validate_variant_structure, which performs a superficially similar validation role.
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 clause "only a simulation verifies PVsyst model behavior" implicitly routes the agent toward a simulation tool (e.g. pvsyst_simulate_design / pvsyst_run_simulation) when semantic verification is needed, which is useful context. But no tool is named, no prerequisite is stated (e.g. must the component exist in a library first?), and there is no explicit 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.
pvsyst_validate_variant_structureB
[Projects & Variants] Check orientation IDs/references and counted TOrientGroup lists (including planes without an assigned subarray), grid circuit references and serialized inverter/string counts. Dome/unknown list quantities are reported as unchecked. grid_circuit lists grouped branches and counts; multiple inverter groups can belong to one subarray. Explicit MPPT-node counts do not establish independent-MPPT simulation mode. Verified Version=8.1.0/8.1.6 subarrays with $0400 compare explicit inputs against NInvMPPT directly; diagnostics leave this comparison unset for other modes/implicit layouts. Bounded shared parents return ordered subarray_ids and power_sharing_id; member shared_inverter_lines mark overlapping references, and totals count each parent once. Requires explicit owned MPPT/string children, matching Version=8.1.0/8.1.6 independent members with matching declared versions and inverter references, and common group 0 or all -1. Other shared/unknown allocation reports incomplete checks. valid is false for issues, null for incomplete checks, true when scoped checks pass. This is not voltage/current or physical validation.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | ||
| variant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses that dome/unknown list quantities are 'unchecked', explains the tri-state `valid` semantics (false/null/true), describes version-specific MPPT comparison behavior, and returns subarray_ids/power_sharing_id for shared parents. It does not state permissions or read-only nature explicitly, but the validation nature is evident and the result-side behavior is unusually well disclosed.
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?
Every sentence carries real behavioral content, but the text is a wall of internal jargon (TOrientGroup, $0400, MPPT nodes) with no front-loaded summary and no paragraph separation, making it hard to parse quickly for tool selection. It is information-dense rather than wasteful, but poorly structured for an agent scanning options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description compensates well by explaining the `valid` field semantics, the 'unchecked' reporting behavior, and returned fields for shared parents. Given the tool's complexity, an agent has enough to understand what a call returns, though the unexplained parameters leave a residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (`project`, `variant`) have 0% schema description coverage, and beyond the parenthetical "(Projects & Variants)" header the description never explains what these references are or how to obtain them. The description thus does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specifically what it checks: orientation IDs/references, grid circuit references, serialized inverter/string counts, and shared parent allocation. It also explicitly excludes other kinds of validation ("not voltage/current or physical validation"), which helps differentiate it from validate_component. It loses a point only because there is no single front-loaded verb+resource sentence stating 'validate variant structure', so the reader must assemble the purpose from a list of internal checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use/when-not guidance or routing to alternatives (e.g., validate_component or get_variant_components). The requirements it lists (owned MPPT/string children, matching Version=8.1.0/8.1.6, common group 0/all -1) are preconditions for a passing result rather than guidance on when to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
82 tool updates
v0.1.0- First observed
pvsyst_acquire_weather - First observed
pvsyst_archive_component - First observed
pvsyst_archive_project - First observed
pvsyst_archive_variant - First observed
pvsyst_backup_component - First observed
pvsyst_build_monthly_weather - First observed
pvsyst_build_sfi - First observed
pvsyst_build_sourced_component - First observed
pvsyst_capabilities - First observed
pvsyst_clone_component - First observed
pvsyst_clone_project - First observed
pvsyst_clone_subarray - First observed
pvsyst_clone_variant - First observed
pvsyst_compare_components - First observed
pvsyst_compare_engineering_scenarios - First observed
pvsyst_convert_meteo - First observed
pvsyst_copy_component - First observed
pvsyst_create_ac_cabling_variant - First observed
pvsyst_create_component - First observed
pvsyst_create_dome_allocation_variant - First observed
pvsyst_create_grid_storage_system - First observed
pvsyst_create_grid_storage_variant - First observed
pvsyst_create_house_pv_scene - First observed
pvsyst_create_load_variant - First observed
pvsyst_create_mv_night_disconnect_variant - First observed
pvsyst_create_native_dc_cabling_variant - First observed
pvsyst_create_native_load_variant - First observed
pvsyst_create_peak_shaving_variant - First observed
pvsyst_create_project - First observed
pvsyst_create_shed_geometry_variant - First observed
pvsyst_create_site - First observed
pvsyst_create_tracking_variant - First observed
pvsyst_export_engineering_delivery - First observed
pvsyst_export_logs - First observed
pvsyst_get_component - First observed
pvsyst_get_variant_components - First observed
pvsyst_get_variant_parameters - First observed
pvsyst_import_house_pv_scene - First observed
pvsyst_inspect_project - First observed
pvsyst_inspect_weather_csv - First observed
pvsyst_license_activate - First observed
pvsyst_license_deactivate - First observed
pvsyst_license_info - First observed
pvsyst_license_sync - First observed
pvsyst_list_components - First observed
pvsyst_list_projects - First observed
pvsyst_list_variants - First observed
pvsyst_open_native_project - First observed
pvsyst_prepare_block_project - First observed
pvsyst_prepare_design_project - First observed
pvsyst_prepare_load_profile - First observed
pvsyst_prepare_sourced_design - First observed
pvsyst_prepare_weather - First observed
pvsyst_project_components - First observed
pvsyst_project_handoff - First observed
pvsyst_read_batch_results - First observed
pvsyst_read_house_pv_scene - First observed
pvsyst_read_results - First observed
pvsyst_read_rows - First observed
pvsyst_remove_subarray - First observed
pvsyst_resolve_location - First observed
pvsyst_restore_archived_component - First observed
pvsyst_restore_component - First observed
pvsyst_restore_project_archive - First observed
pvsyst_restore_project_sources - First observed
pvsyst_restore_variant - First observed
pvsyst_review_engineering_brief - First observed
pvsyst_review_project_inputs - First observed
pvsyst_review_weather - First observed
pvsyst_run_engineering_task - First observed
pvsyst_run_house_task - First observed
pvsyst_run_simulation - First observed
pvsyst_run_sourced_house_task - First observed
pvsyst_simulate_design - First observed
pvsyst_simulate_template - First observed
pvsyst_update_component - First observed
pvsyst_update_project_parameters - First observed
pvsyst_update_project_sources - First observed
pvsyst_update_variant_components - First observed
pvsyst_update_variant_parameters - First observed
pvsyst_validate_component - First observed
pvsyst_validate_variant_structure
TDQS
Scored across 82 tools
The set has many overlapping tools for creating/editing variants and for running simulations or preparation flows, such as simulate_template, simulate_design, run_simulation, run_house_task, run_engineering_task, and several create_*_variant tools. Descriptions add boundaries, but an agent must parse dense scope gates to choose correctly, and multiple tools appear to cover closely related project/variant/simulation intents.
Most names use a pvsyst_ prefix and snake_case with a verb_noun pattern, e.g. pvsyst_create_project, pvsyst_update_variant_components, pvsyst_validate_component. A few names are noun phrases or less action-oriented, such as pvsyst_capabilities, pvsyst_license_info, and pvsyst_project_components, but the overall convention remains predictable.
With 82 tools, this is far beyond a well-scoped MCP surface and falls into the extreme mismatch category. Even for a broad PVsyst automation domain, many highly specialized variant-creation and preparation tools make the set hard to navigate.
The surface covers project, variant, component, weather, load/storage, simulation, results, licensing, and engineering review lifecycles with create/read/update/archive/restore operations. Coverage is broad, though many tools explicitly stop at bounded subsets, so the lifecycle is comprehensive but not fully complete for every native PVsyst feature.
Maintenance
Related MCP Connectors
Control your authorized Windows computers via OAuth: files, shell, apps, and task status.
1EnergyPlus weather files (EPW, DDY, STAT) and design conditions for any site, OpenStudio-MCP ready.
Manage SysML2 projects; check, evaluate, verify, query, document and diagram models.
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to securely control and interact with a local Windows machine through 218 configurable tools for files, Git, processes, Windows UI, browser automation, WSL, Office, recovery, skills, and child MCP servers.1 npmMIT
- AlicenseAqualityCmaintenanceEnables safe, structured control of Blender on Windows via a standalone STDIO MCP server, providing seven tools to inspect scenes, list and edit materials, transform objects, add modifiers, set smooth shading, and export assets without arbitrary code execution.7Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to operate and monitor Windows workspaces through native tools for filesystem operations, PowerShell execution, background tasks, Windows services, GPU telemetry, PDF generation, and a built-in web gateway/dashboard.24 npm2MIT
- AlicenseAqualityAmaintenanceEnables AI agents to administer a local Windows machine by listing and controlling services, processes, event logs, ports, network lookups and system diagnostics through sharply typed tools. A built-in web interface lets the operator switch every tool on or off individually, with least privilege as the default.2MIT