OpenVSP MCP (Maintained Fork)
OpenVSP MCP is an MCP server that automates OpenVSP geometry creation/inspection/editing and VSPAERO aerodynamic analysis, including sweeps and resumable batch jobs.
Check native binary/API readiness and versions with
openvsp.health.Create template or custom aircraft models from scratch with
openvsp.create_model.Inspect
.vsp3XML geometry metadata without launching OpenVSP.Modify models via trusted AngelScript commands or typed parameter edits, replacing the source only after validation.
Preview models by exporting SVG/STL from a private copy.
Preflight selected geometry sets and reference/unit warnings before solving.
Run single VSPAERO steady subsonic solves with verified artifacts, polars, and numerical-quality reporting.
Run sequential 1–25 condition sweeps while retaining partial results on failure.
Query native capabilities, analysis input types/defaults, and paginated geometry parameters.
Read saved coefficient subsets and bounded log tails without running OpenVSP.
Submit and manage independent batch cases with CPU/parallel-job limits, status, cancellation, explicit resume, and CSV/JSON export.
Serve through stdio, streamable HTTP MCP, or REST endpoints.
openvsp-mcp — OpenVSP and VSPAERO through MCP
A maintained fork of Three-Little-Birds/openvsp-mcp, extending MCP automation for OpenVSP and VSPAERO with geometry inspection, model modification, and aerodynamic analysis. The original MIT license and history are retained.
0.7.0 improves all 16 tool descriptions, parameter/output-field documentation and MCP annotations without changing tool names, input/output structures or OpenVSP/VSPAERO execution. Package identity changes as with any source update; resume old batches with their original runtime. See 0.7 metadata notes.
0.6.0 added durable multi-case analysis with bounded parallel execution, shared CPU admission, progress/cancellation, verified explicit resume and CSV/JSON exports. Each case can change conditions and typed parameters on a private model copy. See the batch guide, native batch regression and reproducible throughput/RSS benchmark. Measured results and coverage limits are in 0.6 validation. The 0.5 API audit and existing single-case workflows remain applicable.
Install
Python 3.10+ and a separate OpenVSP installation are required. Real integration
is verified on macOS Apple Silicon with OpenVSP 3.51.3 / VSPAERO 7.2.2.
Other binary versions/platforms have not been integration-tested. This pipeline
requires the VSPAERO 7 thick/thin geometry-set interface. Binaries are not included.
The MCP SDK is constrained to >=1.20,<2 for the FastMCP 1.x interface.
Keep Python environments, caches, and launchers on each computer's local disk. Source copies, models and result files can be synced; do not sync a venv or copy another computer's absolute-path client configuration. Validate each Mac separately.
git clone https://github.com/rhyne1012/openvsp-mcp.git
cd openvsp-mcp
# Use a local directory outside iCloud/Dropbox for the environment.
python3 -m venv "$HOME/Developer/Codex/.venvs/openvsp-mcp"
. "$HOME/Developer/Codex/.venvs/openvsp-mcp/bin/activate"
python -m pip install '.[dev]'
# Example macOS paths; adjust to this computer's installation.
export OPENVSP_BIN=/Applications/OpenVSP.app/Contents/Resources/vspscript
export VSPAERO_BIN=/Applications/OpenVSP.app/Contents/Resources/vspaero
python -m openvsp_mcp --healthOPENVSP_BIN identifies vspscript, or a vsp accepting -script.
VSPAERO_BIN identifies the solver installation; OpenVSP calls it through its
Analysis API. The wrapper does not pass a .vsp3 directly to the solver.
--describe reports package/SDK versions and a SHA-256 fingerprint of packaged
Python/model files. --health additionally launches a small OpenVSP geometry/API
probe and queries VSPAERO's version; it exits 1 when either check fails. Health
reports the binary paths and whether the version pair matches the tested pair.
Health is a readiness check, not a full solve or a convergence certificate.
For upgrades that preserve the previously selected environment until the candidate passes installation and health checks, see the local installer.
Related MCP server: tigl-mcp
MCP tools
Start with openvsp-mcp or python -m openvsp_mcp (stdio by default). Configure
the client with that computer's absolute Python path and binary environment values.
All tools return structured results. All except openvsp.health take a nested
request object; health takes {}.
Descriptions and nested field documentation are available through tools/list.
Annotations account for temporary files, batch locks and trusted script I/O;
preserving a source model does not mean an operation writes no files.
Tool | Behavior |
| Probe binaries/API; report versions, paths and package fingerprint. |
| Create a four-component aircraft template or custom model without an input file. |
| Read |
| Apply commands, validate the output, then replace the input file. |
| Export SVG and STL from a copy; preserve the source. |
| Check selected geometry sets in the loaded model and report reference/unit warnings; no solver. |
| Prepare and solve one condition; validate artifacts and matching polar; preserve source. |
| Discover analyses, inspect their input types/defaults, or read paginated geometry parameters. |
| Apply typed ID/value edits in one load/update; verify limits and final readback before replacing the source. |
| Read saved coefficient subsets and bounded log tails without launching OpenVSP. |
| Solve 1–25 explicitly specified conditions sequentially; retain partial results on failure. |
| Submit independent cases with per-case parameters, parallel-job and CPU limits. |
| Read paginated progress and detect interrupted batches using an ownership lock; no solver or manifest rewrite. |
| Cancel selected cases or the whole batch. |
| Explicitly retry incomplete cases after verifying inputs and successful artifacts. |
| Export saved case results and metadata as CSV/JSON. |
Batch defaults are sequential, four CPU threads per case, and a four-thread
batch budget. Set max_parallel_jobs and each case's analysis.ncpu together.
OPENVSP_CPU_BUDGET limits shared native work in one server; by default it is the
larger of four and the reported logical CPU count. Requests exceeding this budget
are rejected. Multiple server processes do not share this limit. See the
batch guide for lifecycle, resume and resource semantics.
Create a model:
{"request": {"output_dir": "/absolute/path/runs", "template": "simple_aircraft"}}The template contains a fuselage, main wing, horizontal tail and vertical tail.
Use its returned geometry_path for subsequent calls. template: "custom"
requires set_commands that add geometry to the initially empty model.
Inspect it:
{"request": {"geometry_file": "/absolute/path/aircraft.vsp3"}}Preview accepts the same minimal request. Preflight and solve accept these settings for the bundled aircraft:
{
"request": {
"geometry_file": "/absolute/path/aircraft.vsp3",
"case_name": "single_point",
"output_dir": "/absolute/path/runs",
"timeout_seconds": 600,
"analysis": {
"thick_geom_set": 3,
"thin_geom_set": 4,
"mach": 0.1,
"alpha": 3.0,
"beta": 0.0,
"sref": 12.0,
"bref": 10.0,
"cref": 1.2444444444,
"xcg": 3.0,
"vinf": 34.03,
"rho": 1.225,
"reynolds": 2900000.0,
"length_unit": "m"
}
}
}Set 3 is the fuselage and set 4 is the three lifting surfaces in this template
only. Supply model-specific references and sets for other aircraft. -1 disables
one surface type. Nonexistent/empty selected sets, identical set indices, or actual
geometry overlap between thick and thin sets are rejected before solving.
Preflight does not check surface intersections, mesh quality or physical validity.
Defaults remain all geometry as thin surfaces, no thick surfaces, unit reference
area/span/chord, Mach 0.1 and alpha 3 degrees. Angles are degrees. length_unit
(m, ft, or unspecified) documents your convention; it does not convert
any inputs. Geometry, references, speed and density must use consistent units.
Mach, speed, density and Reynolds are independent; no atmospheric consistency is
derived. Unit references and unspecified units produce warnings, not automatic
corrections.
For a sweep, replace analysis with a conditions list. Each entry is a complete
analysis settings object with the same defaults; settings do not carry over from
one entry to the next. Top-level analysis and run_vspaero are not accepted by
this tool. For example, duplicate the explicit analysis object above and change
alpha to 0 and 3. timeout_seconds budgets the entire batch. Each condition has
its own run directory and verified polar. The batch uses a stable source snapshot.
To edit, call openvsp.modify with set_commands, for example:
{
"request": {
"geometry_file": "/absolute/path/aircraft.vsp3",
"set_commands": [
{"command": "SetGeomName(FindGeom(\"Main_Wing\",0),\"Renamed_Wing\")"}
]
}
}Commands are trusted AngelScript with server-process privileges; use trusted local
clients. Preview/preflight/solve may apply commands to their private copy.
modify and set_parameters replace the original after validation.
Read-only preservation refers to the wrapper's
normal operations; arbitrary trusted script commands can perform their own I/O.
Results and failures
Model creation, editing, preview, preflight and solve create a unique directory under
output_dir, or openvsp_runs beside the source. Creation requires output_dir.
Runs preserve scripts, models, logs and manifest.json; operations on an existing
model also preserve its input snapshot and hash. Solver runs retain .vspgeom,
.vspaero, .adb, .history, .polar, solver.log and history.csv.
Preview adds preview.svg and preview.stl. Sweep batches have sweep.json, with
completed conditions retained if a later one fails. Runs are not automatically deleted.
Responses include absolute artifact paths, coefficients, applied settings, operation, warnings, preflight, numerical quality and package/SDK fingerprint. A solve requires zero script exit status, a unique completion marker, nonempty geometry, fresh nonempty solver artifacts, and one finite polar row matching Mach, alpha, beta and Reynolds. API errors and failures expose run/log paths. POSIX timeouts kill the process group, including the solver; Windows child cleanup has not been integration-verified.
numerical_quality reports observed last-step coefficient changes and the range
of the final five recorded iterations when the history format is recognized.
It explicitly reports convergence_status: "not_assessed" and
mesh_study: "not_performed". Completed execution, small iteration changes, and
sweep success do not establish aerodynamic accuracy or mesh convergence.
Archived scripts read their own snapshot. Rerunning a script can overwrite that run's artifacts; copy the run first when preserving evidence.
Verification
python -m pytest
ruff check .
# Real OpenVSP/VSPAERO required; exercise the legacy and batch tools over MCP stdio:
python examples/simple_aircraft/run_smoke.py
python examples/simple_aircraft/batch_smoke.pyThe real smoke queries native capabilities and analysis defaults, reads and edits
parameters, verifies fixed-wake/GMRES settings, reads saved results, creates and previews an aircraft, verifies source preservation,
checks actual geometry sets, rejects absent/empty/overlapping sets before solving,
renames a wing, rejects an invalid parameter edit, runs one condition and an
alpha 0/3 degree sweep. Full responses are saved in smoke_outputs/smoke_result.json;
set OPENVSP_SMOKE_OUTPUT to choose a different output directory.
The alpha 3 case gives approximately CL 0.233343 and CD 0.00959482. These numbers
verify the workflow, not accuracy, convergence or design suitability.
Hosted CI uses no native binaries. Native smoke testing remains opt-in and must be repeated for each computer and binary version.
New typed operations
{"request": {"kind": "analysis", "analysis_name": "VSPAEROSweep"}}Use kind: "parameters" with geometry_file; optionally select geom_id or
parm_ids, and paginate with offset/limit (default 100, maximum 200).
kind: "capabilities" lists installed analyses. Listing an analysis does not
imply that this wrapper supports running it. Analysis input descriptions are
omitted because of an audited upstream AngelScript binding defect; see the audit.
Call openvsp.set_parameters with geometry_file and
edits: [{"parm_id": "ID_FROM_QUERY", "value": 1.5}]. This operation modifies
the source after validation, like openvsp.modify.
Call openvsp.read_results with a returned manifest_file path and optional
coefficient_names: ["CLtot", "CDtot"], log: "solver", log_tail_lines: 40.
(The execution response calls this path manifest_path.)
For a single solve, set analysis.fixed_wake: true to select official
FixedWakeFlag; the effective file must contain WakeIters=0.
wake_iterations now accepts 3–255 and ncpu 1–255. Values accepted previously
outside these native limits are rejected rather than silently clamped.
forward_gmres_tolerance_factor defaults to 1 and accepts positive values up to
1e12. Wrapper defaults remain explicit; loaded-model/native defaults are reported
separately by query. See the audit for intentionally narrower wrapper limits.
effective_settings reports verified solver-file fields. The request and
analysis_inputs remain the requested values; preflight alone does not verify a
solver file. timings reports preparation/native/validation/total seconds.
Other interfaces
Python exports include CreateModelRequest, SweepRequest, OpenVSPRequest,
VSPAeroSettings, create_model, preview_model, preflight_model, run_sweep,
health_check, execute_openvsp, QueryRequest, ParameterEditRequest,
ResultRequest, query_model, set_parameters and read_results.
HTTP MCP binds to loopback by default:
python -m openvsp_mcp --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp
python -m uvicorn openvsp_mcp.fastapi_app:create_app --factory --host 127.0.0.1 --port 8002REST exposes GET /health (200 ready, 503 unhealthy) and POST /vsp/inspect,
/vsp/create, /vsp/modify, /vsp/preview, /vsp/preflight, /vsp/run, and
/vsp/sweep, /vsp/query, /vsp/parameters, and /vsp/results.
Batch routes are POST /vsp/batch/submit, /vsp/batch/status, /vsp/batch/cancel,
/vsp/batch/resume and /vsp/batch/export.
POST bodies contain the request object without the MCP wrapper.
No authentication is provided; these interfaces are intended for trusted local use.
Maintenance
Keep upstream pointing to the original project and origin to this fork. Use a
small branch per reproducible issue and retain a verified environment before
switching a daily MCP client. See maintenance notes and LICENSE.
Available Tools
16 toolsopenvsp.batch_cancelADestructive
Request cancellation of selected case IDs, or the whole batch when case_ids is empty. Updates live job state and signals active native work; returns current status, so poll openvsp.batch_status for cleanup completion. Preserves successful results and does not delete artifacts; a batch owned by another server must be cancelled through that owner, and retry requires openvsp.batch_resume.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Existing batch and optional cases to cancel. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds critical nuance beyond the destructiveHint=true annotation: it clarifies that cancellation does not delete artifacts and preserves successful results. It also discloses asynchronous cleanup ('poll openvsp.batch_status'), signals active native work, and notes ownership restrictions. No contradiction with annotations; in fact, it refines the meaning of destructive 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 three sentences, front-loads the primary action, and covers essential operational details (state updates, polling, ownership, retry) without excessive verbosity. Slight redundancy with the schema (e.g., empty case_ids meaning) but it does not bloat the text and the unique ownership/retry info earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cancellation tool with asynchronous behavior, the description covers the key actions, parameters, state updates, cleanup polling, artifact preservation, ownership constraints, and retry path. Since an output schema exists, return format is handled. The only minor gap is not specifying the exact effect on in-progress work (only 'signals active native work'), but this is acceptable given the schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both case_ids and batch_directory, and the tool description largely echoes the schema's semantics (empty case_ids means whole batch, unknown IDs fail, successful results preserved). The description does not introduce new parameter-specific details, so a baseline of 3 is appropriate since the schema carries the parameter burden.
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 action ('Request cancellation of selected case IDs, or the whole batch') and clearly identifies the resource (cases/batch). It also distinguishes its default behavior (empty case_ids cancels whole batch) from its sibling batch_resume, which is the opposite operation for retry. This makes the tool's role immediately 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?
Explicitly states when not to use this tool: 'a batch owned by another server must be cancelled through that owner.' It also directs the agent to the alternative batch_resume for retry-non-successful cases, and to poll batch_status for cleanup completion. These clear exclusions and alternative references provide excellent selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.batch_exportA
Export a saved batch manifest snapshot, including inputs, coefficients and pending/failed rows, to results.csv and results.json. Creates a new export directory inside the batch on every call without running a solver, rewriting batch.json or changing existing artifacts. Use openvsp.batch_status for a paginated progress summary or openvsp.read_results for one operation manifest.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Existing batch directory to export without solving. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the sparse annotations by disclosing key side effects: it creates a new export directory on every call, does not run a solver, does not rewrite batch.json, and leaves existing artifacts untouched. This disambiguates the tool's non-destructive but additive 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?
Three sentences, each earning its place: first defines the output contents, second clarifies side effects, third routes to alternatives. No filler or redundant restatement.
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 one simple parameter, a well-documented input schema, and an output schema, the description provides everything an agent needs: purpose, side effects, output artifacts, and sibling alternatives. There are no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already thoroughly documents batch_directory, including that it must be an existing directory at its original absolute location and that a fresh export directory is added there. The description adds output filenames and manifest contents, but no additional parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Export a saved batch manifest snapshot'), the exact resource (batch directory), and the output files (results.csv and results.json). It clearly differentiates itself from sibling tools batch_status and read_results by naming what those tools do instead.
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 routes the agent to alternatives: batch_status for a paginated progress summary and read_results for one operation manifest. This tells the agent when this export tool is and is not the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.batch_resumeADestructive
Explicitly retry selected non-successful cases, or all when case_ids is empty, in an idle batch. Verifies source/snapshot, package and native binary identities, specification and successful artifacts before updating job state and launching background work; successful cases are reused, never rerun. Identity changes including metadata-only package updates are rejected; use the original runtime to resume or openvsp.batch_submit for a new batch.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Idle batch and optional non-successful cases to retry. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint=true, and the description adds substantial context: it verifies identities and artifacts before updating state, reuses successful cases, rejects metadata-only updates, and launches background work. This goes beyond the annotation's simple destructive flag, clarifying the preconditions and side effects. A slight deduction for not detailing the exact state changes or output format, but the behavioral details are strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but information-rich, with each sentence earning its place. It front-loads the core purpose and then details conditions and exclusions. Slightly long for a single paragraph, but structured with semicolons to separate ideas. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (state changes, identity checks, background launch), the description covers the necessary preconditions and behaviors. An output schema exists (though not shown here), so return values are covered. Minor gap: it doesn't mention the exact failure behavior for batch_directory not found, but the schema hints at it. Overall, sufficient 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?
The schema already provides thorough descriptions for both parameters (case_ids and batch_directory), covering coverage 100%. The description adds context by explaining empty case_ids behavior (all non-successful cases) and emphasizing the idle requirement, which is not fully in the schema. This elevates from baseline 3 to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retry selected non-successful cases in an idle batch, with explicit mention of reusing successful cases and rejecting identity changes. It distinguishes itself from batch_submit and batch_cancel by referencing those as alternatives, and the sibling list confirms these exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: for retrying non-successful cases in an idle batch, with conditions (idle batch, source/package/binary identities unchanged). It also states when not to use it (for new batches use batch_submit, or use original runtime for identity changes), clearly routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.batch_statusAIdempotent
Read batch status, counts, resource limits and a paginated case summary, including after restart. Opens or creates .batch.lock to check runner ownership, but does not rewrite batch.json or run a solver. Reports interrupted when a saved running batch has no owner; use openvsp.batch_resume explicitly to retry it.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Existing batch directory and case-page bounds. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it opens or creates .batch.lock to check runner ownership, and that it reports interrupted when a saved running batch has no owner. This adds context beyond the annotations (idempotentHint, destructiveHint) about side effects on the lock file, though it does not detail the lock file's exact behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, starting with the core purpose, then side effects, then the explicit instruction to use batch_resume. Every sentence serves a purpose, though it could be slightly more concise by merging the lock file and owner check details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema and the schema covers all parameters, the description provides sufficient context for an agent to call this tool correctly. It explains the key behavior around .batch.lock and the interrupted state, and directs to batch_resume for recovery. Minor gap: it doesn't explicitly state that the tool is safe to call repeatedly (though idempotentHint is true).
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 already covers all parameters with descriptions (100% coverage), including pagination bounds and the requirement for the batch directory to exist. The description adds the note about the lock file, but the parameter semantics are adequately covered by the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool reads batch status, counts, and a paginated case summary, and explicitly notes that it does not rewrite batch.json or run a solver. It distinguishes itself from batch_resume, a sibling tool, by mentioning the 'running batch has no owner' scenario.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (to read status) and when not to run a solver, and it directs users to use openvsp.batch_resume explicitly to retry interrupted batches. This provides clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.batch_submitA
Submit 1-1000 independent steady cases with per-case settings/parameter edits and bounded parallel jobs/CPU use. Creates a durable batch directory and private model snapshots, then runs OpenVSP/VSPAERO in background workers while preserving the source; returns an initial status without waiting for completion. No automatic retry; use openvsp.batch_status, openvsp.batch_cancel, openvsp.batch_resume and openvsp.batch_export for lifecycle control, or openvsp.sweep for a blocking sequential conditions list.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Shared model, independent cases and batch resource limits. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses highly relevant runtime behavior beyond the sparse annotations: it 'creates a durable batch directory and private model snapshots,' runs 'OpenVSP/VSPAERO in background workers while preserving the source,' and 'returns an initial status without waiting for completion.' It also explicitly states 'No automatic retry,' which is important side-effect information for an agent.
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 dense sentences with no filler. The most important decision-relevant facts are front-loaded: the batch scope, independence, resource bounding, persistence, background execution, source preservation, and non-blocking return. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex batch-submission tool, the description covers the essential operational context: durable artifacts, private snapshots, source preservation, non-blocking behavior, no retries, and routing to lifecycle and blocking-alternative siblings. Since an output schema exists, omitting return-value details is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single request parameter and all nested fields thoroughly. The description adds conceptual framing like 'per-case settings/parameter edits' and 'bounded parallel jobs/CPU use,' but it does not add substantial parameter-level semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Submit 1-1000 independent steady cases with per-case settings/parameter edits and bounded parallel jobs/CPU use.' It clearly distinguishes batch_submit from the batch lifecycle siblings and from openvsp.sweep by contrasting background/non-blocking submission with a 'blocking sequential conditions list.'
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 tells the agent exactly which sibling tools to use for lifecycle control: 'use openvsp.batch_status, openvsp.batch_cancel, openvsp.batch_resume and openvsp.batch_export for lifecycle control, or openvsp.sweep for a blocking sequential conditions list.' It also states that there is no automatic retry, which helps set expectations for when this tool is and is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.create_modelADestructive
Create a new .vsp3 model from the four-component simple_aircraft template or custom trusted AngelScript, without an input model. Runs OpenVSP and retains the model, script, log and manifest in a unique directory under output_dir; no VSPAERO solve. Use openvsp.modify to edit an existing source model.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | New model template and output settings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| timings | No | Measured operation phase durations in seconds; available phase keys depend on execution. |
| log_path | Yes | Absolute path to the retained OpenVSP process log. |
| versions | No | Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates. |
| warnings | No | Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections. |
| artifacts | No | Mapping of run-relative artifact names to absolute file paths; files remain after the call. |
| operation | No | Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag. |
| preflight | No | Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality. |
| result_path | No | Absolute path to the solver .adb result; null for operations without a VSPAERO solve. |
| script_path | Yes | Absolute path to the retained AngelScript automation script. |
| coefficients | No | Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions. |
| geometry_path | Yes | Absolute path to the validated model saved in the run directory, including for source-replacing edits. |
| manifest_path | Yes | Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results. |
| run_directory | Yes | Absolute path to the unique persistent directory containing this operation's artifacts. |
| analysis_inputs | No | Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied. |
| parameter_values | No | Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited. |
| numerical_quality | No | Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations. |
| effective_settings | No | Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, and the description adds meaningful context: it retains model/script/log/manifest in a unique directory under output_dir, runs OpenVSP natively, and does not solve VSPAERO. It also warns that AngelScript may perform arbitrary file/external I/O with server privileges, which is critical behavioral disclosure beyond the annotations. Minor gap: it doesn't explicitly state that the unique directory is newly created or that existing files are not overwritten, but the 'unique directory' phrasing covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the core function and scope, the second describes the run artifacts and the no-solve behavior, the third routes to the sibling for editing. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a create tool with a rich schema and output schema present. It covers the key behavioral aspects (unique directory, no solve, arbitrary I/O risk) and sibling routing. It doesn't detail the output schema's contents, but the output schema itself carries that burden. A small gap is not mentioning that the tool is destructive (overwrites/creates new dirs) explicitly, but annotations cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds the high-level context that template and set_commands are the two ways to build the model, but it doesn't add meaning beyond the schema's own parameter descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new .vsp3 model from a template or custom AngelScript, without an input model, and explicitly distinguishes it from openvsp.modify for editing existing models. The verb 'create' plus resource '.vsp3 model' and the no-input-model 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?
The description explicitly says when to use this tool (create new model without input) and when not to (use openvsp.modify to edit an existing source model). It also notes that no VSPAERO solve is performed, which helps route to run_vspaero or batch_submit for that need. This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.healthA
Check installed OpenVSP/VSPAERO readiness, versions, paths and package identity. Launches a temporary OpenVSP API probe and a solver version command; no aerodynamic solve or user model is involved. Returns status=error with check details when unavailable; use openvsp.preflight to check a particular model's geometry sets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It discloses it launches a temporary API probe and solver version command, explicitly says no solve or user model is involved, and notes status=error behavior when unavailable. This is meaningful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the main purpose front-loaded. No filler or redundant phrasing; every sentence adds either scope, behavior, or routing to an alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what is checked, how it is checked (probe + version command), what it returns on failure, and which sibling to use for model-specific checks. With an output schema present and zero parameters, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parametersches, so the schema fully covers parameter documentation. The description need not elaborate on parameters; baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check') and resource ('OpenVSP/VSPAERO readiness, versions, paths and package identity'). It also distinguishes itself from openvsp.preflight by explicitly narrowing scope to installed environment, not model geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative openvsp.preflight and specifies that it is for checking a particular model's geometry sets. The statement 'no aerodynamic solve or user model is involved' clarifies what this tool is not for, though it does not provide an explicit 'when to use' rule beyond exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.inspectARead-only
Read component IDs, wing names and a component summary directly from .vsp3 XML. Does not launch OpenVSP, write files or modify the source; unreadable or invalid XML fails. Use openvsp.query for native parameter values or analysis defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Model file to inspect as XML. |
Output Schema
| Name | Required | Description |
|---|---|---|
| geom_ids | Yes | Component IDs found in Vehicle/Geom XML entries, in file order. |
| info_log | Yes | Newline-separated component summaries in ID:name:type form; no solver log. |
| wing_names | No | Names of components whose XML type is Wing; empty when none exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral detail beyond the readOnlyHint annotation: it does not launch OpenVSP, write files, or modify source, and it fails on unreadable or invalid XML. This clarifies side effects and error behavior in a way annotations alone do not, and it is consistent with the readOnlyHint=true annotation.
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 sentences, front-loaded with the primary purpose, and every sentence earns its place: what it reads, what it avoids doing, how it fails, and when to use an alternative. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with an output schema, the description covers the input file handling, the non-mutating behavior, error conditions, and the appropriate alternative tool. The presence of an output schema removes the need to enumerate return fields in the description. Nothing essential is missing 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 100%, and the single parameter 'geometry_file' is already well-described in the schema with path semantics and tilde expansion. The tool description adds context about reading the file as XML and the kind of data extracted, but does not significantly enhance parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('Read'), a specific resource ('.vsp3 XML'), and the exact data returned (component IDs, wing names, component summary). It also explicitly distinguishes itself from openvsp.query by noting that query provides native parameter values or analysis defaults, making sibling differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: to read component and wing data directly from XML without launching OpenVSP. It also provides an explicit when-not by directing users to openvsp.query for native parameter values or analysis defaults, giving clear guidance on choosing between these tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.modifyADestructive
Edit an existing model with trusted AngelScript and/or parameter ID/value edits. Runs OpenVSP on a snapshot, retains run artifacts and replaces the source only after validation; refuses replacement if the source changed during the run. No VSPAERO solve; use openvsp.set_parameters for a focused typed-edit request.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Source and edits; this tool always modifies without solving. |
Output Schema
| Name | Required | Description |
|---|---|---|
| timings | No | Measured operation phase durations in seconds; available phase keys depend on execution. |
| log_path | Yes | Absolute path to the retained OpenVSP process log. |
| versions | No | Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates. |
| warnings | No | Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections. |
| artifacts | No | Mapping of run-relative artifact names to absolute file paths; files remain after the call. |
| operation | No | Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag. |
| preflight | No | Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality. |
| result_path | No | Absolute path to the solver .adb result; null for operations without a VSPAERO solve. |
| script_path | Yes | Absolute path to the retained AngelScript automation script. |
| coefficients | No | Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions. |
| geometry_path | Yes | Absolute path to the validated model saved in the run directory, including for source-replacing edits. |
| manifest_path | Yes | Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results. |
| run_directory | Yes | Absolute path to the unique persistent directory containing this operation's artifacts. |
| analysis_inputs | No | Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied. |
| parameter_values | No | Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited. |
| numerical_quality | No | Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations. |
| effective_settings | No | Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds valuable behavioral context: it runs on a snapshot, retains run artifacts, replaces the source only after validation, and refuses replacement if the source changed during the run. This goes beyond the annotations and gives the agent a clear safety model. It doesn't detail every side effect, but the snapshot/validation behavior is the key 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?
Three sentences with no filler. The core action, the safety behavior, and the alternative tool are all front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential operational context: snapshot execution, validation before replacement, artifact retention, and the no-solve constraint. The output schema exists, so return values don't need to be described. A small gap is that it doesn't explicitly say what happens to the run artifacts or how the agent learns whether replacement was refused, but the validation behavior is stated clearly enough for an agent to call 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 100%, so the schema already documents the request object and its nested fields thoroughly. The description adds the key semantic that this tool 'always modifies without solving' and that set_commands are 'trusted' with server privileges, but most parameter meaning is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Edit an existing model' via AngelScript and/or parameter ID/value edits. It clearly distinguishes itself from siblings by stating 'No VSPAERO solve' and pointing to openvsp.set_parameters for a focused typed-edit request. The title is null, but the description fully compensates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (editing an existing model with trusted scripts or parameter edits) and when not to ('No VSPAERO solve; use openvsp.set_parameters for a focused typed-edit request'). It also names the alternative tool, giving an agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.preflightADestructive
Check selected thick/thin geometry sets before a VSPAERO run; rejects missing, empty or overlapping sets and reports reference/unit warnings. Runs OpenVSP on a private copy and retains run artifacts without replacing the source or executing VSPAERO. Does not assess intersections, mesh quality or aerodynamic accuracy; use openvsp.run_vspaero for coefficients and verified solver-file settings.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Model and analysis settings to check without solving. |
Output Schema
| Name | Required | Description |
|---|---|---|
| timings | No | Measured operation phase durations in seconds; available phase keys depend on execution. |
| log_path | Yes | Absolute path to the retained OpenVSP process log. |
| versions | No | Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates. |
| warnings | No | Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections. |
| artifacts | No | Mapping of run-relative artifact names to absolute file paths; files remain after the call. |
| operation | No | Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag. |
| preflight | No | Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality. |
| result_path | No | Absolute path to the solver .adb result; null for operations without a VSPAERO solve. |
| script_path | Yes | Absolute path to the retained AngelScript automation script. |
| coefficients | No | Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions. |
| geometry_path | Yes | Absolute path to the validated model saved in the run directory, including for source-replacing edits. |
| manifest_path | Yes | Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results. |
| run_directory | Yes | Absolute path to the unique persistent directory containing this operation's artifacts. |
| analysis_inputs | No | Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied. |
| parameter_values | No | Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited. |
| numerical_quality | No | Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations. |
| effective_settings | No | Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and destructiveHint=true, the description carries meaningful safety burden and does so by disclosing that it runs on a private copy, retains artifacts, does not replace the source, and does not execute VSPAERO. It also states what it refuses to validate. It doesn't mention that set_commands can still perform arbitrary I/O, but that caveat exists in the schema, so the description is not contradictory.
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-load the core purpose, follow with behavioral safety guarantees, and end with exclusions and an alternative. No redundant wording; every sentence contributes decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, scope, exclusions, safety model, and routing to the sibling solver tool. An output schema is present, so return-value description isn't needed; the description is sufficient for an agent to decide when to call preflight and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the request object already documents model and analysis settings in detail. The description adds only the context 'before a VSPAERO run' and 'without solving,' which clarifies intent but no new parameter syntax or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the exact operation: 'Check selected thick/thin geometry sets before a VSPAERO run,' and lists concrete validation outcomes (rejects missing, empty, or overlapping sets; reports reference/unit warnings). It also distinguishes itself from run_vspaero by stating it does not execute VSPAERO or assess aerodynamic accuracy.
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 says this is a pre-run check and provides exclusions: it does not assess intersections, mesh quality, or aerodynamic accuracy. It names the alternative, openvsp.run_vspaero, for coefficients and verified solver-file settings, so an agent knows when to use each tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.previewADestructive
Export preview.svg and preview.stl for a model, optionally applying edits to a private copy. Runs OpenVSP and retains exports, model, script, log and manifest in a unique run directory without replacing the source or running VSPAERO. Use openvsp.inspect for file-only metadata, or openvsp.preflight for geometry-set checks.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Model, optional private-copy edits and export location. |
Output Schema
| Name | Required | Description |
|---|---|---|
| timings | No | Measured operation phase durations in seconds; available phase keys depend on execution. |
| log_path | Yes | Absolute path to the retained OpenVSP process log. |
| versions | No | Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates. |
| warnings | No | Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections. |
| artifacts | No | Mapping of run-relative artifact names to absolute file paths; files remain after the call. |
| operation | No | Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag. |
| preflight | No | Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality. |
| result_path | No | Absolute path to the solver .adb result; null for operations without a VSPAERO solve. |
| script_path | Yes | Absolute path to the retained AngelScript automation script. |
| coefficients | No | Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions. |
| geometry_path | Yes | Absolute path to the validated model saved in the run directory, including for source-replacing edits. |
| manifest_path | Yes | Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results. |
| run_directory | Yes | Absolute path to the unique persistent directory containing this operation's artifacts. |
| analysis_inputs | No | Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied. |
| parameter_values | No | Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited. |
| numerical_quality | No | Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations. |
| effective_settings | No | Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful runtime behavior beyond annotations: it runs OpenVSP, retains exports/model/script/log/manifest in a unique run directory, uses a private copy, preserves the source, and does not run VSPAERO. It does not mention that set_commands may perform arbitrary server-privileged I/O, but the schema covers that and destructiveHint already signals risk.
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 tight sentences. The first sentence states the core action, and the second packs retention behavior and alternative routing without redundancy. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with a rich input schema and output schema, the description covers the key operational facts an agent needs: what files are produced, where artifacts are retained, that the source is not replaced, that VSPAERO is not run, and which sibling handles adjacent concerns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the detailed request schema already documents all parameters, including parameter_edits, output_dir, and set_commands. The tool description adds only high-level context about private-copy edits and output file names, which is useful but does not meaningfully extend parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Export preview.svg and preview.stl for a model'. It also separates this tool from siblings by noting it does not replace the source or run VSPAERO, and briefly names openvsp.inspect and openvsp.preflight for different tasks.
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 preview is appropriate: private-copy edits, exporting preview artifacts, no source replacement, and no VSPAERO. It explicitly routes file-only metadata to openvsp.inspect and geometry-set checks to openvsp.preflight, which is strong alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.queryA
List installed analyses, read analysis input types/defaults, or read paginated geometry parameter IDs, values and limits. Launches OpenVSP using temporary files and an optional model snapshot, preserving the source; model-free capability lists may use a five-minute cache. Native defaults may depend on the model and do not imply wrapper execution support; use openvsp.inspect for XML-only inspection and openvsp.set_parameters to apply returned IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Native query kind, optional model and parameter pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries the behavioral disclosure burden, and it does so thoroughly: it states that OpenVSP is launched via temporary files, the source model is preserved, model-free capability lists may use a five-minute cache, and temporary files are removed afterward. It also surfaces the caveat that native defaults may depend on the model and may not be executable by the wrapper. This is strong, non-contradictory transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler, front-loads the primary purpose, and packs caveats and sibling routing into the remaining sentences. Every sentence earns its place, and the structure is easy for an agent 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?
Despite the tool's multi-mode complexity, the description covers all three query kinds, launch behavior, caching, source preservation, parameter applicability, and routing to relevant sibling tools. The output schema exists, so return-value details do not need to be restated in the description. Nothing critical is missing for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter already has a detailed description, so the baseline is 3. The description adds useful behavioral context such as the five-minute cache and model-dependent defaults, but it does not materially redefine or enrich individual parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List installed analyses, read analysis input types/defaults, or read paginated geometry parameter IDs, values and limits.' It clearly enumerates three distinct modes and names the sibling alternatives (openvsp.inspect, openvsp.set_parameters), so an agent can distinguish this tool from its siblings 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 provides explicit routing guidance: 'use openvsp.inspect for XML-only inspection and openvsp.set_parameters to apply returned IDs.' It also cautions that native defaults 'do not imply wrapper execution support.' However, it does not give when-not-to-use guidance against the broader sibling family (e.g., sweeps, batch jobs), leaving some inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.read_resultsARead-only
Read a saved operation manifest's coefficients, settings, diagnostics and optional bounded log tail without launching OpenVSP/VSPAERO or writing files. Pass an operation's manifest_path as manifest_file; missing coefficient names or invalid manifests fail. Use openvsp.batch_status or openvsp.batch_export for batch.json, which is not an operation manifest.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Saved operation manifest, coefficient selection and log bounds. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds specifics: it does not launch OpenVSP/VSPAERO, does not write files, and fails on missing coefficient names or invalid manifests. It also explains log tail behavior. This enriches the annotation without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are dense and front-loaded: the core purpose and mode of operation come first, followed by a crucial usage caveat. Every clause earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the readOnlyHint and openWorldHint annotations, the thorough input schema, and the presence of an output schema (implied), the description covers everything an agent needs to call it correctly: what it reads, what fails, and how to route non-manifest files. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all parameters, including defaults and constraints. The description adds the hint 'Pass an operation's manifest_path as manifest_file', but the schema already states that manifest_file is 'Path to a saved operation manifest.json, as returned in manifest_path'. Thus the description adds little beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (read a saved operation manifest's coefficients, settings, diagnostics, and optional log tail) and clearly distinguishes it from batch.json usage by pointing to sibling tools. It names the resource (operation manifest) and the mode (without launching or writing files), making its 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?
It explicitly tells when not to use this tool (for batch.json) and directs to openvsp.batch_status or openvsp.batch_export, which is a clear exclusion. It also implies it is for operation manifests. It does not enumerate all possible alternative tools, but the key one is covered, so this is above average.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.run_vspaeroADestructive
Run one steady subsonic VSPAERO condition after geometry-set preflight. Runs native processes on a private model copy, retaining solver artifacts, coefficients and verified settings without replacing the source; the native timeout excludes preparation, CPU admission and validation. Failures retain run/log paths, and success does not certify convergence; use openvsp.sweep for sequential conditions or openvsp.batch_submit for independent jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Model, optional private-copy edits and one flight condition. |
Output Schema
| Name | Required | Description |
|---|---|---|
| timings | No | Measured operation phase durations in seconds; available phase keys depend on execution. |
| log_path | Yes | Absolute path to the retained OpenVSP process log. |
| versions | No | Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates. |
| warnings | No | Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections. |
| artifacts | No | Mapping of run-relative artifact names to absolute file paths; files remain after the call. |
| operation | No | Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag. |
| preflight | No | Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality. |
| result_path | No | Absolute path to the solver .adb result; null for operations without a VSPAERO solve. |
| script_path | Yes | Absolute path to the retained AngelScript automation script. |
| coefficients | No | Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions. |
| geometry_path | Yes | Absolute path to the validated model saved in the run directory, including for source-replacing edits. |
| manifest_path | Yes | Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results. |
| run_directory | Yes | Absolute path to the unique persistent directory containing this operation's artifacts. |
| analysis_inputs | No | Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied. |
| parameter_values | No | Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited. |
| numerical_quality | No | Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations. |
| effective_settings | No | Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false, but the description adds critical context: runs on a private copy without replacing the source, retains artifacts and settings, failures preserve paths, and success does not certify convergence. It fully discloses the mutation behavior and its safety guard. No contradiction; the private-copy detail actually clarifies the destructive hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but packed with essential information: what it does, where it runs, what it retains, timeout semantics, failure behavior, and alternatives. It is front-loaded with the core function and then details, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a rich output schema (not shown but indicated as true), a complete nested request schema, and annotations that cover safety, the description covers all operational aspects. It answers the 'what, where, when, and alternatives' questions without redundancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with detailed descriptions (e.g., request, analysis, case_name). The description adds no parameter-specific semantics beyond what the schema provides, and with full coverage, a baseline of 3 is appropriate. It does mention 'native timeout excludes preparation' which relates to timeout_seconds, but the schema already explains that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs one steady subsonic VSPAERO condition after geometry-set preflight, on a private copy, retaining artifacts. It distinguishes itself from sweep and batch_submit by name, exactly what the agent needs to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says use openvsp.sweep for sequential conditions and openvsp.batch_submit for independent jobs, giving at least two alternatives and the condition for each. It also states prerequisites (geometry-set preflight) and timeout semantics, making usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.set_parametersADestructive
Apply typed parameter ID/value edits obtained from openvsp.query in one OpenVSP load/update. Verifies limits and final readback, retains run artifacts and replaces the source after validation; rejects concurrent source changes. No VSPAERO solve; use openvsp.modify when trusted AngelScript commands are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Source model and typed edits that replace it after validation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| timings | No | Measured operation phase durations in seconds; available phase keys depend on execution. |
| log_path | Yes | Absolute path to the retained OpenVSP process log. |
| versions | No | Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates. |
| warnings | No | Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections. |
| artifacts | No | Mapping of run-relative artifact names to absolute file paths; files remain after the call. |
| operation | No | Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag. |
| preflight | No | Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality. |
| result_path | No | Absolute path to the solver .adb result; null for operations without a VSPAERO solve. |
| script_path | Yes | Absolute path to the retained AngelScript automation script. |
| coefficients | No | Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions. |
| geometry_path | Yes | Absolute path to the validated model saved in the run directory, including for source-replacing edits. |
| manifest_path | Yes | Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results. |
| run_directory | Yes | Absolute path to the unique persistent directory containing this operation's artifacts. |
| analysis_inputs | No | Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied. |
| parameter_values | No | Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited. |
| numerical_quality | No | Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations. |
| effective_settings | No | Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although destructiveHint=true already signals mutation, the description gives concrete behavioral detail: it verifies limits and readback, retains run artifacts, replaces the source only after validation, and rejects concurrent source changes. This is valuable context beyond the annotation and clarifies the tool's transactional 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?
Three dense sentences cover function, behavioral guarantees, and sibling routing with no filler. The most important action is front-loaded, and every clause provides useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema and presence of an output schema, the description supplies the missing operational context: validation workflow, artifact retention, replacement semantics, concurrency rejection, and alternative tooling. Nothing essential for selecting or invoking the tool is left out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage and thoroughly documents parm_id, value, edits, geometry_file, output_dir, and timeout_seconds. The tool description mostly restates the query provenance and native-units expectation rather than adding new parameter-level meaning, so the schema-carries-the-load baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource: applying typed parameter ID/value edits obtained from openvsp.query in one OpenVSP load/update. It also differentiates from siblings by stating 'No VSPAERO solve' and pointing to openvsp.modify, so an agent can distinguish it from related 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 explicitly routes to openvsp.modify when trusted AngelScript commands are needed and explicitly excludes VSPAERO solving. It also establishes the intended data flow by requiring IDs obtained from openvsp.query, making the precondition and alternative clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openvsp.sweepADestructive
Solve 1-25 explicit steady conditions sequentially using one source snapshot and shared optional commands; each condition has its own complete analysis settings. Runs OpenVSP/VSPAERO and retains per-condition artifacts plus sweep.json without replacing the source; timeout_seconds is the whole-sweep budget and failures retain partial results. Use openvsp.batch_submit for durable independent cases, per-case parameter edits and bounded parallel execution.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Shared source, explicit conditions and total sweep budget. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructive and open-world behavior, so the lower bar is met. The description adds valuable context: source is snapshotted once, artifacts plus sweep.json are retained, the source is not replaced, failures retain partial results, and timeout_seconds bounds the whole sweep. It does not surface that set_commands are server-privileged and may perform arbitrary I/O, leaving part of the destructiveHint unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver the core sequential behavior, artifact/source-safety guarantees, timeout semantics, and the batch_submit alternative with no filler. The most important distinguishing trait, sequential per-condition solving, is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich nested schema descriptions, annotations, and an output schema, the description covers the essential operational facts: execution mode, artifact retention, source preservation, partial results, budget semantics, and when to use batch_submit instead. No critical information needed to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the request object, conditions, timeout, output behavior, and per-field VSPAeroSettings semantics. The description restates the whole-sweep timeout and per-condition independence but adds no parameter-level detail beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Solve 1-25 explicit steady conditions sequentially using one source snapshot and shared optional commands.' It also names the sibling alternative openvsp.batch_submit, making the tool's scope and boundary clear without needing to inspect schemas.
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 routes to an alternative: 'Use openvsp.batch_submit for durable independent cases, per-case parameter edits and bounded parallel execution.' This gives a clear when-to-use vs. when-not-to-use rule and names the specific sibling to prefer instead.
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.
15 tool updates
v0.7.0- Changed
openvsp.batch_cancel3 fields changed- added
Input schema / $defs / BatchCancelRequest / properties / batch_directory / descriptionAdded value: +"Existing batch directory at its original absolute location. Cancel active work through its owner; resume requires an idle batch with unchanged source/package/binary identities. Tilde and relative paths resolve on the server." - added
Input schema / $defs / BatchCancelRequest / properties / case_ids / descriptionAdded value: +"Selected case IDs. Empty (default) means the whole batch for batch_cancel, or every non-successful case for batch_resume. Unknown IDs fail; successful results are preserved." - added
Input schema / properties / request / descriptionAdded value: +"Existing batch and optional cases to cancel."
- Changed
openvsp.batch_export2 fields changed- added
Input schema / $defs / BatchExportRequest / properties / batch_directory / descriptionAdded value: +"Existing batch directory at its original absolute location. A fresh export directory containing CSV/JSON is added here on every call; no solver runs." - added
Input schema / properties / request / descriptionAdded value: +"Existing batch directory to export without solving."
- Changed
openvsp.batch_resume3 fields changed- added
Input schema / $defs / BatchResumeRequest / properties / batch_directory / descriptionAdded value: +"Existing batch directory at its original absolute location. Cancel active work through its owner; resume requires an idle batch with unchanged source/package/binary identities. Tilde and relative paths resolve on the server." - added
Input schema / $defs / BatchResumeRequest / properties / case_ids / descriptionAdded value: +"Selected case IDs. Empty (default) means the whole batch for batch_cancel, or every non-successful case for batch_resume. Unknown IDs fail; successful results are preserved." - added
Input schema / properties / request / descriptionAdded value: +"Idle batch and optional non-successful cases to retry."
- Changed
openvsp.batch_status4 fields changed- added
Input schema / $defs / BatchStatusRequest / properties / batch_directory / descriptionAdded value: +"Existing batch directory returned by batch_submit; it must remain at its original absolute location. Tilde expands; batch.json and the ownership lock are read there." - added
Input schema / $defs / BatchStatusRequest / properties / limit / descriptionAdded value: +"Maximum case summaries to return, 1-100 (default 50); aggregate status/counts are not paginated." - added
Input schema / $defs / BatchStatusRequest / properties / offset / descriptionAdded value: +"Zero-based offset into the ordered case summary (default 0); counts always cover the entire batch." - added
Input schema / properties / request / descriptionAdded value: +"Existing batch directory and case-page bounds."
- Changed
openvsp.batch_submit33 fields changed- added
Input schema / $defs / BatchCase / properties / analysis / descriptionAdded value: +"Complete settings for this independent steady solve; omitted fields use VSPAeroSettings defaults. ncpu must fit both batch and server budgets." - added
Input schema / $defs / BatchCase / properties / case_id / descriptionAdded value: +"Unique case identifier and artifact filename stem within the batch; must match the schema pattern." - added
Input schema / $defs / BatchCase / properties / parameter_edits / descriptionAdded value: +"Unique parameter ID/value edits on this case's private model copy; defaults to none. Limits and readback are verified; source model is preserved." - added
Input schema / $defs / BatchCase / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP/VSPAERO process timeout for this case in seconds (default 600); not an overall batch deadline and excludes resource waiting." - added
Input schema / $defs / BatchRequest / properties / cases / descriptionAdded value: +"1-1000 independent steady cases with unique case_id values; each has its own settings and optional parameter edits." - added
Input schema / $defs / BatchRequest / properties / cpu_budget / descriptionAdded value: +"Maximum sum of admitted case CPU threads for this batch, 1-255 (default 4). Each case ncpu must fit; must not exceed the shared per-server OPENVSP_CPU_BUDGET." - added
Input schema / $defs / BatchRequest / properties / failure_policy / descriptionAdded value: +"stop (default) stops scheduling queued cases after a failure while admitted work may finish; continue attempts remaining cases. Neither policy automatically retries failures." - added
Input schema / $defs / BatchRequest / properties / geometry_file / descriptionAdded value: +"Existing nonempty .vsp3 model to snapshot for all cases; source is preserved and hashed for resume checks. Tilde and relative paths resolve on the server." - added
Input schema / $defs / BatchRequest / properties / max_parallel_jobs / descriptionAdded value: +"Maximum concurrent case workers in this batch, 1-16 (default 1). Effective concurrency is also limited by CPU budgets and each case's ncpu." - added
Input schema / $defs / BatchRequest / properties / output_dir / descriptionAdded value: +"Parent for a new unique persistent batch directory; omitted/null uses openvsp_runs beside the resolved source. Existing batches are not overwritten." - added
Input schema / $defs / ParameterEdit / properties / parm_id / descriptionAdded value: +"Native parameter ID obtained from openvsp.query for the target model; not a display name." - added
Input schema / $defs / ParameterEdit / properties / value / descriptionAdded value: +"Requested finite value in the native units of that parameter, without conversion. Native limits and post-Update readback must accept the value." - added
Input schema / $defs / VSPAeroSettings / properties / alpha / descriptionAdded value: +"Angle of attack in degrees, passed to VSPAERO AlphaStart/AlphaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / beta / descriptionAdded value: +"Sideslip angle in degrees, passed to VSPAERO BetaStart/BetaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / bref / descriptionAdded value: +"Reference span in model length units; passed unchanged as bref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / cref / descriptionAdded value: +"Reference chord in model length units; passed unchanged as cref. Also identifies the chord basis of reynolds." - added
Input schema / $defs / VSPAeroSettings / properties / fixed_wake / descriptionAdded value: +"Use the official FixedWakeFlag; true requires WakeIters=0 in the generated solver file. Does not certify convergence." - added
Input schema / $defs / VSPAeroSettings / properties / forward_gmres_tolerance_factor / descriptionAdded value: +"Positive factor passed unchanged as ForwardGMRESConvergenceFactor, at most 1e12 (default 1); not an absolute residual tolerance." - added
Input schema / $defs / VSPAeroSettings / properties / length_unit / descriptionAdded value: +"Documentation only: m, ft or unspecified (default). Does not scale geometry or convert any input; all dimensional quantities must already be consistent." - added
Input schema / $defs / VSPAeroSettings / properties / mach / descriptionAdded value: +"Dimensionless Mach number for this steady subsonic case (0 <= Mach < 1). Independent of vinf, rho and reynolds; no atmosphere is derived." - added
Input schema / $defs / VSPAeroSettings / properties / ncpu / descriptionAdded value: +"Requested native CPU threads per solve, 1-255 (default 4). Must fit the server CPU budget and, for batch cases, the batch cpu_budget." - added
Input schema / $defs / VSPAeroSettings / properties / reynolds / descriptionAdded value: +"Dimensionless Reynolds number based on cref, passed as ReCref (not in millions). Independent of Mach, vinf and rho." - added
Input schema / $defs / VSPAeroSettings / properties / rho / descriptionAdded value: +"Freestream mass density in mass/volume units consistent with geometry and vinf (e.g. kg/m^3 in SI). Passed unchanged; no atmosphere or unit conversion." - added
Input schema / $defs / VSPAeroSettings / properties / sref / descriptionAdded value: +"Reference area in squared model length units; passed unchanged as Sref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / thick_geom_set / descriptionAdded value: +"OpenVSP set index for thick surfaces; -1 disables thick surfaces (default). Selected sets must exist, be nonempty and share no geometry with the thin set." - added
Input schema / $defs / VSPAeroSettings / properties / thin_geom_set / descriptionAdded value: +"OpenVSP set index for thin surfaces; 0 selects all geometry by default, -1 disables thin surfaces. Must differ from the thick set; at least one surface type must be selected." - added
Input schema / $defs / VSPAeroSettings / properties / vinf / descriptionAdded value: +"Freestream speed in length/time units consistent with the model and rho (e.g. m/s in SI). Passed unchanged; not computed from Mach and not converted by length_unit." - added
Input schema / $defs / VSPAeroSettings / properties / wake_iterations / descriptionAdded value: +"Requested WakeNumIter, 3-255 (default 30). When fixed_wake is true, the verified solver file instead has WakeIters=0." - added
Input schema / $defs / VSPAeroSettings / properties / wake_nodes / descriptionAdded value: +"Number of wake nodes passed as NumWakeNodes, 4-1024 (default 32)." - added
Input schema / $defs / VSPAeroSettings / properties / xcg / descriptionAdded value: +"X coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Xcg." - added
Input schema / $defs / VSPAeroSettings / properties / ycg / descriptionAdded value: +"Y coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Ycg." - added
Input schema / $defs / VSPAeroSettings / properties / zcg / descriptionAdded value: +"Z coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Zcg." - added
Input schema / properties / request / descriptionAdded value: +"Shared model, independent cases and batch resource limits."
- Changed
openvsp.create_model24 fields changed- added
Input schema / $defs / CreateModelRequest / properties / case_name / descriptionAdded value: +"Run-directory prefix and model filename stem (default aircraft), not a filesystem path." - added
Input schema / $defs / CreateModelRequest / properties / output_dir / descriptionAdded value: +"Required parent directory for a new unique persistent run. Tilde expands and relative paths use the server working directory; no input model is needed." - added
Input schema / $defs / CreateModelRequest / properties / set_commands / descriptionAdded value: +"Trusted AngelScript statements appended after template commands, or used to build a custom model. May perform arbitrary I/O with server privileges; defaults to none." - added
Input schema / $defs / CreateModelRequest / properties / template / descriptionAdded value: +"simple_aircraft creates a fuselage, main wing and horizontal/vertical tails; custom starts empty and requires set_commands that add geometry." - added
Input schema / $defs / CreateModelRequest / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP process timeout in seconds (default 120); preparation, resource admission and validation are outside this timeout." - changed
Input schema / $defs / VSPCommand / properties / command / descriptionPrevious value: -"Trusted AngelScript statement; runs with server privileges"New value: +"Trusted AngelScript statement executed with server-process privileges. May perform arbitrary file or external I/O; private-copy/source-preservation guarantees do not constrain the statement itself." - added
Input schema / properties / request / descriptionAdded value: +"New model template and output settings." - added
Output schema / properties / analysis_inputs / descriptionAdded value: +"Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied." - added
Output schema / properties / artifacts / descriptionAdded value: +"Mapping of run-relative artifact names to absolute file paths; files remain after the call." - added
Output schema / properties / coefficients / descriptionAdded value: +"Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions." - added
Output schema / properties / effective_settings / descriptionAdded value: +"Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs." - added
Output schema / properties / geometry_path / descriptionAdded value: +"Absolute path to the validated model saved in the run directory, including for source-replacing edits." - added
Output schema / properties / log_path / descriptionAdded value: +"Absolute path to the retained OpenVSP process log." - added
Output schema / properties / manifest_path / descriptionAdded value: +"Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results." - added
Output schema / properties / numerical_quality / descriptionAdded value: +"Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations." - added
Output schema / properties / operation / descriptionAdded value: +"Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag." - added
Output schema / properties / parameter_values / descriptionAdded value: +"Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited." - added
Output schema / properties / preflight / descriptionAdded value: +"Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality." - added
Output schema / properties / result_path / descriptionAdded value: +"Absolute path to the solver .adb result; null for operations without a VSPAERO solve." - added
Output schema / properties / run_directory / descriptionAdded value: +"Absolute path to the unique persistent directory containing this operation's artifacts." - added
Output schema / properties / script_path / descriptionAdded value: +"Absolute path to the retained AngelScript automation script." - added
Output schema / properties / timings / descriptionAdded value: +"Measured operation phase durations in seconds; available phase keys depend on execution." - added
Output schema / properties / versions / descriptionAdded value: +"Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates." - added
Output schema / properties / warnings / descriptionAdded value: +"Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections."
- Changed
openvsp.inspect5 fields changed- changed
Input schema / $defs / OpenVSPGeometryRequest / properties / geometry_file / descriptionPrevious value: -"Path to the .vsp3 file"New value: +"Path to an existing .vsp3 file, read as XML without native processes. Tilde expands; relative paths use the server working directory." - added
Input schema / properties / request / descriptionAdded value: +"Model file to inspect as XML." - added
Output schema / properties / geom_ids / descriptionAdded value: +"Component IDs found in Vehicle/Geom XML entries, in file order." - added
Output schema / properties / info_log / descriptionAdded value: +"Newline-separated component summaries in ID:name:type form; no solver log." - added
Output schema / properties / wing_names / descriptionAdded value: +"Names of components whose XML type is Wing; empty when none exist."
- Changed
openvsp.modify49 fields changed- added
Input schema / $defs / OpenVSPRequest / properties / analysis / descriptionAdded value: +"One complete flight/solver settings object. Defaults do not come from the model; used by preflight and run_vspaero, ignored by modify/preview." - added
Input schema / $defs / OpenVSPRequest / properties / case_name / descriptionAdded value: +"Run-directory prefix and artifact filename stem, not a path. Defaults to case; use output_dir to choose the parent directory." - changed
Input schema / $defs / OpenVSPRequest / properties / geometry_file / descriptionPrevious value: -"Existing .vsp3 input; run_vspaero leaves it unchanged"New value: +"Existing .vsp3 path; tilde expands and relative paths use the server working directory. modify replaces this source after validation; preview, preflight and run_vspaero use private copies." - changed
Input schema / $defs / OpenVSPRequest / properties / output_dir / descriptionPrevious value: -"Parent directory for unique, persistent runs"New value: +"Parent for a unique persistent run directory. Omitted/null uses openvsp_runs beside the resolved source; tilde and relative paths resolve on the server. Existing run directories are not reused." - added
Input schema / $defs / OpenVSPRequest / properties / parameter_edits / descriptionAdded value: +"Parameter ID/value edits applied after set_commands, before one Update; defaults to none. Limits and final values are verified; obtain IDs with openvsp.query." - added
Input schema / $defs / OpenVSPRequest / properties / run_vspaero / descriptionAdded value: +"Legacy shared-request selector (default true). MCP modify/preview/preflight/run_vspaero force their named operation regardless of this value; it selects solve versus modify only when execute_openvsp has no explicit operation." - added
Input schema / $defs / OpenVSPRequest / properties / set_commands / descriptionAdded value: +"Ordered trusted AngelScript statements applied to the snapshot before parameter_edits and Update. Defaults to none; statements may perform their own I/O with server privileges." - added
Input schema / $defs / OpenVSPRequest / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP process timeout in seconds (default 600), including an invoked solver. Preparation, CPU admission and validation are outside this per-call native timeout." - added
Input schema / $defs / ParameterEdit / properties / parm_id / descriptionAdded value: +"Native parameter ID obtained from openvsp.query for the target model; not a display name." - added
Input schema / $defs / ParameterEdit / properties / value / descriptionAdded value: +"Requested finite value in the native units of that parameter, without conversion. Native limits and post-Update readback must accept the value." - added
Input schema / $defs / VSPAeroSettings / properties / alpha / descriptionAdded value: +"Angle of attack in degrees, passed to VSPAERO AlphaStart/AlphaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / beta / descriptionAdded value: +"Sideslip angle in degrees, passed to VSPAERO BetaStart/BetaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / bref / descriptionAdded value: +"Reference span in model length units; passed unchanged as bref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / cref / descriptionAdded value: +"Reference chord in model length units; passed unchanged as cref. Also identifies the chord basis of reynolds." - added
Input schema / $defs / VSPAeroSettings / properties / fixed_wake / descriptionAdded value: +"Use the official FixedWakeFlag; true requires WakeIters=0 in the generated solver file. Does not certify convergence." - added
Input schema / $defs / VSPAeroSettings / properties / forward_gmres_tolerance_factor / descriptionAdded value: +"Positive factor passed unchanged as ForwardGMRESConvergenceFactor, at most 1e12 (default 1); not an absolute residual tolerance." - added
Input schema / $defs / VSPAeroSettings / properties / length_unit / descriptionAdded value: +"Documentation only: m, ft or unspecified (default). Does not scale geometry or convert any input; all dimensional quantities must already be consistent." - added
Input schema / $defs / VSPAeroSettings / properties / mach / descriptionAdded value: +"Dimensionless Mach number for this steady subsonic case (0 <= Mach < 1). Independent of vinf, rho and reynolds; no atmosphere is derived." - added
Input schema / $defs / VSPAeroSettings / properties / ncpu / descriptionAdded value: +"Requested native CPU threads per solve, 1-255 (default 4). Must fit the server CPU budget and, for batch cases, the batch cpu_budget." - added
Input schema / $defs / VSPAeroSettings / properties / reynolds / descriptionAdded value: +"Dimensionless Reynolds number based on cref, passed as ReCref (not in millions). Independent of Mach, vinf and rho." - added
Input schema / $defs / VSPAeroSettings / properties / rho / descriptionAdded value: +"Freestream mass density in mass/volume units consistent with geometry and vinf (e.g. kg/m^3 in SI). Passed unchanged; no atmosphere or unit conversion." - added
Input schema / $defs / VSPAeroSettings / properties / sref / descriptionAdded value: +"Reference area in squared model length units; passed unchanged as Sref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / thick_geom_set / descriptionAdded value: +"OpenVSP set index for thick surfaces; -1 disables thick surfaces (default). Selected sets must exist, be nonempty and share no geometry with the thin set." - added
Input schema / $defs / VSPAeroSettings / properties / thin_geom_set / descriptionAdded value: +"OpenVSP set index for thin surfaces; 0 selects all geometry by default, -1 disables thin surfaces. Must differ from the thick set; at least one surface type must be selected." - added
Input schema / $defs / VSPAeroSettings / properties / vinf / descriptionAdded value: +"Freestream speed in length/time units consistent with the model and rho (e.g. m/s in SI). Passed unchanged; not computed from Mach and not converted by length_unit." - added
Input schema / $defs / VSPAeroSettings / properties / wake_iterations / descriptionAdded value: +"Requested WakeNumIter, 3-255 (default 30). When fixed_wake is true, the verified solver file instead has WakeIters=0." - added
Input schema / $defs / VSPAeroSettings / properties / wake_nodes / descriptionAdded value: +"Number of wake nodes passed as NumWakeNodes, 4-1024 (default 32)." - added
Input schema / $defs / VSPAeroSettings / properties / xcg / descriptionAdded value: +"X coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Xcg." - added
Input schema / $defs / VSPAeroSettings / properties / ycg / descriptionAdded value: +"Y coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Ycg." - added
Input schema / $defs / VSPAeroSettings / properties / zcg / descriptionAdded value: +"Z coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Zcg." - changed
Input schema / $defs / VSPCommand / properties / command / descriptionPrevious value: -"Trusted AngelScript statement; runs with server privileges"New value: +"Trusted AngelScript statement executed with server-process privileges. May perform arbitrary file or external I/O; private-copy/source-preservation guarantees do not constrain the statement itself." - added
Input schema / properties / request / descriptionAdded value: +"Source and edits; this tool always modifies without solving." - added
Output schema / properties / analysis_inputs / descriptionAdded value: +"Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied." - added
Output schema / properties / artifacts / descriptionAdded value: +"Mapping of run-relative artifact names to absolute file paths; files remain after the call." - added
Output schema / properties / coefficients / descriptionAdded value: +"Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions." - added
Output schema / properties / effective_settings / descriptionAdded value: +"Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs." - added
Output schema / properties / geometry_path / descriptionAdded value: +"Absolute path to the validated model saved in the run directory, including for source-replacing edits." - added
Output schema / properties / log_path / descriptionAdded value: +"Absolute path to the retained OpenVSP process log." - added
Output schema / properties / manifest_path / descriptionAdded value: +"Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results." - added
Output schema / properties / numerical_quality / descriptionAdded value: +"Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations." - added
Output schema / properties / operation / descriptionAdded value: +"Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag." - added
Output schema / properties / parameter_values / descriptionAdded value: +"Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited." - added
Output schema / properties / preflight / descriptionAdded value: +"Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality." - added
Output schema / properties / result_path / descriptionAdded value: +"Absolute path to the solver .adb result; null for operations without a VSPAERO solve." - added
Output schema / properties / run_directory / descriptionAdded value: +"Absolute path to the unique persistent directory containing this operation's artifacts." - added
Output schema / properties / script_path / descriptionAdded value: +"Absolute path to the retained AngelScript automation script." - added
Output schema / properties / timings / descriptionAdded value: +"Measured operation phase durations in seconds; available phase keys depend on execution." - added
Output schema / properties / versions / descriptionAdded value: +"Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates." - added
Output schema / properties / warnings / descriptionAdded value: +"Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections."
- Changed
openvsp.preflight49 fields changed- added
Input schema / $defs / OpenVSPRequest / properties / analysis / descriptionAdded value: +"One complete flight/solver settings object. Defaults do not come from the model; used by preflight and run_vspaero, ignored by modify/preview." - added
Input schema / $defs / OpenVSPRequest / properties / case_name / descriptionAdded value: +"Run-directory prefix and artifact filename stem, not a path. Defaults to case; use output_dir to choose the parent directory." - changed
Input schema / $defs / OpenVSPRequest / properties / geometry_file / descriptionPrevious value: -"Existing .vsp3 input; run_vspaero leaves it unchanged"New value: +"Existing .vsp3 path; tilde expands and relative paths use the server working directory. modify replaces this source after validation; preview, preflight and run_vspaero use private copies." - changed
Input schema / $defs / OpenVSPRequest / properties / output_dir / descriptionPrevious value: -"Parent directory for unique, persistent runs"New value: +"Parent for a unique persistent run directory. Omitted/null uses openvsp_runs beside the resolved source; tilde and relative paths resolve on the server. Existing run directories are not reused." - added
Input schema / $defs / OpenVSPRequest / properties / parameter_edits / descriptionAdded value: +"Parameter ID/value edits applied after set_commands, before one Update; defaults to none. Limits and final values are verified; obtain IDs with openvsp.query." - added
Input schema / $defs / OpenVSPRequest / properties / run_vspaero / descriptionAdded value: +"Legacy shared-request selector (default true). MCP modify/preview/preflight/run_vspaero force their named operation regardless of this value; it selects solve versus modify only when execute_openvsp has no explicit operation." - added
Input schema / $defs / OpenVSPRequest / properties / set_commands / descriptionAdded value: +"Ordered trusted AngelScript statements applied to the snapshot before parameter_edits and Update. Defaults to none; statements may perform their own I/O with server privileges." - added
Input schema / $defs / OpenVSPRequest / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP process timeout in seconds (default 600), including an invoked solver. Preparation, CPU admission and validation are outside this per-call native timeout." - added
Input schema / $defs / ParameterEdit / properties / parm_id / descriptionAdded value: +"Native parameter ID obtained from openvsp.query for the target model; not a display name." - added
Input schema / $defs / ParameterEdit / properties / value / descriptionAdded value: +"Requested finite value in the native units of that parameter, without conversion. Native limits and post-Update readback must accept the value." - added
Input schema / $defs / VSPAeroSettings / properties / alpha / descriptionAdded value: +"Angle of attack in degrees, passed to VSPAERO AlphaStart/AlphaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / beta / descriptionAdded value: +"Sideslip angle in degrees, passed to VSPAERO BetaStart/BetaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / bref / descriptionAdded value: +"Reference span in model length units; passed unchanged as bref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / cref / descriptionAdded value: +"Reference chord in model length units; passed unchanged as cref. Also identifies the chord basis of reynolds." - added
Input schema / $defs / VSPAeroSettings / properties / fixed_wake / descriptionAdded value: +"Use the official FixedWakeFlag; true requires WakeIters=0 in the generated solver file. Does not certify convergence." - added
Input schema / $defs / VSPAeroSettings / properties / forward_gmres_tolerance_factor / descriptionAdded value: +"Positive factor passed unchanged as ForwardGMRESConvergenceFactor, at most 1e12 (default 1); not an absolute residual tolerance." - added
Input schema / $defs / VSPAeroSettings / properties / length_unit / descriptionAdded value: +"Documentation only: m, ft or unspecified (default). Does not scale geometry or convert any input; all dimensional quantities must already be consistent." - added
Input schema / $defs / VSPAeroSettings / properties / mach / descriptionAdded value: +"Dimensionless Mach number for this steady subsonic case (0 <= Mach < 1). Independent of vinf, rho and reynolds; no atmosphere is derived." - added
Input schema / $defs / VSPAeroSettings / properties / ncpu / descriptionAdded value: +"Requested native CPU threads per solve, 1-255 (default 4). Must fit the server CPU budget and, for batch cases, the batch cpu_budget." - added
Input schema / $defs / VSPAeroSettings / properties / reynolds / descriptionAdded value: +"Dimensionless Reynolds number based on cref, passed as ReCref (not in millions). Independent of Mach, vinf and rho." - added
Input schema / $defs / VSPAeroSettings / properties / rho / descriptionAdded value: +"Freestream mass density in mass/volume units consistent with geometry and vinf (e.g. kg/m^3 in SI). Passed unchanged; no atmosphere or unit conversion." - added
Input schema / $defs / VSPAeroSettings / properties / sref / descriptionAdded value: +"Reference area in squared model length units; passed unchanged as Sref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / thick_geom_set / descriptionAdded value: +"OpenVSP set index for thick surfaces; -1 disables thick surfaces (default). Selected sets must exist, be nonempty and share no geometry with the thin set." - added
Input schema / $defs / VSPAeroSettings / properties / thin_geom_set / descriptionAdded value: +"OpenVSP set index for thin surfaces; 0 selects all geometry by default, -1 disables thin surfaces. Must differ from the thick set; at least one surface type must be selected." - added
Input schema / $defs / VSPAeroSettings / properties / vinf / descriptionAdded value: +"Freestream speed in length/time units consistent with the model and rho (e.g. m/s in SI). Passed unchanged; not computed from Mach and not converted by length_unit." - added
Input schema / $defs / VSPAeroSettings / properties / wake_iterations / descriptionAdded value: +"Requested WakeNumIter, 3-255 (default 30). When fixed_wake is true, the verified solver file instead has WakeIters=0." - added
Input schema / $defs / VSPAeroSettings / properties / wake_nodes / descriptionAdded value: +"Number of wake nodes passed as NumWakeNodes, 4-1024 (default 32)." - added
Input schema / $defs / VSPAeroSettings / properties / xcg / descriptionAdded value: +"X coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Xcg." - added
Input schema / $defs / VSPAeroSettings / properties / ycg / descriptionAdded value: +"Y coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Ycg." - added
Input schema / $defs / VSPAeroSettings / properties / zcg / descriptionAdded value: +"Z coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Zcg." - changed
Input schema / $defs / VSPCommand / properties / command / descriptionPrevious value: -"Trusted AngelScript statement; runs with server privileges"New value: +"Trusted AngelScript statement executed with server-process privileges. May perform arbitrary file or external I/O; private-copy/source-preservation guarantees do not constrain the statement itself." - added
Input schema / properties / request / descriptionAdded value: +"Model and analysis settings to check without solving." - added
Output schema / properties / analysis_inputs / descriptionAdded value: +"Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied." - added
Output schema / properties / artifacts / descriptionAdded value: +"Mapping of run-relative artifact names to absolute file paths; files remain after the call." - added
Output schema / properties / coefficients / descriptionAdded value: +"Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions." - added
Output schema / properties / effective_settings / descriptionAdded value: +"Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs." - added
Output schema / properties / geometry_path / descriptionAdded value: +"Absolute path to the validated model saved in the run directory, including for source-replacing edits." - added
Output schema / properties / log_path / descriptionAdded value: +"Absolute path to the retained OpenVSP process log." - added
Output schema / properties / manifest_path / descriptionAdded value: +"Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results." - added
Output schema / properties / numerical_quality / descriptionAdded value: +"Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations." - added
Output schema / properties / operation / descriptionAdded value: +"Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag." - added
Output schema / properties / parameter_values / descriptionAdded value: +"Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited." - added
Output schema / properties / preflight / descriptionAdded value: +"Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality." - added
Output schema / properties / result_path / descriptionAdded value: +"Absolute path to the solver .adb result; null for operations without a VSPAERO solve." - added
Output schema / properties / run_directory / descriptionAdded value: +"Absolute path to the unique persistent directory containing this operation's artifacts." - added
Output schema / properties / script_path / descriptionAdded value: +"Absolute path to the retained AngelScript automation script." - added
Output schema / properties / timings / descriptionAdded value: +"Measured operation phase durations in seconds; available phase keys depend on execution." - added
Output schema / properties / versions / descriptionAdded value: +"Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates." - added
Output schema / properties / warnings / descriptionAdded value: +"Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections."
- Changed
openvsp.preview49 fields changed- added
Input schema / $defs / OpenVSPRequest / properties / analysis / descriptionAdded value: +"One complete flight/solver settings object. Defaults do not come from the model; used by preflight and run_vspaero, ignored by modify/preview." - added
Input schema / $defs / OpenVSPRequest / properties / case_name / descriptionAdded value: +"Run-directory prefix and artifact filename stem, not a path. Defaults to case; use output_dir to choose the parent directory." - changed
Input schema / $defs / OpenVSPRequest / properties / geometry_file / descriptionPrevious value: -"Existing .vsp3 input; run_vspaero leaves it unchanged"New value: +"Existing .vsp3 path; tilde expands and relative paths use the server working directory. modify replaces this source after validation; preview, preflight and run_vspaero use private copies." - changed
Input schema / $defs / OpenVSPRequest / properties / output_dir / descriptionPrevious value: -"Parent directory for unique, persistent runs"New value: +"Parent for a unique persistent run directory. Omitted/null uses openvsp_runs beside the resolved source; tilde and relative paths resolve on the server. Existing run directories are not reused." - added
Input schema / $defs / OpenVSPRequest / properties / parameter_edits / descriptionAdded value: +"Parameter ID/value edits applied after set_commands, before one Update; defaults to none. Limits and final values are verified; obtain IDs with openvsp.query." - added
Input schema / $defs / OpenVSPRequest / properties / run_vspaero / descriptionAdded value: +"Legacy shared-request selector (default true). MCP modify/preview/preflight/run_vspaero force their named operation regardless of this value; it selects solve versus modify only when execute_openvsp has no explicit operation." - added
Input schema / $defs / OpenVSPRequest / properties / set_commands / descriptionAdded value: +"Ordered trusted AngelScript statements applied to the snapshot before parameter_edits and Update. Defaults to none; statements may perform their own I/O with server privileges." - added
Input schema / $defs / OpenVSPRequest / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP process timeout in seconds (default 600), including an invoked solver. Preparation, CPU admission and validation are outside this per-call native timeout." - added
Input schema / $defs / ParameterEdit / properties / parm_id / descriptionAdded value: +"Native parameter ID obtained from openvsp.query for the target model; not a display name." - added
Input schema / $defs / ParameterEdit / properties / value / descriptionAdded value: +"Requested finite value in the native units of that parameter, without conversion. Native limits and post-Update readback must accept the value." - added
Input schema / $defs / VSPAeroSettings / properties / alpha / descriptionAdded value: +"Angle of attack in degrees, passed to VSPAERO AlphaStart/AlphaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / beta / descriptionAdded value: +"Sideslip angle in degrees, passed to VSPAERO BetaStart/BetaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / bref / descriptionAdded value: +"Reference span in model length units; passed unchanged as bref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / cref / descriptionAdded value: +"Reference chord in model length units; passed unchanged as cref. Also identifies the chord basis of reynolds." - added
Input schema / $defs / VSPAeroSettings / properties / fixed_wake / descriptionAdded value: +"Use the official FixedWakeFlag; true requires WakeIters=0 in the generated solver file. Does not certify convergence." - added
Input schema / $defs / VSPAeroSettings / properties / forward_gmres_tolerance_factor / descriptionAdded value: +"Positive factor passed unchanged as ForwardGMRESConvergenceFactor, at most 1e12 (default 1); not an absolute residual tolerance." - added
Input schema / $defs / VSPAeroSettings / properties / length_unit / descriptionAdded value: +"Documentation only: m, ft or unspecified (default). Does not scale geometry or convert any input; all dimensional quantities must already be consistent." - added
Input schema / $defs / VSPAeroSettings / properties / mach / descriptionAdded value: +"Dimensionless Mach number for this steady subsonic case (0 <= Mach < 1). Independent of vinf, rho and reynolds; no atmosphere is derived." - added
Input schema / $defs / VSPAeroSettings / properties / ncpu / descriptionAdded value: +"Requested native CPU threads per solve, 1-255 (default 4). Must fit the server CPU budget and, for batch cases, the batch cpu_budget." - added
Input schema / $defs / VSPAeroSettings / properties / reynolds / descriptionAdded value: +"Dimensionless Reynolds number based on cref, passed as ReCref (not in millions). Independent of Mach, vinf and rho." - added
Input schema / $defs / VSPAeroSettings / properties / rho / descriptionAdded value: +"Freestream mass density in mass/volume units consistent with geometry and vinf (e.g. kg/m^3 in SI). Passed unchanged; no atmosphere or unit conversion." - added
Input schema / $defs / VSPAeroSettings / properties / sref / descriptionAdded value: +"Reference area in squared model length units; passed unchanged as Sref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / thick_geom_set / descriptionAdded value: +"OpenVSP set index for thick surfaces; -1 disables thick surfaces (default). Selected sets must exist, be nonempty and share no geometry with the thin set." - added
Input schema / $defs / VSPAeroSettings / properties / thin_geom_set / descriptionAdded value: +"OpenVSP set index for thin surfaces; 0 selects all geometry by default, -1 disables thin surfaces. Must differ from the thick set; at least one surface type must be selected." - added
Input schema / $defs / VSPAeroSettings / properties / vinf / descriptionAdded value: +"Freestream speed in length/time units consistent with the model and rho (e.g. m/s in SI). Passed unchanged; not computed from Mach and not converted by length_unit." - added
Input schema / $defs / VSPAeroSettings / properties / wake_iterations / descriptionAdded value: +"Requested WakeNumIter, 3-255 (default 30). When fixed_wake is true, the verified solver file instead has WakeIters=0." - added
Input schema / $defs / VSPAeroSettings / properties / wake_nodes / descriptionAdded value: +"Number of wake nodes passed as NumWakeNodes, 4-1024 (default 32)." - added
Input schema / $defs / VSPAeroSettings / properties / xcg / descriptionAdded value: +"X coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Xcg." - added
Input schema / $defs / VSPAeroSettings / properties / ycg / descriptionAdded value: +"Y coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Ycg." - added
Input schema / $defs / VSPAeroSettings / properties / zcg / descriptionAdded value: +"Z coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Zcg." - changed
Input schema / $defs / VSPCommand / properties / command / descriptionPrevious value: -"Trusted AngelScript statement; runs with server privileges"New value: +"Trusted AngelScript statement executed with server-process privileges. May perform arbitrary file or external I/O; private-copy/source-preservation guarantees do not constrain the statement itself." - added
Input schema / properties / request / descriptionAdded value: +"Model, optional private-copy edits and export location." - added
Output schema / properties / analysis_inputs / descriptionAdded value: +"Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied." - added
Output schema / properties / artifacts / descriptionAdded value: +"Mapping of run-relative artifact names to absolute file paths; files remain after the call." - added
Output schema / properties / coefficients / descriptionAdded value: +"Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions." - added
Output schema / properties / effective_settings / descriptionAdded value: +"Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs." - added
Output schema / properties / geometry_path / descriptionAdded value: +"Absolute path to the validated model saved in the run directory, including for source-replacing edits." - added
Output schema / properties / log_path / descriptionAdded value: +"Absolute path to the retained OpenVSP process log." - added
Output schema / properties / manifest_path / descriptionAdded value: +"Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results." - added
Output schema / properties / numerical_quality / descriptionAdded value: +"Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations." - added
Output schema / properties / operation / descriptionAdded value: +"Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag." - added
Output schema / properties / parameter_values / descriptionAdded value: +"Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited." - added
Output schema / properties / preflight / descriptionAdded value: +"Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality." - added
Output schema / properties / result_path / descriptionAdded value: +"Absolute path to the solver .adb result; null for operations without a VSPAERO solve." - added
Output schema / properties / run_directory / descriptionAdded value: +"Absolute path to the unique persistent directory containing this operation's artifacts." - added
Output schema / properties / script_path / descriptionAdded value: +"Absolute path to the retained AngelScript automation script." - added
Output schema / properties / timings / descriptionAdded value: +"Measured operation phase durations in seconds; available phase keys depend on execution." - added
Output schema / properties / versions / descriptionAdded value: +"Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates." - added
Output schema / properties / warnings / descriptionAdded value: +"Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections."
- Changed
openvsp.query9 fields changed- added
Input schema / $defs / QueryRequest / properties / analysis_name / descriptionAdded value: +"Installed analysis name queried only for kind=analysis (default VSPAEROSweep). Enumerated analyses are not necessarily executable through this wrapper." - added
Input schema / $defs / QueryRequest / properties / geom_id / descriptionAdded value: +"For kind=parameters, optionally select one geometry component when parm_ids is empty. Ignored when explicit parm_ids are supplied." - added
Input schema / $defs / QueryRequest / properties / geometry_file / descriptionAdded value: +"Optional existing .vsp3 path copied to a temporary model; required for parameters. Without a model, analysis defaults come from an empty model; tilde and relative paths resolve on the server." - added
Input schema / $defs / QueryRequest / properties / kind / descriptionAdded value: +"capabilities lists installed analyses; analysis reads native input types/defaults; parameters reads paginated parameter IDs/values/limits and requires geometry_file." - added
Input schema / $defs / QueryRequest / properties / limit / descriptionAdded value: +"Maximum parameter entries returned, 1-200 (default 100); used only for kind=parameters." - added
Input schema / $defs / QueryRequest / properties / offset / descriptionAdded value: +"Zero-based offset into parameter results (default 0); used only for kind=parameters." - added
Input schema / $defs / QueryRequest / properties / parm_ids / descriptionAdded value: +"Explicit parameter IDs for kind=parameters; defaults to enumeration from geom_id or all components. Takes precedence over geom_id; offset/limit also apply to this list." - added
Input schema / $defs / QueryRequest / properties / timeout_seconds / descriptionAdded value: +"Native query-process timeout in seconds (default 30). Model-free capability cache hits do not launch OpenVSP; temporary files are removed after the query." - added
Input schema / properties / request / descriptionAdded value: +"Native query kind, optional model and parameter pagination."
- Changed
openvsp.read_results5 fields changed- added
Input schema / $defs / ResultRequest / properties / coefficient_names / descriptionAdded value: +"Exact saved polar column names to return; empty returns all saved entries. Unknown names fail; no coefficient conversion or recomputation." - added
Input schema / $defs / ResultRequest / properties / log / descriptionAdded value: +"none omits logs (default); openvsp reads openvsp.log; solver reads solver.log beside the manifest. Missing requested logs fail." - added
Input schema / $defs / ResultRequest / properties / log_tail_lines / descriptionAdded value: +"Maximum trailing log lines, 1-200 (default 40). Only the final 64 KiB is read, so fewer complete lines may be returned; unused when log=none." - added
Input schema / $defs / ResultRequest / properties / manifest_file / descriptionAdded value: +"Path to a saved operation manifest.json, as returned in manifest_path; not sweep.json or batch.json. Tilde and relative paths resolve on the server; maximum read size is 4 MiB." - added
Input schema / properties / request / descriptionAdded value: +"Saved operation manifest, coefficient selection and log bounds."
- Changed
openvsp.run_vspaero49 fields changed- added
Input schema / $defs / OpenVSPRequest / properties / analysis / descriptionAdded value: +"One complete flight/solver settings object. Defaults do not come from the model; used by preflight and run_vspaero, ignored by modify/preview." - added
Input schema / $defs / OpenVSPRequest / properties / case_name / descriptionAdded value: +"Run-directory prefix and artifact filename stem, not a path. Defaults to case; use output_dir to choose the parent directory." - changed
Input schema / $defs / OpenVSPRequest / properties / geometry_file / descriptionPrevious value: -"Existing .vsp3 input; run_vspaero leaves it unchanged"New value: +"Existing .vsp3 path; tilde expands and relative paths use the server working directory. modify replaces this source after validation; preview, preflight and run_vspaero use private copies." - changed
Input schema / $defs / OpenVSPRequest / properties / output_dir / descriptionPrevious value: -"Parent directory for unique, persistent runs"New value: +"Parent for a unique persistent run directory. Omitted/null uses openvsp_runs beside the resolved source; tilde and relative paths resolve on the server. Existing run directories are not reused." - added
Input schema / $defs / OpenVSPRequest / properties / parameter_edits / descriptionAdded value: +"Parameter ID/value edits applied after set_commands, before one Update; defaults to none. Limits and final values are verified; obtain IDs with openvsp.query." - added
Input schema / $defs / OpenVSPRequest / properties / run_vspaero / descriptionAdded value: +"Legacy shared-request selector (default true). MCP modify/preview/preflight/run_vspaero force their named operation regardless of this value; it selects solve versus modify only when execute_openvsp has no explicit operation." - added
Input schema / $defs / OpenVSPRequest / properties / set_commands / descriptionAdded value: +"Ordered trusted AngelScript statements applied to the snapshot before parameter_edits and Update. Defaults to none; statements may perform their own I/O with server privileges." - added
Input schema / $defs / OpenVSPRequest / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP process timeout in seconds (default 600), including an invoked solver. Preparation, CPU admission and validation are outside this per-call native timeout." - added
Input schema / $defs / ParameterEdit / properties / parm_id / descriptionAdded value: +"Native parameter ID obtained from openvsp.query for the target model; not a display name." - added
Input schema / $defs / ParameterEdit / properties / value / descriptionAdded value: +"Requested finite value in the native units of that parameter, without conversion. Native limits and post-Update readback must accept the value." - added
Input schema / $defs / VSPAeroSettings / properties / alpha / descriptionAdded value: +"Angle of attack in degrees, passed to VSPAERO AlphaStart/AlphaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / beta / descriptionAdded value: +"Sideslip angle in degrees, passed to VSPAERO BetaStart/BetaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / bref / descriptionAdded value: +"Reference span in model length units; passed unchanged as bref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / cref / descriptionAdded value: +"Reference chord in model length units; passed unchanged as cref. Also identifies the chord basis of reynolds." - added
Input schema / $defs / VSPAeroSettings / properties / fixed_wake / descriptionAdded value: +"Use the official FixedWakeFlag; true requires WakeIters=0 in the generated solver file. Does not certify convergence." - added
Input schema / $defs / VSPAeroSettings / properties / forward_gmres_tolerance_factor / descriptionAdded value: +"Positive factor passed unchanged as ForwardGMRESConvergenceFactor, at most 1e12 (default 1); not an absolute residual tolerance." - added
Input schema / $defs / VSPAeroSettings / properties / length_unit / descriptionAdded value: +"Documentation only: m, ft or unspecified (default). Does not scale geometry or convert any input; all dimensional quantities must already be consistent." - added
Input schema / $defs / VSPAeroSettings / properties / mach / descriptionAdded value: +"Dimensionless Mach number for this steady subsonic case (0 <= Mach < 1). Independent of vinf, rho and reynolds; no atmosphere is derived." - added
Input schema / $defs / VSPAeroSettings / properties / ncpu / descriptionAdded value: +"Requested native CPU threads per solve, 1-255 (default 4). Must fit the server CPU budget and, for batch cases, the batch cpu_budget." - added
Input schema / $defs / VSPAeroSettings / properties / reynolds / descriptionAdded value: +"Dimensionless Reynolds number based on cref, passed as ReCref (not in millions). Independent of Mach, vinf and rho." - added
Input schema / $defs / VSPAeroSettings / properties / rho / descriptionAdded value: +"Freestream mass density in mass/volume units consistent with geometry and vinf (e.g. kg/m^3 in SI). Passed unchanged; no atmosphere or unit conversion." - added
Input schema / $defs / VSPAeroSettings / properties / sref / descriptionAdded value: +"Reference area in squared model length units; passed unchanged as Sref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / thick_geom_set / descriptionAdded value: +"OpenVSP set index for thick surfaces; -1 disables thick surfaces (default). Selected sets must exist, be nonempty and share no geometry with the thin set." - added
Input schema / $defs / VSPAeroSettings / properties / thin_geom_set / descriptionAdded value: +"OpenVSP set index for thin surfaces; 0 selects all geometry by default, -1 disables thin surfaces. Must differ from the thick set; at least one surface type must be selected." - added
Input schema / $defs / VSPAeroSettings / properties / vinf / descriptionAdded value: +"Freestream speed in length/time units consistent with the model and rho (e.g. m/s in SI). Passed unchanged; not computed from Mach and not converted by length_unit." - added
Input schema / $defs / VSPAeroSettings / properties / wake_iterations / descriptionAdded value: +"Requested WakeNumIter, 3-255 (default 30). When fixed_wake is true, the verified solver file instead has WakeIters=0." - added
Input schema / $defs / VSPAeroSettings / properties / wake_nodes / descriptionAdded value: +"Number of wake nodes passed as NumWakeNodes, 4-1024 (default 32)." - added
Input schema / $defs / VSPAeroSettings / properties / xcg / descriptionAdded value: +"X coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Xcg." - added
Input schema / $defs / VSPAeroSettings / properties / ycg / descriptionAdded value: +"Y coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Ycg." - added
Input schema / $defs / VSPAeroSettings / properties / zcg / descriptionAdded value: +"Z coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Zcg." - changed
Input schema / $defs / VSPCommand / properties / command / descriptionPrevious value: -"Trusted AngelScript statement; runs with server privileges"New value: +"Trusted AngelScript statement executed with server-process privileges. May perform arbitrary file or external I/O; private-copy/source-preservation guarantees do not constrain the statement itself." - added
Input schema / properties / request / descriptionAdded value: +"Model, optional private-copy edits and one flight condition." - added
Output schema / properties / analysis_inputs / descriptionAdded value: +"Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied." - added
Output schema / properties / artifacts / descriptionAdded value: +"Mapping of run-relative artifact names to absolute file paths; files remain after the call." - added
Output schema / properties / coefficients / descriptionAdded value: +"Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions." - added
Output schema / properties / effective_settings / descriptionAdded value: +"Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs." - added
Output schema / properties / geometry_path / descriptionAdded value: +"Absolute path to the validated model saved in the run directory, including for source-replacing edits." - added
Output schema / properties / log_path / descriptionAdded value: +"Absolute path to the retained OpenVSP process log." - added
Output schema / properties / manifest_path / descriptionAdded value: +"Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results." - added
Output schema / properties / numerical_quality / descriptionAdded value: +"Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations." - added
Output schema / properties / operation / descriptionAdded value: +"Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag." - added
Output schema / properties / parameter_values / descriptionAdded value: +"Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited." - added
Output schema / properties / preflight / descriptionAdded value: +"Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality." - added
Output schema / properties / result_path / descriptionAdded value: +"Absolute path to the solver .adb result; null for operations without a VSPAERO solve." - added
Output schema / properties / run_directory / descriptionAdded value: +"Absolute path to the unique persistent directory containing this operation's artifacts." - added
Output schema / properties / script_path / descriptionAdded value: +"Absolute path to the retained AngelScript automation script." - added
Output schema / properties / timings / descriptionAdded value: +"Measured operation phase durations in seconds; available phase keys depend on execution." - added
Output schema / properties / versions / descriptionAdded value: +"Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates." - added
Output schema / properties / warnings / descriptionAdded value: +"Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections."
- Changed
openvsp.set_parameters24 fields changed- added
Input schema / $defs / ParameterEdit / properties / parm_id / descriptionAdded value: +"Native parameter ID obtained from openvsp.query for the target model; not a display name." - added
Input schema / $defs / ParameterEdit / properties / value / descriptionAdded value: +"Requested finite value in the native units of that parameter, without conversion. Native limits and post-Update readback must accept the value." - added
Input schema / $defs / ParameterEditRequest / properties / edits / descriptionAdded value: +"1-200 unique parameter ID/value edits applied in one load/update. Obtain IDs with openvsp.query; duplicate IDs are rejected." - added
Input schema / $defs / ParameterEditRequest / properties / geometry_file / descriptionAdded value: +"Existing .vsp3 source to replace only after validating all edits and checking for concurrent source changes. Tilde and relative paths resolve on the server." - added
Input schema / $defs / ParameterEditRequest / properties / output_dir / descriptionAdded value: +"Parent for a unique persistent validation/artifact run; omitted/null uses openvsp_runs beside the source. The validated output also replaces geometry_file." - added
Input schema / $defs / ParameterEditRequest / properties / timeout_seconds / descriptionAdded value: +"Native OpenVSP process timeout in seconds (default 120); excludes preparation, CPU admission and validation." - added
Input schema / properties / request / descriptionAdded value: +"Source model and typed edits that replace it after validation." - added
Output schema / properties / analysis_inputs / descriptionAdded value: +"Requested analysis settings for solve/preflight, including defaults; empty for other operations. Units follow VSPAeroSettings and no conversion is applied." - added
Output schema / properties / artifacts / descriptionAdded value: +"Mapping of run-relative artifact names to absolute file paths; files remain after the call." - added
Output schema / properties / coefficients / descriptionAdded value: +"Native polar column names and unscaled numeric values for a verified solve; empty otherwise. Includes condition columns as well as dimensionless aerodynamic coefficients; AoA/Beta are degrees and Re/1e6 is Reynolds in millions." - added
Output schema / properties / effective_settings / descriptionAdded value: +"Verified solver-file values and observed CPU-thread information for a solve; empty before solving. Separate from requested analysis_inputs." - added
Output schema / properties / geometry_path / descriptionAdded value: +"Absolute path to the validated model saved in the run directory, including for source-replacing edits." - added
Output schema / properties / log_path / descriptionAdded value: +"Absolute path to the retained OpenVSP process log." - added
Output schema / properties / manifest_path / descriptionAdded value: +"Absolute path to this operation's manifest.json; pass as manifest_file to openvsp.read_results." - added
Output schema / properties / numerical_quality / descriptionAdded value: +"Observed iteration-history diagnostics for a solve; convergence is not_assessed and mesh study not_performed. Empty for non-solver operations." - added
Output schema / properties / operation / descriptionAdded value: +"Executed operation: create, modify, preview, preflight or run_vspaero; reflects the enforced operation rather than the legacy input flag." - added
Output schema / properties / parameter_values / descriptionAdded value: +"Final native readback values keyed by edited parameter ID; native units, empty when no parameters were edited." - added
Output schema / properties / preflight / descriptionAdded value: +"Selected thick/thin geometry IDs and requested settings when preflight ran; empty otherwise. Does not certify mesh quality." - added
Output schema / properties / result_path / descriptionAdded value: +"Absolute path to the solver .adb result; null for operations without a VSPAERO solve." - added
Output schema / properties / run_directory / descriptionAdded value: +"Absolute path to the unique persistent directory containing this operation's artifacts." - added
Output schema / properties / script_path / descriptionAdded value: +"Absolute path to the retained AngelScript automation script." - added
Output schema / properties / timings / descriptionAdded value: +"Measured operation phase durations in seconds; available phase keys depend on execution." - added
Output schema / properties / versions / descriptionAdded value: +"Package version, MCP SDK version and package SHA-256, with observed native versions when available. Package identity changes on source/metadata updates." - added
Output schema / properties / warnings / descriptionAdded value: +"Reference/unit/atmospheric consistency warnings from existing checks; no automatic corrections."
- Changed
openvsp.sweep28 fields changed- added
Input schema / $defs / SweepRequest / properties / case_name / descriptionAdded value: +"Sweep-directory prefix (default sweep); each condition uses point_000, point_001, etc. as its artifact stem." - added
Input schema / $defs / SweepRequest / properties / conditions / descriptionAdded value: +"1-25 explicit, complete steady analysis settings, executed sequentially. Omitted fields take VSPAeroSettings defaults independently; settings never carry over from previous entries." - added
Input schema / $defs / SweepRequest / properties / geometry_file / descriptionAdded value: +"Existing .vsp3 path snapshotted once for all conditions; the wrapper preserves the source. Tilde expands and relative paths use the server working directory." - added
Input schema / $defs / SweepRequest / properties / output_dir / descriptionAdded value: +"Parent for a unique persistent sweep directory; omitted/null uses openvsp_runs beside the resolved source. Tilde and relative paths resolve on the server." - added
Input schema / $defs / SweepRequest / properties / set_commands / descriptionAdded value: +"Same ordered trusted AngelScript statements applied independently to each condition's private model. Defaults to none; statements may perform their own I/O." - added
Input schema / $defs / SweepRequest / properties / timeout_seconds / descriptionAdded value: +"Total sweep budget in seconds (default 600), shared across conditions and resource waits; completed results remain if the budget is exhausted." - added
Input schema / $defs / VSPAeroSettings / properties / alpha / descriptionAdded value: +"Angle of attack in degrees, passed to VSPAERO AlphaStart/AlphaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / beta / descriptionAdded value: +"Sideslip angle in degrees, passed to VSPAERO BetaStart/BetaEnd for one condition." - added
Input schema / $defs / VSPAeroSettings / properties / bref / descriptionAdded value: +"Reference span in model length units; passed unchanged as bref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / cref / descriptionAdded value: +"Reference chord in model length units; passed unchanged as cref. Also identifies the chord basis of reynolds." - added
Input schema / $defs / VSPAeroSettings / properties / fixed_wake / descriptionAdded value: +"Use the official FixedWakeFlag; true requires WakeIters=0 in the generated solver file. Does not certify convergence." - added
Input schema / $defs / VSPAeroSettings / properties / forward_gmres_tolerance_factor / descriptionAdded value: +"Positive factor passed unchanged as ForwardGMRESConvergenceFactor, at most 1e12 (default 1); not an absolute residual tolerance." - added
Input schema / $defs / VSPAeroSettings / properties / length_unit / descriptionAdded value: +"Documentation only: m, ft or unspecified (default). Does not scale geometry or convert any input; all dimensional quantities must already be consistent." - added
Input schema / $defs / VSPAeroSettings / properties / mach / descriptionAdded value: +"Dimensionless Mach number for this steady subsonic case (0 <= Mach < 1). Independent of vinf, rho and reynolds; no atmosphere is derived." - added
Input schema / $defs / VSPAeroSettings / properties / ncpu / descriptionAdded value: +"Requested native CPU threads per solve, 1-255 (default 4). Must fit the server CPU budget and, for batch cases, the batch cpu_budget." - added
Input schema / $defs / VSPAeroSettings / properties / reynolds / descriptionAdded value: +"Dimensionless Reynolds number based on cref, passed as ReCref (not in millions). Independent of Mach, vinf and rho." - added
Input schema / $defs / VSPAeroSettings / properties / rho / descriptionAdded value: +"Freestream mass density in mass/volume units consistent with geometry and vinf (e.g. kg/m^3 in SI). Passed unchanged; no atmosphere or unit conversion." - added
Input schema / $defs / VSPAeroSettings / properties / sref / descriptionAdded value: +"Reference area in squared model length units; passed unchanged as Sref. Supply a model-specific value; the default is 1." - added
Input schema / $defs / VSPAeroSettings / properties / thick_geom_set / descriptionAdded value: +"OpenVSP set index for thick surfaces; -1 disables thick surfaces (default). Selected sets must exist, be nonempty and share no geometry with the thin set." - added
Input schema / $defs / VSPAeroSettings / properties / thin_geom_set / descriptionAdded value: +"OpenVSP set index for thin surfaces; 0 selects all geometry by default, -1 disables thin surfaces. Must differ from the thick set; at least one surface type must be selected." - added
Input schema / $defs / VSPAeroSettings / properties / vinf / descriptionAdded value: +"Freestream speed in length/time units consistent with the model and rho (e.g. m/s in SI). Passed unchanged; not computed from Mach and not converted by length_unit." - added
Input schema / $defs / VSPAeroSettings / properties / wake_iterations / descriptionAdded value: +"Requested WakeNumIter, 3-255 (default 30). When fixed_wake is true, the verified solver file instead has WakeIters=0." - added
Input schema / $defs / VSPAeroSettings / properties / wake_nodes / descriptionAdded value: +"Number of wake nodes passed as NumWakeNodes, 4-1024 (default 32)." - added
Input schema / $defs / VSPAeroSettings / properties / xcg / descriptionAdded value: +"X coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Xcg." - added
Input schema / $defs / VSPAeroSettings / properties / ycg / descriptionAdded value: +"Y coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Ycg." - added
Input schema / $defs / VSPAeroSettings / properties / zcg / descriptionAdded value: +"Z coordinate of the VSPAERO moment reference in model length units and model coordinates; passed unchanged as Zcg." - changed
Input schema / $defs / VSPCommand / properties / command / descriptionPrevious value: -"Trusted AngelScript statement; runs with server privileges"New value: +"Trusted AngelScript statement executed with server-process privileges. May perform arbitrary file or external I/O; private-copy/source-preservation guarantees do not constrain the statement itself." - added
Input schema / properties / request / descriptionAdded value: +"Shared source, explicit conditions and total sweep budget."
16 tool updates
v0.6.0- First observed
openvsp.batch_cancel - First observed
openvsp.batch_export - First observed
openvsp.batch_resume - First observed
openvsp.batch_status - First observed
openvsp.batch_submit - First observed
openvsp.create_model - First observed
openvsp.health - First observed
openvsp.inspect - First observed
openvsp.modify - First observed
openvsp.preflight - First observed
openvsp.preview - First observed
openvsp.query - First observed
openvsp.read_results - First observed
openvsp.run_vspaero - First observed
openvsp.set_parameters - First observed
openvsp.sweep
TDQS
Scored across 16 tools
Each tool targets a distinct operation: installation checks, model create/inspect/modify/preview, parameter editing, single/sweep/batch VSPAERO runs, and batch lifecycle control. The descriptions actively disambiguate adjacent tools with explicit cross-references, so there is no realistic overlap.
The openvsp. prefix and consistent snake_case style make the set feel uniform, and most tool names use clear action words. However, the pattern is not strictly verb_noun: standalone verbs like health, query, and sweep, plus resource-prefixed names like batch_status and batch_export, break strict consistency.
At 16 tools the server is at the upper edge of a typical MCP surface, but the count maps cleanly onto model setup, analysis execution, results reading, and batch control. Each tool has a distinct role, so the size feels reasonable rather than bloated.
The server covers the full create/edit/inspect/run/read lifecycle, including single, sweep, and batch execution modes plus preflight and health checks. The main gap is the lack of explicit deletion or cleanup tools for models and batches, which is a minor omission given the strong emphasis on retaining artifacts.
Maintenance
Related MCP Connectors
NHTSA MCP — wraps the NHTSA vPIC (Vehicle Product Information Catalog) API (free, no auth)
FlightAware MCP — wraps FlightAware AeroAPI v4 (aeroapi.flightaware.com)
NREL MCP — wraps the US National Renewable Energy Laboratory developer API
Flights MCP — wraps OpenSky Network API (free, no auth required)
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables automated geometry editing and aerodynamic analysis using OpenVSP and VSPAero through natural language. Provides tools to modify aircraft geometry parameters and run computational fluid dynamics simulations programmatically.436MIT
- AlicenseNot gradedqualityBmaintenanceProvides MCP tools for CPACS-oriented TiGL workflows, enabling lifecycle management, inspection, export, and parameter manipulation of aircraft geometry models without native geometry runtimes.3MIT
- FlicenseAqualityDmaintenanceProvides aerodynamic analysis tools through MCP, enabling geometry generation, meshing, CFD solving, and visualization for 2D airfoils.7-
- AlicenseNot gradedqualityBmaintenanceAn MCP server that provides pre-flight validation and post-processing tools for OpenMC Monte Carlo transport simulations, catching common authoring mistakes before jobs hit the HPC queue.MIT