mcp-openems
This MCP server lets you design RF/electromagnetic structures (antennas and PCB interconnects), get analytical dimensions/impedances, and generate ready-to-run openEMS FDTD simulation scripts.
Antenna design: patch, dipole, monopole, pyramidal horn, and axial-mode helix antennas (dimensions, gain/directivity estimates).
Transmission-line/PCB design: microstrip trace (Z₀, εeff), edge-coupled lines (even/odd mode, diff/common impedance), and via transitions (parasitics).
Simulation scripting: generate complete OpenEMS Python scripts for full-wave FDTD simulation of any created design.
Design management: list, retrieve, export (JSON/SVG/ASCII), compare designs, and get optimization hints.
Environment check: verify whether OpenEMS is installed and available.
Reference: list available antenna types with typical gain and applications.
Works without OpenEMS for analytical design and geometry export; full-wave simulation requires OpenEMS installed.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-openemsDesign a 2.4 GHz patch antenna on FR-4"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI-assisted antenna and RF-structure design via openEMS FDTD, driven over MCP. Patch / dipole / monopole / horn / helix antennas, microstrip and coupled-line transmission lines, via transitions: geometry, analytical Z₀/εeff, and ready-to-run openEMS Python scripts.
Quick start · Tools · Examples · Suite catalog
An MCP server for designing antennas and electromagnetic structures using openEMS FDTD simulation. Provides analytical design calculators that work immediately, plus openEMS script generation for full-wave simulation.
Part of the engineering toolkit
This repo is part of eng-mcp-suite, an MCP-driven engineering toolkit for RF / EMC / PCB / signal-integrity / lab-test workflows.
Related tools in the toolkit:
Tool | When to reach for it |
2D quasi-TEM closed-form for transmission lines (microstrip, stripline, CPWG, differential, three-conductor). Use this when you need impedance fast and the geometry is 2D. | |
Wire-antenna method-of-moments (dipole / Yagi / vertical / loop / inverted-V). Use this when you have a wire-antenna geometry and don't need the 3D-field detail of FDTD. | |
PCB layout review (decoupling, return paths, plane resonances, DDR/PCIe/USB SI). Often pairs with mcp-openems for full-wave validation of a flagged region. |
When to use mcp-openems specifically: full-wave 3D FDTD validation, broadband S-parameters, near/far-field characterization, antenna geometries with 3D features (horns, helices), or when closed-form is running out of accuracy.
Related MCP server: Lumerical MCP Server
Features
Antenna Design Tools
openems_create_patch - Microstrip patch antenna (WiFi, GPS, satellite)
openems_create_dipole - Half-wave dipole antenna
openems_create_monopole - Quarter-wave monopole over ground plane
openems_create_horn - Pyramidal horn antenna for specified gain
openems_create_helix - Axial-mode helix for circular polarization
Simulation & Export
openems_generate_script - Generate complete OpenEMS Python simulation script
openems_check_installation - Check if OpenEMS is available
Design Management
openems_list_designs - List all designs in session
openems_get_design - Get full design details with geometry
openems_list_antenna_types - Reference for antenna types and applications
Installation
1. Clone and install
git clone https://github.com/RFingAdam/mcp-openems.git
cd mcp-openems
uv pip install -e .2. (Optional) Install OpenEMS for simulation
The MCP works without OpenEMS: the design tools calculate dimensions analytically. Full FDTD simulation needs the CSXCAD and openEMS Python bindings.
These are not on PyPI. pip install CSXCAD openEMS does not work. They are
compiled extensions built from source against the openEMS C++ install:
git clone --recursive https://github.com/thliebig/openEMS-Project.git
cd openEMS-Project
./update_openEMS.sh ~/opt/openEMS # builds the C++ libraries
source .venv/bin/activate # the venv you installed this MCP into
./scripts/build_python.sh --cpp-install-dir ~/opt/openEMSTwo things that will bite you, both of which broke this repo in 2026-08:
The bindings are ABI-pinned to one Python minor version. A
cpython-314extension is invisible to a 3.12 interpreter, and vice versa. If you recreate the venv on a different Python, rebuild the bindings too.They link against system HDF5, VTK and boost. A distro upgrade that bumps those sonames breaks every
.sohere withlibhdf5_serial.so.NNN: cannot open shared object file. Rebuild against the new libraries;build_python.sh --cpp-install-dirrebuilds only the Python layer, which is enough when the C++ install is already current.
Run openems_check_installation to see which of these you are hitting: it
reports the real import error and the interpreter in use.
3. Add to your MCP client
Claude Code:
claude mcp add openems -- uv run --directory /path/to/mcp-openems mcp-openemsConfig file format:
{
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-openems", "mcp-openems"]
}Usage Examples
Design a WiFi patch antenna
Design a 2.4 GHz patch antenna on FR-4 substrate (er=4.4, 1.6mm thick)The AI will:
Use
openems_create_patchto calculate dimensionsReturn patch length, width, feed position
Provide estimated directivity and impedance
Design a satellite uplink antenna
I need a circularly polarized antenna for 5.8 GHz with about 12 dBi gainThe AI will use openems_create_helix for CP requirements.
Generate simulation script
Generate an OpenEMS script for this antenna so I can run a full simulationThe AI will use openems_generate_script to create a complete Python script.
Compare antenna types
What antenna types are available? I need something for a handheld radio at 440 MHzThe AI will use openems_list_antenna_types and recommend appropriate options.
Tool Reference
Design Output Format
Each design tool returns:
design_id: UUID for referencing the design
dimensions: Calculated physical dimensions in mm
calculated: Derived parameters (impedance, gain estimates)
geometry: OpenEMS-compatible geometry specification
Example Output
{
"success": true,
"design_id": "550e8400-e29b-41d4-a716-446655440000",
"design": {
"name": "2.4 GHz Patch",
"type": "patch",
"frequency_ghz": 2.4,
"dimensions": {
"patch_length_mm": 28.85,
"patch_width_mm": 37.24,
"feed_inset_mm": 8.92,
"ground_plane_mm": 94.48
},
"calculated": {
"effective_er": 3.33,
"estimated_directivity_dbi": 7.2
}
}
}Generated Script
The openems_generate_script tool creates a complete Python script that:
Sets up the FDTD simulation
Creates geometry from the design
Adds mesh with appropriate resolution
Runs the simulation
Extracts S-parameters and plots results
Antenna Design Formulas
Antenna | Method | Key Formula |
Patch | Transmission Line Model | L = c/(2f√εeff) - 2ΔL |
Dipole | Classical | L = 0.95 × λ/2 |
Monopole | Image Theory | H = 0.95 × λ/4 |
Horn | Aperture Theory | G = 4πAe/λ² |
Helix | Kraus Model | C ≈ λ, S = C tan(α) |
Without OpenEMS
Even without OpenEMS installed, this MCP provides:
Analytical dimension calculations
Geometry specifications for manual modeling
Reference impedance and gain estimates
OpenEMS script generation for later use
With OpenEMS
With OpenEMS installed, you can run the generated scripts to:
Perform full-wave FDTD simulation
Get accurate S-parameters and input impedance
Calculate radiation patterns and gain
Visualize fields in ParaView
Supported Frequencies
The design tools work across the RF spectrum:
HF (3-30 MHz): Dipole, monopole
VHF (30-300 MHz): All types
UHF (300 MHz-3 GHz): All types
Microwave (3-30 GHz): Patch, horn, helix
mmWave (30-300 GHz): Patch, horn (with appropriate substrate)
License
AGPL-3.0-or-later. Relicensed from Apache-2.0 in v0.2.0 to align with the eng-mcp-suite toolkit-wide AGPL move. The underlying openEMS engine remains GPL-3.0; this wrapper is AGPL-3.0-or-later and invokes the engine at runtime without redistribution.
Trademarks and brand assets
This project is not affiliated with, endorsed by, or sponsored by the openEMS project. "openEMS" is used here only to identify the software this project interoperates with.
The project name and the logo files in this repository are not part of the licensed work. The licence above grants no permission to use them, except as needed to describe the origin of the work.
Author
Adam Engelbrecht - @RFingAdam
Available Tools
16 toolsopenems_check_installationA
Check if OpenEMS is installed and available for running simulations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'check' implies a non-destructive read-only operation, the description does not specify what the tool returns (e.g., boolean, status message), whether it executes an external command, or what 'available' precisely means. This leaves the agent uncertain about the tool's behavior and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that states the core purpose without any redundancy or extraneous information. It is perfectly sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the basic purpose but omits crucial context about what the agent should expect when the check runs. Without knowing the return value or how to interpret the result, the description is not fully complete for guiding the agent's next actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The description does not need to compensate for schema gaps, and no additional parameter information is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and identifies the resource 'OpenEMS' with a clear purpose 'available for running simulations'. It distinctly differs from sibling tools that involve creating, listing, or exporting designs, making its role 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 phrase 'available for running simulations' implies this should be used before running simulations, but there is no explicit guidance on when to use this tool versus alternatives, nor any exclusions. Usage is understood from context rather than stated directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_compare_designsA
Compare multiple antenna designs side-by-side with metrics and recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| design_ids | Yes | List of design IDs to compare |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It discloses that the output includes metrics and recommendations, but it does not explicitly state that the operation is read-only or that design IDs must already exist. This gives some behavioral context but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no annotations, and no output schema, the description gives a general sense of what it does but does not explain return value details or prerequisites like where to obtain design IDs. It is adequate but lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter design_ids is fully described in the schema as 'List of design IDs to compare.' The description adds no extra syntax, relationship guidance, or prerequisite info 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 uses a specific verb 'Compare' with resource 'multiple antenna designs' and clarifies the outcome 'with metrics and recommendations.' This clearly distinguishes it from sibling tools like get_design (single design) and list_designs (list all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for comparing multiple designs, providing context for when to use it over single-design tools. However, it does not explicitly name alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_coupled_linesA
Design edge-coupled microstrip lines. Calculates even/odd mode impedances, differential/common-mode impedances, and coupling coefficient. 4-port geometry for NEXT/FEXT analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| spacing_mm | Yes | Edge-to-edge spacing between traces in mm | |
| substrate_er | No | Substrate dielectric constant (default 4.2 for FR-4) | |
| frequency_ghz | Yes | Analysis frequency in GHz | |
| trace_width_mm | Yes | Width of each trace in mm | |
| trace_length_mm | Yes | Coupled length in mm | |
| dielectric_height_mm | Yes | Dielectric thickness in mm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses calculation outputs (even/odd, differential/common-mode, coupling) which is useful behavioral context. But it does not mention operational details such as whether the tool writes to disk, requires OpenEMS installation, or returns a model vs a result set. There is no contradiction with annotations (since none exist), but the behavioral disclosure is incomplete.
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, zero fluff. The first sentence says what it does, the second describes calculations and use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is reasonably complete for a design tool: it explains the geometry type, the computed quantities, and the application (NEXT/FEXT). There is no output schema, but the description compensates by naming key outputs. It stops short of specifying whether the tool returns values directly or generates a script, which would add further completeness, but for tool selection it suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented in the schema. The description adds global context about outputs (e.g., 'calculates coupling coefficient') but does not provide per-parameter semantic enhancements beyond the schema. Baseline of 3 for high schema coverage 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 'Design edge-coupled microstrip lines,' a specific verb+resource combination that clearly distinguishes the tool from siblings like create_microstrip (single line) and antenna creation tools. It also lists concrete calculation outputs (even/odd mode impedances, differential/common-mode impedances, coupling coefficient) that leave no ambiguity about its function.
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?
Mentions '4-port geometry for NEXT/FEXT analysis,' providing clear context for when this tool is appropriate (crosstalk analysis). However, it does not explicitly name alternatives or state when not to use it, though the sibling tool list implies alternatives like single-line microstrip design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_dipoleB
Design a half-wave dipole antenna. Classic resonant antenna with well-known characteristics.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| frequency_ghz | Yes | Center frequency in GHz | |
| wire_radius_mm | No | Wire radius in mm (default 1.0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says 'Design a half-wave dipole antenna.' It does not mention side effects, return values, or any safety/state implications, leaving the agent without essential context for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action. Every word contributes; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is too sparse. It fails to explain what the tool returns, how the design is generated, or how it compares to nearby sibling tools like monopole, despite having several related creation tools in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all three parameters (name, frequency_ghz, wire_radius_mm), so the baseline is 3. The description adds no additional parameter-specific semantics, such as how frequency or wire radius affect the antenna design.
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 designs a half-wave dipole antenna, using a specific verb and resource. This distinguishes it from sibling tools like monopole, patch, and horn antennas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to choose a dipole over alternative antennas such as monopole or patch. The phrase 'classic resonant antenna' implies a general-purpose antenna but does not describe preferred use cases or trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_helixB
Design an axial-mode helical antenna for circular polarization.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| turns | No | Number of turns (more turns = higher gain) | |
| frequency_ghz | Yes | Center frequency in GHz |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the purpose and does not mention what the tool returns, whether it modifies a design library, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the main purpose, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description should convey what happens when invoked. It lacks information about return values, side effects, or prerequisites, making it incomplete for a create operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage of parameter descriptions, so the description adds no extra parameter semantics. The mention of circular polarization is a design characteristic, not a parameter clarification.
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 designs an axial-mode helical antenna for circular polarization, using a specific verb and resource. It differentiates from sibling create tools by specifying the antenna type and mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this over alternatives. It implies the tool is for helical antenna design but does not mention contrasting with other antenna types or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_hornA
Design a pyramidal horn antenna for specified gain. Calculates aperture dimensions and length.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| gain_dbi | No | Target gain in dBi (typically 10-25) | |
| frequency_ghz | Yes | Center frequency in GHz |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds a useful behavioral detail by stating it calculates aperture dimensions and length, but it does not disclose whether the design is saved, returned, or what side effects occur. This is minimal but not completely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary purpose, and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema or annotations, yet the description does not state what the tool returns or whether it saves a design. This leaves the agent uncertain about how to handle the result, especially since sibling tools like get_design and export_design imply a stored design workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description links gain to dimension calculation, adding some context, but it does not elaborate on the name parameter or parameter trade-offs beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool designs a pyramidal horn antenna for a specified gain and calculates aperture dimensions and length. This specific verb-noun pair distinguishes it from sibling antenna creation tools like patch, dipole, and helix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need a pyramidal horn antenna with a specific gain. However, it does not explicitly mention alternatives or when not to use this tool, though the clear purpose provides adequate contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_microstripA
Design a microstrip trace and calculate characteristic impedance using Hammerstad formula. Generates 2-port geometry for S-parameter extraction.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| substrate_er | No | Substrate dielectric constant (default 4.2 for FR-4) | |
| frequency_ghz | Yes | Analysis frequency in GHz | |
| trace_width_mm | Yes | Trace width in mm | |
| trace_length_mm | Yes | Trace length in mm | |
| dielectric_height_mm | Yes | Dielectric (substrate) thickness in mm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds meaningful behavioral context by naming the Hammerstad formula and stating that it generates 2-port geometry for S-parameter extraction. However, it does not disclose other relevant behaviors like whether it validates inputs, requires additional setup, or how it interacts with existing designs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action and immediately adding the calculation method and purpose. No word is wasted, and the structure is clear 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?
Given the schema covers all parameters and there is no output schema, the description adequately explains the tool's purpose and what it produces (impedance, 2-port geometry). It provides enough context for an agent to understand the tool's role within the OpenEMS family, though it could have elaborated on the generated geometry's role in the broader simulation workflow.
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 six parameters and their units. The description does not add additional parameter semantics beyond the general context of a microstrip design, which meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: designing a microstrip trace, calculating characteristic impedance via the Hammerstad formula, and generating 2-port geometry for S-parameter extraction. It uses a specific verb-resource pair ('Design a microstrip trace') and distinguishes well from sibling tools like openems_create_patch or openems_create_coupled_lines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for microstrip trace design and impedance calculation, but it does not explicitly mention when to use this tool versus alternatives such as openems_create_coupled_lines or openems_create_via. There is no exclusion or comparison to other similar transmission-line tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_monopoleB
Design a quarter-wave monopole antenna over a ground plane.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| frequency_ghz | Yes | Center frequency in GHz | |
| wire_radius_mm | No | Wire radius in mm | |
| ground_plane_mm | No | Ground plane diameter in mm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The single sentence leaves several behavioral aspects undisclosed: does 'design' create a named design object? Are dimensions automatically calculated from frequency? What happens if 'name' is omitted? What is the effect on the existing design environment? These gaps are significant for a create-type tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler. It uses precise terminology and gets straight to the point, making it easy to parse and quick to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (simple parameter set) and high schema coverage, the description is minimally viable for an agent to understand the tool's core function. However, it lacks side-effect information (e.g., creating a design object) and output expectations (what the design looks like after creation). With no annotations and no output schema, the description could be more complete, but it is not severely deficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a clear description (e.g., 'Center frequency in GHz', 'Wire radius in mm'). The tool description adds no extra parameter-level meaning, such as how frequency relates to the quarter-wave length or constraints on ground plane size relative to wavelength. The baseline of 3 is appropriate because the schema handles parameter clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Design') and the resource ('a quarter-wave monopole antenna over a ground plane'), which differentiates it from sibling tools like dipole, patch, or horn. The specificity of 'quarter-wave' and 'over a ground plane' leaves no ambiguity about the antenna type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus the many alternative antenna creation tools in the sibling list. There is no mention of scenarios (e.g., 'use for vertical polarization' or 'for a balanced antenna use dipole') or exclusions. The description only implies usage through the antenna type, which is not sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_patchB
Design a rectangular microstrip patch antenna. Calculates dimensions using transmission line model for specified frequency and substrate.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| substrate_er | No | Substrate dielectric constant (default 4.4 for FR-4) | |
| frequency_ghz | Yes | Center frequency in GHz (e.g., 2.4 for WiFi) | |
| substrate_height_mm | No | Substrate thickness in mm (default 1.6) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It mentions the calculation method but does not state whether the tool creates a persistent design, returns dimensions, requires an OpenEMS installation, or has side effects. The word 'design' hints at creation, but the outcome and side effects remain unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. Every sentence earns its place, and there is no filler or redundancy. The structure is efficient and immediately understandable.
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?
Without an output schema, the description should clarify what the tool returns or produces. It only says 'calculates dimensions' but not whether it saves a design, outputs a script, or generates numeric results. For a design tool with several inputs, this is incomplete and leaves the agent uncertain about the expected outcome.
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 provides descriptions for all parameters (100% coverage), so the baseline is 3. The description references 'frequency and substrate' which maps to frequency_ghz and substrate_er, but it does not add meaning beyond the schema for any parameter, including substrate_height_mm or name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool designs a 'rectangular microstrip patch antenna' and uses a specific method ('transmission line model'), clearly distinguishing it from dipole, monopole, horn, and other sibling antennas. The verb 'design' and target resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for patch antenna design at a given frequency and substrate, but it does not explicitly contrast with alternatives like openems_create_microstrip or mention conditions when not to use it. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_create_viaA
Design a via transition between two PCB layers. Models via barrel, pads, and feed traces. Estimates parasitic inductance and capacitance. 2-port geometry for reflection/transmission analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Design name | |
| pad_mm | Yes | Via pad diameter in mm | |
| drill_mm | Yes | Via drill diameter in mm | |
| substrate_er | No | Substrate dielectric constant (default 4.2) | |
| frequency_ghz | Yes | Analysis frequency in GHz | |
| dielectric_height_mm | Yes | Dielectric thickness between layers in mm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool models physical structures, estimates electrical parasitics, and sets up a 2-port geometry. This goes beyond the tool name and schema, informing the agent about the tool's modeling and analytical nature, which is valuable. It does not mention side effects or environment dependencies, but nothing contradicts the tool's purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each contributing unique information: purpose, modeled elements, and analysis type. No redundant phrasing, front-loaded with the primary verb and object. Ideal length for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, 4 required, all documented. The description explains the physical and electrical purpose, which is sufficient for an agent to decide to use it. It lacks explicit statement of output format (e.g., S-parameters), but given the absence of an output schema and the simplicity of a via design, the description covers the essentials effectively.
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 baseline is 3. The description does not add parameter-specific details beyond the schema, but it does provide context that reinforces the meaning of parameters like dielectric_height_mm and frequency_ghz. It neither enhances nor detracts from the schema's already complete parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Design' and a specific resource 'via transition between two PCB layers', clearly distinguishing it from sibling tools like antennas or microstrip. It further elaborates with modeling details (barrel, pads, feed traces) and analysis purpose (parasitic inductance/capacitance, 2-port reflection/transmission), leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case: designing a via for inter-layer PCB transitions and analyzing its parasitic/transmission characteristics. It does not explicitly mention alternatives or exclusion criteria, but the context is clear enough that an agent can infer when to select this tool over antenna or microstrip tools. No explicit when-not guidance, hence not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_export_designA
Export antenna design for visualization. Formats: json (full data), svg (vector graphic), ascii (terminal art).
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format: json, svg, or ascii | ascii |
| design_id | Yes | ID of the design to export |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself. It mentions export formats and their meaning (e.g., json as full data, svg as vector graphic), which gives some behavioral context. However, it does not clarify whether the operation is read-only, whether it modifies state, or how errors (e.g., missing design) are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences that front-load the purpose and then succinctly list formats with brief clarifications. Every word adds value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and no output schema. The description adequately covers purpose and format semantics, but it leaves out details about the return structure (e.g., whether json is returned as a string or object) and error behavior. Still, given the low complexity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, so the baseline is 3. The description adds meaning beyond the schema by defining what each format represents (full data, vector graphic, terminal art), which helps select the correct format value. The design_id parameter is already clear from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb ('Export'), resource ('antenna design'), and purpose ('for visualization'). It enumerates the output formats (json, svg, ascii), which helps distinguish it from sibling tools like get_design, but it does not explicitly differentiate from alternatives that might also retrieve design data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage contexts through the stated formats and purpose, but it provides no explicit guidance on when to use this tool versus siblings such as get_design or list_designs. There are no exclusions or alternative tool mentions, leaving selection partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_generate_scriptB
Generate a complete OpenEMS Python simulation script for a design. The script can be run independently.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ID of the design to generate script for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the script is complete and can run independently, but it does not disclose whether the operation has side effects (e.g., writing files), what happens if the design_id is invalid, or the exact return format. This lack of behavioral context is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and wastes no words. It conveys the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with one parameter and no output schema, so the description is minimally adequate. It tells the agent a script will be generated and is independently runnable, but it does not explain how the script relates to the design or what the output contains, especially considering the absence of 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 coverage is 100% for the single parameter 'design_id', which is clearly described as 'ID of the design to generate script for'. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a complete OpenEMS Python simulation script for a design, with the script being runnable independently. However, it does not differentiate from sibling tools such as openems_export_design or openems_get_design, which may also produce script-like or design-related outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or scenarios where this tool is preferred over sibling tools like openems_export_design or openems_compare_designs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_get_designB
Get full details of a specific antenna design including dimensions and geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ID of the design |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read operation through 'Get' but does not explicitly state that it is non-destructive, nor does it mention any authentication requirements, rate limits, or side effects. The return behavior beyond 'full details' is left vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose and key output specifics. There is no redundant or unnecessary wording, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter, the description adequately states the purpose and gives some indication of the returned content (dimensions and geometry). However, without an output schema, the phrase 'full details' is somewhat vague, and there is no mention of whether other design properties are included or how the response is structured.
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 already provides 100% coverage for the single parameter design_id, with the description 'ID of the design'. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'a specific antenna design', with specifics 'dimensions and geometry'. It distinguishes from sibling tools like list_designs (which likely returns summaries) and export_design, though it doesn't explicitly name alternatives. Overall purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The presence of sibling tools is not leveraged to contextualize usage, leaving the agent to infer that this is for fetching a single design by ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_list_antenna_typesA
List available antenna types with descriptions, typical gain, and applications.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It clearly states the tool lists antenna types with specific attributes, implying a read-only operation. However, it does not explicitly state the return format, sorting, or any side effects. Given the simplicity of the operation, this provides reasonable transparency but leaves some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states what the tool does and the content of the output. Every word contributes to understanding, with no redundancy or extraneous information. It is excellently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description adequately covers the key information: what is listed and the types of attributes included. However, it lacks explicit mention of the response format or whether any filtering is possible. The context from siblings helps, but the description alone is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description appropriately does not attempt to describe nonexistent parameters. The schema is empty and fully covered, so no additional parameter information is needed. The baseline of 4 for zero-parameter tools 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 uses a specific verb ('List') and resource ('available antenna types'), and clearly states the output contents ('descriptions, typical gain, and applications'). This clearly distinguishes it from sibling tools that create specific antenna types, and from openems_list_designs which lists designs rather than antenna types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. There is no mention of scenarios where a user should or should not use this tool, nor any reference to sibling tools like the creation tools. The usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_list_designsA
List all antenna designs created in this session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It conveys a read-only session-scoped operation via 'List all ... created in this session.' However, it does not disclose the return format, ordering, or behavior for an empty session, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. Every word serves a purpose, making it appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description covers the core action and scope well. It could mention what is returned (e.g., design names or IDs), but the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% by default. Per the rubric, zero-parameter tools receive a baseline of 4; the description adds no parameter details because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), resource ('antenna designs'), and scope ('created in this session'). This clearly distinguishes it from sibling tools like openems_list_antenna_types (lists types) and openems_get_design (retrieves a specific design).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: to enumerate designs created in the session. It does not explicitly mention alternatives or exclusions, but for a simple list tool, the context is sufficient to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openems_optimize_hintsA
Get optimization suggestions for an antenna design including parameter sensitivities and improvement strategies.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ID of the design to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions the type of output (parameter sensitivities and improvement strategies) but does not state whether the operation is read-only, whether it requires prior simulation, or any side effects or dependencies. This is a significant gap for an analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the tool's core purpose and output components without unnecessary words. It earns its place entirely.
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 reasonably complete for a simple one-parameter tool, but with no output schema and no annotations, it leaves out behavioral context such as whether the tool runs simulations, how to interpret the results, or any prerequisites. It covers the basics but does not fully equip the agent to use the tool successfully.
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 100% coverage for the single parameter 'design_id' with a clear description. The tool description adds minimal extra meaning, just repeating 'antenna design' without explaining how the design ID is used or what constitutes a valid ID. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: getting optimization suggestions for an antenna design. It specifies the resource (antenna design) and the type of output (parameter sensitivities and improvement strategies). This distinguishes it from sibling tools which are primarily creation, retrieval, or comparison 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 implies usage when optimization suggestions are needed for an antenna design, but it does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or prerequisites. The intended context is inferable but not clearly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
16 tool updates
v0.2.0- First observed
openems_check_installation - First observed
openems_compare_designs - First observed
openems_create_coupled_lines - First observed
openems_create_dipole - First observed
openems_create_helix - First observed
openems_create_horn - First observed
openems_create_microstrip - First observed
openems_create_monopole - First observed
openems_create_patch - First observed
openems_create_via - First observed
openems_export_design - First observed
openems_generate_script - First observed
openems_get_design - First observed
openems_list_antenna_types - First observed
openems_list_designs - First observed
openems_optimize_hints
TDQS
Each antenna and PCB creation tool targets a distinct geometry (patch, dipole, monopole, horn, helix, microstrip, coupled lines, via). Minor potential confusion exists between patch antenna and microstrip line, and between script generation and design export, but overall purposes are clear.
All tools share the 'openems_' prefix and follow a consistent verb_noun pattern (create_, list_, get_, generate_, export_, check_, optimize_, compare_). Naming is uniform and predictable, with no mixed conventions.
With 16 tools, the server is slightly above the ideal 3-15 range but still well-scoped. It covers antenna design, PCB analysis, design management, and utility functions without feeling bloated or redundant.
The set covers design creation, listing, retrieval, export, optimization hints, and comparison. However, there are no update/delete tools for designs, and simulation execution (running OpenEMS) is not directly supported—only script generation is provided. These gaps prevent a full end-to-end workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Verified KiCad footprints, symbols & 3D models for AI agents. No signup, CC-BY-4.0, quality-gated.
Create RF signal projects from prompts, inspect graphs, and export IQ data.
- 3DOptixOAuthcom.3doptix
Optical design, simulation and analysis with GPU-powered ray tracing. Import from Zemax and CAD.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to control CST Studio Suite for 3D electromagnetic simulation, antenna design, and schematic-based field-circuit co-simulation through 177 MCP tools.1006AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables natural-language-driven automation of Ansys Lumerical photonic simulations (FDTD, MODE, DEVICE, INTERCONNECT) with 40+ tools for geometry, materials, sources, monitors, solvers, results, optimization, and documentation.MIT
- AlicenseCqualityBmaintenanceEnables engineers to convert antenna papers/diagrams and natural language specs into auditable, versionable HFSS Python modeling code, with optional simulation and parametric optimization.22MIT
- AlicenseNot gradedqualityAmaintenanceTurns CST Studio Suite into an AI-controllable electromagnetic design lab, enabling conversational THz metamaterial absorber design, unit-cell automation, Floquet port control, batch solve with checkpoint-resume, and surrogate-model predictions.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RFingAdam/mcp-openems'
If you have feedback or need assistance with the MCP directory API, please join our Discord server