Skip to main content
Glama

em_fullwave_submit

Submit asynchronous full-wave FDTD electromagnetic simulations to openEMS for waveguide sweeps or dipole S11 analysis, returning a job ID to poll for results.

Instructions

Full-wave FDTD EM solve on openEMS, asynchronous (OFF the MCP channel) — the real-field twin of the analytic waveguide_cutoff / dipole_resonance oracles. openEMS is GPL-3.0 and is run ONLY out-of-process via ankusdrive/em_fullwave_gpl_runner.py; degrades to {ok:false, reason, install} when no openEMS venv resolves.

problem='waveguide_sweep' (default): hollow rectangular guide, broad wall a_mm/narrow wall b_mm (default a/2), length length_mm (default 60), TE10 port at each end. Sweep f_start_ghz..f_stop_ghz (default 4..10 GHz — straddling the WR-90 cutoff 6.56 GHz) in n_freq points, nrts max timesteps, cells_per_wl mesh density, eps_r fill. The result's fc_crossing_ghz (half-power transmission) vs the analytic c/(2a) (fc_ratio≈1, evanescent_mean ≈0, propagating_mean≈1) IS the gate. problem='dipole_s11': centre-fed thin dipole (length_mm, gap_mm, radius_mm), sweep S11, report first resonance.

Returns the degradation dict, or {job_id, status, cache_hit}; poll job_result for {ok, fc_analytic_ghz, freq_ghz[], s21_db[], transmission_norm[], fc_crossing_ghz, fc_ratio, evanescent_mean, propagating_mean, n_cells, wall_s} (waveguide) or {freq_ghz[], s11_db[], resonance_ghz} (dipole).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
a_mmNo
b_mmNo
nrtsNo
eps_rNo
gap_mmNo
n_freqNo
problemNowaveguide_sweep
timeoutNo
length_mmNo
radius_mmNo
f_stop_ghzNo
f_start_ghzNo
cells_per_wlNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses asynchronous execution off the MCP channel, that openEMS is run out-of-process via a specific runner, the degradation response, and that results are retrieved by polling `job_result`. It does not cover rate limits, permissions, or expected wall-clock duration beyond the `timeout` default, but the behavioral picture is substantially complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loads the core identity, async nature, and degradation behavior before drilling into parameters and return values. Every major sentence adds needed detail for a complex 13-parameter tool, though the prose style is compact and could be easier to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, annotation-free tool with 13 parameters and no output schema, the description covers the important bases: parameter meanings, async polling flow, degradation behavior, and the shape of returned results for both problem types. The only notable gap is that `timeout` is not explained in the description, but the rest is complete enough to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 13 parameters, so the description must compensate, and it largely does: it explains `problem` values, defines `a_mm`/`b_mm` (broad/narrow wall), `length_mm`, `f_start_ghz`..`f_stop_ghz`, `n_freq`, `nrts`, `cells_per_wl`, `eps_r`, and the dipole-specific `gap_mm`/`radius_mm`. It omits the `timeout` parameter's meaning, but otherwise adds significant semantic value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Full-wave FDTD EM solve on openEMS') and distinguishes itself from sibling oracles by naming them: 'the real-field twin of the analytic `waveguide_cutoff` / `dipole_resonance` oracles.' It also names two problem modes and their core outputs, so an agent can tell exactly what this tool does and how it differs from the analytic alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use it by positioning it as the real-field twin of the analytic oracles, and it states the degradation condition ('degrades to {ok:false, ...} when no openEMS venv resolves'), which helps an agent decide whether to call it. It does not explicitly say when to avoid it or name a better alternative if openEMS is unavailable, but the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools